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

git plugin 2.5.1 breaks multibranch pipeline if using github source control

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved (View Workflow)
    • Priority: Blocker
    • Resolution: Fixed
    • Component/s: git-plugin
    • Labels:
      None
    • Environment:
      Jenkins 1.651.3, ubuntu 14.04, Oracle Java 7
    • Similar Issues:

      Description

      Once I updated to 2.5.1, I couldn't index the branches anymore in my pipeline projects which use github as their source control rather than git. Going back to 2.5.0 makes it work again. It also works if I use the "git" section instead of the "github" section for source control.

      The exception in the log is

      Executor threw an exception
      java.lang.AbstractMethodError: jenkins.plugins.git.AbstractGitSCMSource.getExtensions()Ljava/util/List;
      	at jenkins.plugins.git.AbstractGitSCMSource.build(AbstractGitSCMSource.java:305)
      	at jenkins.scm.api.SCMSource.build(SCMSource.java:283)
      	at jenkins.branch.MultiBranchProject.newBranch(MultiBranchProject.java:267)
      	at jenkins.branch.MultiBranchProject.access$000(MultiBranchProject.java:82)
      	at jenkins.branch.MultiBranchProject$1.observe(MultiBranchProject.java:297)
      	at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.doRetrieve(GitHubSCMSource.java:285)
      	at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.retrieve(GitHubSCMSource.java:256)
      	at jenkins.scm.api.SCMSource.fetch(SCMSource.java:146)
      	at jenkins.branch.MultiBranchProject.computeChildren(MultiBranchProject.java:294)
      	at com.cloudbees.hudson.plugins.folder.computed.ComputedFolder.updateChildren(ComputedFolder.java:157)
      	at com.cloudbees.hudson.plugins.folder.computed.FolderComputation.run(FolderComputation.java:122)
      	at hudson.model.ResourceController.execute(ResourceController.java:98)
      	at hudson.model.Executor.run(Executor.java:410)
      

        Attachments

          Issue Links

            Activity

            vladdu Vlad Dumitrescu created issue -
            Hide
            markewaite Mark Waite added a comment - - edited

            Thanks for reporting the problem. Can you provide more details on your system configuration? A support bundle would be ideal, since it provides lots of information in a single package that is easy to collect and easy to upload?

            My reading of that exception in the JDK 7 javadoc shows

            Thrown when an application tries to call an abstract method. Normally, this error is caught by the compiler; this error can only occur at run time if the definition of some class has incompatibly changed since the currently executing method was last compiled

            . I think that must mean that I inadvertently changed a method signature of a method in a class that extends an Abstract class, or I changed an Abstract method definition.

            I'm especially perplexed why I didn't see the problem in my testing before release, since I tested with JDK 8 + Jenkins 1.651.3 + Debian and I tested with JDK 7 + Jenkins 1.609.3 + Debian.

            After installing the new version of the git plugin, did you restart your Jenkins instance?

            There is a change/addition from Hiroyuki Wada in AbstractGitSCMSource to add many more git options to the multi-branch plugin and the literate plugin (and anything else that uses the SCMSource interface). That change, and its successors 1, 2, 3, and the merge 4 (add tests, refine the code, etc.) worked well in my tests.

            Are any of your pipeline plugins out of date?

            Any other areas which you think might have relevant differences?

            Show
            markewaite Mark Waite added a comment - - edited Thanks for reporting the problem. Can you provide more details on your system configuration? A support bundle would be ideal, since it provides lots of information in a single package that is easy to collect and easy to upload? My reading of that exception in the JDK 7 javadoc shows Thrown when an application tries to call an abstract method. Normally, this error is caught by the compiler; this error can only occur at run time if the definition of some class has incompatibly changed since the currently executing method was last compiled . I think that must mean that I inadvertently changed a method signature of a method in a class that extends an Abstract class, or I changed an Abstract method definition. I'm especially perplexed why I didn't see the problem in my testing before release, since I tested with JDK 8 + Jenkins 1.651.3 + Debian and I tested with JDK 7 + Jenkins 1.609.3 + Debian. After installing the new version of the git plugin, did you restart your Jenkins instance? There is a change/addition from Hiroyuki Wada in AbstractGitSCMSource to add many more git options to the multi-branch plugin and the literate plugin (and anything else that uses the SCMSource interface). That change, and its successors 1 , 2 , 3 , and the merge 4 (add tests, refine the code, etc.) worked well in my tests. Are any of your pipeline plugins out of date? Any other areas which you think might have relevant differences?
            vladdu Vlad Dumitrescu made changes -
            Field Original Value New Value
            Attachment support_2016-07-04_17.46.31.zip [ 33206 ]
            Hide
            vladdu Vlad Dumitrescu added a comment - - edited

            I always restart after instaling/uninstalling plugins.
            I have all plugins updated to the latest available.

            support_2016-07-04_17.46.31.zip
            This is with 2.5.0, do you get better information if I install 2.5.1, let it fail and then gather the bundle?

            Show
            vladdu Vlad Dumitrescu added a comment - - edited I always restart after instaling/uninstalling plugins. I have all plugins updated to the latest available. support_2016-07-04_17.46.31.zip This is with 2.5.0, do you get better information if I install 2.5.1, let it fail and then gather the bundle?
            Hide
            markewaite Mark Waite added a comment -

            Thanks for the support bundle. The information you've provided is great. No need to show the failure (at least not yet). I need to see if I can duplicate the failure.

            Is the failing job type a "Freestyle multi-branch project", a "Maven multi-branch project", a "Multi-configuration multi-branch project", a "Multibranch Pipeline", or something completely different?

            If you're willing, can you upload the config.xml file (job definition file) from the job which is failing? You may need to obscure substitute sensitive information (like hostnames) before you upload.

            Show
            markewaite Mark Waite added a comment - Thanks for the support bundle. The information you've provided is great. No need to show the failure (at least not yet). I need to see if I can duplicate the failure. Is the failing job type a "Freestyle multi-branch project", a "Maven multi-branch project", a "Multi-configuration multi-branch project", a "Multibranch Pipeline", or something completely different? If you're willing, can you upload the config.xml file (job definition file) from the job which is failing? You may need to obscure substitute sensitive information (like hostnames) before you upload.
            Hide
            vladdu Vlad Dumitrescu added a comment -

            It's a multibranch pipeline. A regular pipeline works, but there I get to configure the git repository URL myself. The config.xml is below, it's at default values except for the repository, as I deleted the old job.

            <?xml version='1.0' encoding='UTF-8'?>
            <org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject plugin="workflow-multibranch@2.8">
              <actions/>
              <description></description>
              <properties/>
              <views>
                <hudson.model.AllView>
                  <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../../.."/>
                  <name>All</name>
                  <filterExecutors>false</filterExecutors>
                  <filterQueue>false</filterQueue>
                  <properties class="hudson.model.View$PropertyList"/>
                </hudson.model.AllView>
              </views>
              <viewsTabBar class="hudson.views.DefaultViewsTabBar"/>
              <healthMetrics>
                <com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric plugin="cloudbees-folder@5.12"/>
              </healthMetrics>
              <icon class="org.jenkinsci.plugins.orgfolder.github.GitHubRepoIcon" plugin="github-organization-folder@1.3"/>
              <orphanedItemStrategy class="com.cloudbees.hudson.plugins.folder.computed.DefaultOrphanedItemStrategy" plugin="cloudbees-folder@5.12">
                <pruneDeadBranches>true</pruneDeadBranches>
                <daysToKeep>45</daysToKeep>
                <numToKeep>100</numToKeep>
              </orphanedItemStrategy>
              <triggers>
                <com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger plugin="cloudbees-folder@5.12">
                  <spec>H * * * *</spec>
                  <interval>3600000</interval>
                </com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger>
              </triggers>
              <sources class="jenkins.branch.MultiBranchProject$BranchSourceList" plugin="branch-api@1.10">
                <data>
                  <jenkins.branch.BranchSource>
                    <source class="org.jenkinsci.plugins.github_branch_source.GitHubSCMSource" plugin="github-branch-source@1.7">
                      <id>cfc000cc-b0fd-4329-844e-cf215d846fbe</id>
                      <checkoutCredentialsId>SAME</checkoutCredentialsId>
                      <scanCredentialsId>...</scanCredentialsId>
                      <repoOwner>vladdu</repoOwner>
                      <repository>erlide_eclipse</repository>
                      <includes>*</includes>
                      <excludes></excludes>
                    </source>
                    <strategy class="jenkins.branch.DefaultBranchPropertyStrategy">
                      <properties class="empty-list"/>
                    </strategy>
                  </jenkins.branch.BranchSource>
                </data>
                <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
              </sources>
              <factory class="org.jenkinsci.plugins.workflow.multibranch.WorkflowBranchProjectFactory">
                <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
              </factory>
            </org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject>
            
            
            Show
            vladdu Vlad Dumitrescu added a comment - It's a multibranch pipeline. A regular pipeline works, but there I get to configure the git repository URL myself. The config.xml is below, it's at default values except for the repository, as I deleted the old job. <?xml version='1.0' encoding='UTF-8'?> <org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject plugin="workflow-multibranch@2.8"> <actions/> <description></description> <properties/> <views> <hudson.model.AllView> <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../../.."/> <name>All</name> <filterExecutors>false</filterExecutors> <filterQueue>false</filterQueue> <properties class="hudson.model.View$PropertyList"/> </hudson.model.AllView> </views> <viewsTabBar class="hudson.views.DefaultViewsTabBar"/> <healthMetrics> <com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric plugin="cloudbees-folder@5.12"/> </healthMetrics> <icon class="org.jenkinsci.plugins.orgfolder.github.GitHubRepoIcon" plugin="github-organization-folder@1.3"/> <orphanedItemStrategy class="com.cloudbees.hudson.plugins.folder.computed.DefaultOrphanedItemStrategy" plugin="cloudbees-folder@5.12"> <pruneDeadBranches>true</pruneDeadBranches> <daysToKeep>45</daysToKeep> <numToKeep>100</numToKeep> </orphanedItemStrategy> <triggers> <com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger plugin="cloudbees-folder@5.12"> <spec>H * * * *</spec> <interval>3600000</interval> </com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger> </triggers> <sources class="jenkins.branch.MultiBranchProject$BranchSourceList" plugin="branch-api@1.10"> <data> <jenkins.branch.BranchSource> <source class="org.jenkinsci.plugins.github_branch_source.GitHubSCMSource" plugin="github-branch-source@1.7"> <id>cfc000cc-b0fd-4329-844e-cf215d846fbe</id> <checkoutCredentialsId>SAME</checkoutCredentialsId> <scanCredentialsId>...</scanCredentialsId> <repoOwner>vladdu</repoOwner> <repository>erlide_eclipse</repository> <includes>*</includes> <excludes></excludes> </source> <strategy class="jenkins.branch.DefaultBranchPropertyStrategy"> <properties class="empty-list"/> </strategy> </jenkins.branch.BranchSource> </data> <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/> </sources> <factory class="org.jenkinsci.plugins.workflow.multibranch.WorkflowBranchProjectFactory"> <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/> </factory> </org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject>
            Hide
            markewaite Mark Waite added a comment - - edited

            I see from comparing your job definition and my initial test job definition that you're using the github plugin to provide source control, rather than the git plugin. Is that intentional?

            Is there a particular benefit you gain from using the github plugin for source control rather than the git plugin?

            When I switch to use github to provide source control rather than git, I can see the same error. Thanks very much for your patience reporting it. Unfortunately, I don't know how to resolve it. I'll need to spend more time researching the interaction between the git plugin, the github plugin, and the multi-branch pipeline job type.

            Jul 04, 2016 12:45:12 PM hudson.model.Executor finish1
            SEVERE: Executor threw an exception
            java.lang.AbstractMethodError: jenkins.plugins.git.AbstractGitSCMSource.getExtensions()Ljava/util/List;
                    at jenkins.plugins.git.AbstractGitSCMSource.build(AbstractGitSCMSource.java:305)
                    at jenkins.scm.api.SCMSource.build(SCMSource.java:283)
                    at jenkins.branch.MultiBranchProject.newBranch(MultiBranchProject.java:267)
                    at jenkins.branch.MultiBranchProject.access$000(MultiBranchProject.java:82)
                    at jenkins.branch.MultiBranchProject$1.observe(MultiBranchProject.java:297)
                    at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.doRetrieve(GitHubSCMSource.java:285)
                    at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.retrieve(GitHubSCMSource.java:256)
                    at jenkins.scm.api.SCMSource.fetch(SCMSource.java:146)
                    at jenkins.branch.MultiBranchProject.computeChildren(MultiBranchProject.java:294)
                    at com.cloudbees.hudson.plugins.folder.computed.ComputedFolder.updateChildren(ComputedFolder.java:157)
                    at com.cloudbees.hudson.plugins.folder.computed.FolderComputation.run(FolderComputation.java:122)
                    at hudson.model.ResourceController.execute(ResourceController.java:98)
                    at hudson.model.Executor.run(Executor.java:410)
            
            Show
            markewaite Mark Waite added a comment - - edited I see from comparing your job definition and my initial test job definition that you're using the github plugin to provide source control, rather than the git plugin. Is that intentional? Is there a particular benefit you gain from using the github plugin for source control rather than the git plugin? When I switch to use github to provide source control rather than git, I can see the same error. Thanks very much for your patience reporting it. Unfortunately, I don't know how to resolve it. I'll need to spend more time researching the interaction between the git plugin, the github plugin, and the multi-branch pipeline job type. Jul 04, 2016 12:45:12 PM hudson.model.Executor finish1 SEVERE: Executor threw an exception java.lang.AbstractMethodError: jenkins.plugins.git.AbstractGitSCMSource.getExtensions()Ljava/util/List; at jenkins.plugins.git.AbstractGitSCMSource.build(AbstractGitSCMSource.java:305) at jenkins.scm.api.SCMSource.build(SCMSource.java:283) at jenkins.branch.MultiBranchProject.newBranch(MultiBranchProject.java:267) at jenkins.branch.MultiBranchProject.access$000(MultiBranchProject.java:82) at jenkins.branch.MultiBranchProject$1.observe(MultiBranchProject.java:297) at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.doRetrieve(GitHubSCMSource.java:285) at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.retrieve(GitHubSCMSource.java:256) at jenkins.scm.api.SCMSource.fetch(SCMSource.java:146) at jenkins.branch.MultiBranchProject.computeChildren(MultiBranchProject.java:294) at com.cloudbees.hudson.plugins.folder.computed.ComputedFolder.updateChildren(ComputedFolder.java:157) at com.cloudbees.hudson.plugins.folder.computed.FolderComputation.run(FolderComputation.java:122) at hudson.model.ResourceController.execute(ResourceController.java:98) at hudson.model.Executor.run(Executor.java:410)
            markewaite Mark Waite made changes -
            Summary git plugin 2.5.1 breaks multibranch pipeline git plugin 2.5.1 breaks multibranch pipeline if using github source control
            markewaite Mark Waite made changes -
            Description Once I updated to 2.5.1, I couldn't index the branches anymore in my pipeline projects. Going back to 2.5.0 makes it work again.

            The exception in the log is

            {noformat}
            Executor threw an exception
            java.lang.AbstractMethodError: jenkins.plugins.git.AbstractGitSCMSource.getExtensions()Ljava/util/List;
            at jenkins.plugins.git.AbstractGitSCMSource.build(AbstractGitSCMSource.java:305)
            at jenkins.scm.api.SCMSource.build(SCMSource.java:283)
            at jenkins.branch.MultiBranchProject.newBranch(MultiBranchProject.java:267)
            at jenkins.branch.MultiBranchProject.access$000(MultiBranchProject.java:82)
            at jenkins.branch.MultiBranchProject$1.observe(MultiBranchProject.java:297)
            at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.doRetrieve(GitHubSCMSource.java:285)
            at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.retrieve(GitHubSCMSource.java:256)
            at jenkins.scm.api.SCMSource.fetch(SCMSource.java:146)
            at jenkins.branch.MultiBranchProject.computeChildren(MultiBranchProject.java:294)
            at com.cloudbees.hudson.plugins.folder.computed.ComputedFolder.updateChildren(ComputedFolder.java:157)
            at com.cloudbees.hudson.plugins.folder.computed.FolderComputation.run(FolderComputation.java:122)
            at hudson.model.ResourceController.execute(ResourceController.java:98)
            at hudson.model.Executor.run(Executor.java:410)
            {noformat}
            Once I updated to 2.5.1, I couldn't index the branches anymore in my pipeline projects which use github as their source control rather than git. Going back to 2.5.0 makes it work again. It also works if I use the "git" section instead of the "github" section for source control.

            The exception in the log is

            {noformat}
            Executor threw an exception
            java.lang.AbstractMethodError: jenkins.plugins.git.AbstractGitSCMSource.getExtensions()Ljava/util/List;
            at jenkins.plugins.git.AbstractGitSCMSource.build(AbstractGitSCMSource.java:305)
            at jenkins.scm.api.SCMSource.build(SCMSource.java:283)
            at jenkins.branch.MultiBranchProject.newBranch(MultiBranchProject.java:267)
            at jenkins.branch.MultiBranchProject.access$000(MultiBranchProject.java:82)
            at jenkins.branch.MultiBranchProject$1.observe(MultiBranchProject.java:297)
            at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.doRetrieve(GitHubSCMSource.java:285)
            at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.retrieve(GitHubSCMSource.java:256)
            at jenkins.scm.api.SCMSource.fetch(SCMSource.java:146)
            at jenkins.branch.MultiBranchProject.computeChildren(MultiBranchProject.java:294)
            at com.cloudbees.hudson.plugins.folder.computed.ComputedFolder.updateChildren(ComputedFolder.java:157)
            at com.cloudbees.hudson.plugins.folder.computed.FolderComputation.run(FolderComputation.java:122)
            at hudson.model.ResourceController.execute(ResourceController.java:98)
            at hudson.model.Executor.run(Executor.java:410)
            {noformat}
            Hide
            oleg_nenashev Oleg Nenashev added a comment - - edited

            I see the issue.

            GitHubSCMSource implements AbstractGitSCMSource, but does not implement getExtensions(), List<GitSCMExtension> getExtensions(). This method has been implemented in https://github.com/jenkinsci/git-plugin/pull/350 in a backward-incompatible way. It was released as git-2.5.1

            Working on the fix

            Show
            oleg_nenashev Oleg Nenashev added a comment - - edited I see the issue. GitHubSCMSource implements AbstractGitSCMSource, but does not implement getExtensions(), List<GitSCMExtension> getExtensions(). This method has been implemented in https://github.com/jenkinsci/git-plugin/pull/350 in a backward-incompatible way. It was released as git-2.5.1 Working on the fix
            Hide
            oleg_nenashev Oleg Nenashev added a comment - - edited

            Mark Waite Are you fine if I take it?

            Show
            oleg_nenashev Oleg Nenashev added a comment - - edited Mark Waite Are you fine if I take it?
            oleg_nenashev Oleg Nenashev made changes -
            Priority Major [ 3 ] Blocker [ 1 ]
            Hide
            markewaite Mark Waite added a comment - - edited

            Yes, absolutely. My apologies that I didn't realize PR350 was backwards incompatible. I missed testing the case with github as source control, and would likely have missed it writing that to the log file.

            I assume that means that AbstractGitSCMSource is the definition of the API as used by any other plugin which provides an implementation of AbstractGitSCMSource. My apologies that I didn't consider that case!

            Show
            markewaite Mark Waite added a comment - - edited Yes, absolutely. My apologies that I didn't realize PR350 was backwards incompatible. I missed testing the case with github as source control, and would likely have missed it writing that to the log file. I assume that means that AbstractGitSCMSource is the definition of the API as used by any other plugin which provides an implementation of AbstractGitSCMSource. My apologies that I didn't consider that case!
            oleg_nenashev Oleg Nenashev made changes -
            Assignee Mark Waite [ markewaite ] Oleg Nenashev [ oleg_nenashev ]
            oleg_nenashev Oleg Nenashev made changes -
            Status Open [ 1 ] In Progress [ 3 ]
            Hide
            markewaite Mark Waite added a comment -

            Oleg Nenashev I'm willing to revert the entire change from PR350 and release a new git plugin 2.5.2 rather than break compatibility for downstream consumers of the AbstractGitSCMSource interface.

            Show
            markewaite Mark Waite added a comment - Oleg Nenashev I'm willing to revert the entire change from PR350 and release a new git plugin 2.5.2 rather than break compatibility for downstream consumers of the AbstractGitSCMSource interface.
            Hide
            oleg_nenashev Oleg Nenashev added a comment -

            Mark Waite I'm working on a more graceful PR, but it's up to you

            Show
            oleg_nenashev Oleg Nenashev added a comment - Mark Waite I'm working on a more graceful PR, but it's up to you
            Hide
            oleg_nenashev Oleg Nenashev added a comment -

            In my PR there won't be compatibility breakage. To be submitted in 20 minutes

            Show
            oleg_nenashev Oleg Nenashev added a comment - In my PR there won't be compatibility breakage. To be submitted in 20 minutes
            Hide
            vladdu Vlad Dumitrescu added a comment -

            Mark Waite Thanks for updating the details about github/git source. I believe it's now rolling.

            Show
            vladdu Vlad Dumitrescu added a comment - Mark Waite Thanks for updating the details about github/git source. I believe it's now rolling.
            Show
            oleg_nenashev Oleg Nenashev added a comment - https://github.com/jenkinsci/git-plugin/pull/420
            Hide
            oleg_nenashev Oleg Nenashev added a comment -

            Mark Waite So the PR is under review

            Show
            oleg_nenashev Oleg Nenashev added a comment - Mark Waite So the PR is under review
            Hide
            markewaite Mark Waite added a comment -

            Oleg Nenashev yes, I've been running tests on the change for the last few hours using my Docker instance and multiple slaves. I specifically checked this problem is fixed and have been doing additional exploratory testing. I intend to release git plugin 2.5.2 before end of the day today so that it will be visible in the update center before U.S. users return from their independence day holiday tomorrow.

            Show
            markewaite Mark Waite added a comment - Oleg Nenashev yes, I've been running tests on the change for the last few hours using my Docker instance and multiple slaves. I specifically checked this problem is fixed and have been doing additional exploratory testing. I intend to release git plugin 2.5.2 before end of the day today so that it will be visible in the update center before U.S. users return from their independence day holiday tomorrow.
            Hide
            markewaite Mark Waite added a comment -

            Fix in git plugin 2.5.2 released 4 Jul 2016.

            Show
            markewaite Mark Waite added a comment - Fix in git plugin 2.5.2 released 4 Jul 2016.
            markewaite Mark Waite made changes -
            Status In Progress [ 3 ] Resolved [ 5 ]
            Resolution Fixed [ 1 ]
            Hide
            vladdu Vlad Dumitrescu added a comment -

            Excellent, thank you very much!

            Show
            vladdu Vlad Dumitrescu added a comment - Excellent, thank you very much!
            Hide
            leandro_freitas_softdevelop Leandro Kersting de Freitas added a comment -

            \o/ great job. Congratulations.

            Show
            leandro_freitas_softdevelop Leandro Kersting de Freitas added a comment - \o/ great job. Congratulations.
            jglick Jesse Glick made changes -
            Link This issue relates to JENKINS-31924 [ JENKINS-31924 ]
            rtyler R. Tyler Croy made changes -
            Workflow JNJira [ 173126 ] JNJira + In-Review [ 199399 ]

              People

              • Assignee:
                oleg_nenashev Oleg Nenashev
                Reporter:
                vladdu Vlad Dumitrescu
              • Votes:
                2 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: