Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-55987

Use of when buildingTag does not work in Declarative pipeline

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Open (View Workflow)
    • Priority: Minor
    • Resolution: Unresolved
    • Component/s: pipeline
    • Labels:
      None
    • Environment:
      docker environment
    • Similar Issues:

      Description

      For our project we are using gitlab-ce and Jenkins to build docker images. I'm using a Pipeline Jenkinsfile to build my docker
      I suppose my jenkins job is correctly configured since the build is triggered each time I push a commit or a tag into my gitlab project
       In my pipeline, I have a stage I wish to be called only when a tag is pushed (git push --tag)}}
      I added the following line:
         when

           { buildingTag() }

       

      But every time I push a tag in gitlab, I have the message Stage skipped due to when conditional

      Attached the Jenkinsfile I'm using

      Context

      • Gitlab plugin version: 1.5.11
      • Gitlab CE version: 11.2.0
      • Jenkins version: 2.163
      • Job type: Pipeline (the pipeline plugins are up to date)

      Our Jenkins docker container is based on image jenkins/jenkins:2.163-alpine

      Attached the console output triggered when after the push of a tag using the command:

      git push --tag origin master

       

       

      Is there something special to do to use the when tag or when buildingTag ? It seems to me I have done everything according to the documentation

        Attachments

          Activity

          Hide
          dotconnor Connor Love added a comment -

          Any update on this?

          Show
          dotconnor Connor Love added a comment - Any update on this?
          Hide
          cristianrat cris rat added a comment - - edited

          major blocker for me as well

          Show
          cristianrat cris rat added a comment - - edited major blocker for me as well
          Hide
          raspy Krzysztof Malinowski added a comment -

          Attached log misses the important output of actual cloning so it's impossible to verify, but most times it's because you are not actually building a tag. You need to check out the tag (i.e. by starting build from the Tags tab of a multibranch pipeline) to make those conditions work. It is not enough to just build a commit that happens to have tags applied. Make sure that the Checking out Revision line (not included in attached output) lists a tag, not a branch.

          Show
          raspy Krzysztof Malinowski added a comment - Attached log misses the important output of actual cloning so it's impossible to verify, but most times it's because you are not actually building a tag. You need to check out the tag (i.e. by starting build from the Tags tab of a multibranch pipeline) to make those conditions work. It is not enough to just build a commit that happens to have tags applied. Make sure that the Checking out Revision line (not included in attached output) lists a tag, not a branch.
          Hide
          dtronche Tronche Dominique added a comment - - edited

          Thanks for the update. This bug is really blocking for our team since I cannot use Declarative pipeline in our project due to it

          I have attached a log file with the detail scm part of the jenkins log file. The Checking out Revision indicates we are on a tag, yet the stage is skipped

          I am not using a multibranch pipeline but a simple pipeline project. I did not see any limitation on the documentation on this subject. We are not planning to use multibranch pipelines since this item does not offer the "Build after other projects are built" option and we need it

          Show
          dtronche Tronche Dominique added a comment - - edited Thanks for the update. This bug is really blocking for our team since I cannot use Declarative pipeline in our project due to it I have attached a log file with the detail scm part of the jenkins log file. The Checking out Revision indicates we are on a tag, yet the stage is skipped I am not using a multibranch pipeline but a simple pipeline project. I did not see any limitation on the documentation on this subject. We are not planning to use multibranch pipelines since this item does not offer the "Build after other projects are built" option and we need it
          Hide
          raspy Krzysztof Malinowski added a comment -

          Technically this condition checks for existence of environment variable called TAG_NAME. This is normally contributed by Branch API, for multibranch approach. If you don't use multibranching, you can try to populate TAG_NAME yourself before the condition, or just rework the condition.

          Show
          raspy Krzysztof Malinowski added a comment - Technically this condition  checks for existence of environment variable called TAG_NAME. This is normally contributed by Branch API, for multibranch approach. If you don't use multibranching, you can try to populate TAG_NAME yourself before the condition, or just rework the condition.
          Hide
          dtronche Tronche Dominique added a comment -

          OK now I understand why it does not work but do we agree that this limitation is clearly not documented ?

          I remembered I tried to do it myself but I had quite some trouble implementing it and it was very frustrating when there is supposed to be a function that do it for you.

          Personally I don't really understand why this function, which is probably needed by a lot of people, is restricted to multibranch. Especially since multibranch does not allow project dependency which is a bit one of the main reason Jenkins is used for...

          Thanks for your help anyway

          Show
          dtronche Tronche Dominique added a comment - OK now I understand why it does not work but do we agree that this limitation is clearly not documented ? I remembered I tried to do it myself but I had quite some trouble implementing it and it was very frustrating when there is supposed to be a function that do it for you. Personally I don't really understand why this function, which is probably needed by a lot of people, is restricted to multibranch. Especially since multibranch does not allow project dependency which is a bit one of the main reason Jenkins is used for... Thanks for your help anyway

            People

            Assignee:
            Unassigned Unassigned
            Reporter:
            dtronche Tronche Dominique
            Votes:
            3 Vote for this issue
            Watchers:
            6 Start watching this issue

              Dates

              Created:
              Updated: