-
Bug
-
Resolution: Fixed
-
Minor
-
None
The pipeline stage view is not showing up after I switched the git repo from using gitLab to gitHub.
[JENKINS-42895] Pipeline stage view is not showing the stages visually
HI,
I have the same problem here.
Config : Jenkins ver. 2.32.3 TLS + Windows Server 2012R2 + JDK 1.8 +
Pipeline: Stage View Plugin Pipeline Stage View Plugin. |
2.6 |
Pipeline: Job Defines a new job type for pipelines and provides their generic user interface. |
2.10 |
JavaScript GUI Lib: Handlebars bundle plugin JavaScript GUI Lib: Handlebars bundle plugin. |
1.1.1 |
JavaScript GUI Lib: Moment.js bundle plugin JavaScript GUI Lib: Moment.js bundle plugin. |
1.1.1 |
Pipeline: REST API Plugin Provides a REST API to access pipeline and pipeline run data. |
2.6 |
Error message in Chrome (ressent version) :
GET http://jenkins-hcis-main.agfahealthcare.com/job/HICU/view/All/job/HICU_RELEASE_0804_core_RELEASE/job/trunk/wfapi/runs?fullStages=true&_=1490277536624 500 (Server Error)
send @ jquery2.js:998
ajax @ jquery2.js:998
exports.execAsyncGET @ stageview.js:3866
exports.getJobRuns @ stageview.js:3001
exports.listen @ stageview.js:2773
exports.getModelData @ stageview.js:3208
(anonymous) @ stageview.js:3703
(anonymous) @ stageview.js:2517
each @ jquery2.js:996
each @ jquery2.js:996
exports.forEachElement @ stageview.js:2516
exports.applyControllers @ stageview.js:3687
(anonymous) @ stageview.js:3802
j @ jquery2.js:996
fireWith @ jquery2.js:996
ready @ jquery2.js:996
I @ jquery2.js:996
Code of Pipeline :
// #!groovy import hudson.scm.subversion.CheckoutUpdater node('WIEN&&ALM_MANAGED') { timestamps { def mvnHome = tool 'Maven 3.3.x' def jdkHome = tool 'JDK 1.8 Orbis 64 bits' def mailingList = emailextrecipients([[$class: 'CulpritsRecipientProvider'], [$class: 'DevelopersRecipientProvider'], [$class: 'RequesterRecipientProvider']]) def extendMailingList = ", amon.bhatia@agfa.com" def pom84File = 'pom.xml' def pom85File = 'pom85.xml' def pomFile def workspace = env.JOB_NAME.replace('branches%2F', '') env.WORKSPACE = "D:\\DEV\\CI\\WS\\${workspace}" env.JAVA_HOME = "${jdkHome}" ws(env.WORKSPACE) { try { if (env.JOB_NAME =~ '0804') { pomFile = pom84File } else if (env.JOB_NAME =~ '0805') { pomFile = pom85File } else { throw new Exception("Define an ORBIS Solution (0804 or 0805) in the job name") } echo "Building ${env.JOB_NAME} with ${env.BRANCH_NAME} and ${pomFile} using ${env.WORKSPACE}" if (env.JOB_NAME =~ 'INTEGRATION') { integrate(mvnHome, pomFile) } else if (env.JOB_NAME =~ 'TEST') { test(mvnHome, pomFile) } else if (env.JOB_NAME =~ 'QUALITY') { analyse(mvnHome, pomFile) } else if (env.JOB_NAME =~ 'SNAPSHOT') { snapshot(mvnHome, pomFile) } else if (env.JOB_NAME =~ 'RELEASE' && env.BRANCH_NAME != 'trunk') { release(mvnHome, pomFile) } } catch (any) { currentBuild.result = 'FAILURE' throw any //rethrow exception to prevent the build from proceeding } finally { // wipe workspace step([$class: 'WsCleanup', cleanWhenFailure: false]) echo "Sending emails to ${mailingList}${extendMailingList}" step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: mailingList + extendMailingList, sendToIndividuals: true]) } } } } // return the artifact version of a pom file def getPomVersion(pomFile) { def matcher = pomFile =~ '<version>(.+)</version>' matcher ? matcher[0][1] : null } // get build artifacts and return a list of their hyperlinks @NonCPS def getArtifactsAsList(artifacts) { def artifactList = "" if(artifacts != null && artifacts.size() > 0) { artifacts.each() { f -> artifactList += "* ${f}\n" } } artifactList += "\nDownload: ${env.BUILD_URL}artifact/\n" return artifactList } // check out stage: scm is defined in multibranch pipeline configuration void checkOut(pomFile) { stage('Checkout') { scm.setWorkspaceUpdater(new CheckoutUpdater()) checkout scm def v = getPomVersion(readFile(pomFile)) if (v) { echo "Version ${v}" } } } // update stage: update versions in pom file void update(mvnHome, pomFile) { stage('Update') { bat "${mvnHome}\\bin\\mvn -f ${pomFile} versions:update-parent versions:update-properties -B" } } // checkin stage: if some dependency was updated void checkIn(mvnHome, pomFile) { stage('Checkin') { def pomFileMainBackup = pomFile + '.versionsBackup' def pomFileModulesBackup = 'modules\\' + pomFileMainBackup if (fileExists (pomFileMainBackup) || fileExists (pomFileModulesBackup)) { echo "${pomFileMainBackup} exists: " + fileExists (pomFileMainBackup) echo "${pomFileModulesBackup} exists: " + fileExists (pomFileModulesBackup) def message = '"[versions-maven-plugin] update parent and/or properties version to latest release"' bat "${mvnHome}\\bin\\mvn -f ${pomFile} -Pxml-format xml-format:xml-format -B" bat "${mvnHome}\\bin\\mvn -f ${pomFile} versions:commit scm:checkin -Dmessage=${message} -B" } else { echo "No changes detected, skip checkin" } } } // build stage: package project void build(mvnHome, pomFile) { checkOut(pomFile) update(mvnHome, pomFile) stage('Build') { bat "${mvnHome}\\bin\\mvn -f ${pomFile} clean package -B" } checkIn(mvnHome, pomFile) } // archive stage: archive artifacts on jenkins void archive(pomFile) { stage('Archive') { archiveArtifacts allowEmptyArchive: true, artifacts: '**/target/*.jar' , excludes: null, fingerprint: true, onlyIfSuccessful: true } } // test pipeline void test(mvnHome, pomFile) { build(mvnHome, pomFile) stage('Test') { bat "${mvnHome}\\bin\\mvn -f ${pomFile} test -B -DskipTransactionalTests=false -Dtest.log4jlevel=DEBUG -Dmaven.test.failure.ignore=true -DdownloadSources=false -DdownloadJavadocs=false" junit healthScaleFactor: 5.0, allowEmptyResults: true, testDataPublishers: [[$class: 'ClaimTestDataPublisher']], testResults: '**/target/surefire-reports/*.xml' } } // analyse pipeline void analyse(mvnHome, pomFile) { test(mvnHome, pomFile) stage('Analysis') { withSonarQubeEnv('sonar-hcis-vie-test') { bat "${mvnHome}\\bin\\mvn -f ${pomFile} sonar:sonar -Psonar -Dsonar.branch=${env.BRANCH_NAME} -Dsonar.scm.provider=svn" } } } // integration pipeline void integrate(mvnHome, pomFile) { build(mvnHome, pomFile) stage('Integration') { bat "${mvnHome}\\bin\\mvn -f ${pomFile} install -B -Dmaven.test.failure.ignore=true -DdownloadSources=false -DdownloadJavadocs=false" } } // snapshot pipeline void snapshot(mvnHome, pomFile) { build(mvnHome, pomFile) def version = getPomVersion(readFile(pomFile)) stage('Snapshot') { bat "${mvnHome}\\bin\\mvn -f ${pomFile} deploy -B -Porbis-dev" } currentBuild.description = version } // release pipeline void release(mvnHome, pomFile) { build(mvnHome, pomFile) def version = getPomVersion(readFile(pomFile)).replace('-SNAPSHOT', '') archive(pomFile) stage('Release') { bat "${mvnHome}\\bin\\mvn -f ${pomFile} -DdownloadSources=false -DdownloadJavadocs=false -Dmaven.test.failure.ignore=true release:prepare release:perform orbiscomponent:reset-start-revision -B -Porbis-dev" } currentBuild.description = version }
Ran into this issue as well,
Jenkins ver. 2.52, CentOS 7.3.1611, OpenJDK 1.8.0_121
The GET for https://jenkins.fqdn/job/.../wfapi/runs?fullStages=true&_=1490691857430 fails with a 500 error and the following stack trace;
java.lang.IllegalStateException: Hit a BlockStartNode with no record of the start! at org.jenkinsci.plugins.workflow.graphanalysis.ForkScanner.hitParallelStart(ForkScanner.java:554) at org.jenkinsci.plugins.workflow.graphanalysis.ForkScanner.next(ForkScanner.java:584) at org.jenkinsci.plugins.workflow.graphanalysis.AbstractFlowScanner.next(AbstractFlowScanner.java:212) at org.jenkinsci.plugins.workflow.graphanalysis.ForkScanner.next(ForkScanner.java:566) at org.jenkinsci.plugins.workflow.graphanalysis.ForkScanner.visitSimpleChunks(ForkScanner.java:764) at org.jenkinsci.plugins.workflow.graphanalysis.ForkScanner.visitSimpleChunks(ForkScanner.java:635) at com.cloudbees.workflow.rest.external.RunExt.createNew(RunExt.java:318) at com.cloudbees.workflow.rest.external.RunExt.create(RunExt.java:306) at com.cloudbees.workflow.rest.external.JobExt.create(JobExt.java:131) at com.cloudbees.workflow.rest.endpoints.JobAPI.doRuns(JobAPI.java:72) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:343) Caused: java.lang.reflect.InvocationTargetException at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:347) at com.cloudbees.workflow.util.ServeJson$Processor.invoke(ServeJson.java:30) Caused: java.lang.RuntimeException: Unexpected exception while serving JSON at com.cloudbees.workflow.util.ServeJson$Processor.invoke(ServeJson.java:34) at org.kohsuke.stapler.PreInvokeInterceptedFunction.invoke(PreInvokeInterceptedFunction.java:26) ...
I discovered a way to replicate this as well, just run the following pipeline and this will break;
// Works stage('Stage A') { echo "A" } // Works stage('Stage B') { parallel a: { echo "B.A" }, b: { echo "B.B" } } // Breaks stage('Stage C') { def steps = [:] // Empty map parallel steps }
svanoort Do you have trouble reproduce it? The stage view is gone completely on the server that I have. It shows up occasionally(rarely though), but most of time, it is invisible. I have more than one build items setup and I cannot see the stage view visually in any of them. But I am pretty sure it was working fine when I set it up initially.
jhuangjenkins I have a fix now in review now – Alexander's reproduction case provided the key to this one, plus a test suite added in the last set of workflow-api revisions.
We should have the fix in release as soon as review passes - it will require installing an updated workflow-api plugin.
Thanks!
Impacted users can also build and install the workflow-api plugin from the PR here until it is fully released – https://github.com/jenkinsci/workflow-api-plugin/pull/34
Code changed in jenkins
User: Sam Van Oort
Path:
src/main/java/org/jenkinsci/plugins/workflow/graphanalysis/ForkScanner.java
src/test/java/org/jenkinsci/plugins/workflow/graphanalysis/ForkScannerTest.java
http://jenkins-ci.org/commit/workflow-api-plugin/08e75325385ddd5df825b59d8a8cc1dbf7e95f05
Log:
Merge pull request #34 from svanoort/fix-issue-with-zero-branch-parallels-JENKINS-42895
Fix a ForkScanner sanity check failing with a specific case of zero-branch parallels JENKINS-42895
Compare: https://github.com/jenkinsci/workflow-api-plugin/compare/b340047259c0...08e75325385d
The issue is purely with use of parallel steps where they contain 0 branches.
This is fixed with workflow-api 2.13, now released – please update your masters when this hits the update center in a few hours, and it should be good to go.
Thanks!
svanoort Thank you for fixing the issue. Where is this workflow-api plug in? I do not see that I have that installed on my Jenkins server instance. Which plugin should I install or update to fix this?
jhuangjenkins It will show up as "Pipeline API plugin" in the update center – workflow-api is the plugin artifact name.
svanoort I could not find :"Pipeline API plugin" showing on my Jenkins instance . which plug-in exactly Do I have to upgrade? Can you give me the plugin name? What do you mean "update your master"? I do have a window's master and slave.
Hi jhuangjenkins, do you have some more specific information to reproduce this in a small case? Specifically a pipeline script that will demonstrate the issue.