-
Bug
-
Resolution: Fixed
-
Critical
-
Jenkins version: 2.121.3
Blue Ocean version: 1.8.2
OS: RHEL7.2
Browser: Google Chrome
-
Powered by SuggestiMate
After updating the Blue ocean to the latest version 1.8.2 released 16 August, Blue Ocean is having issues displaying the status of parallel stages properly.
I have 2 stages in parallel which contains several sequential stage each.
While they are both processing, one of the parallel stages is showing as green (DONE) and the other shown as Processing but not displaying the triggered builds.
You can find my pipeline code below.
pipeline { agent any stages { stage('Pushing 2 Tests') { //failFast true parallel { stage('TE1') { stages { stage('PUSH TE1') { steps { script { //Trigger a job sleep time: 5, unit: 'MINUTES' echo "Test1" } } } stage('Archive Logs') { steps { script { echo "Archive Test1 Logs" } } } stage('Insert Metrics') { steps { script { echo "Insert Test1 Metrics in DB" } } } stage('Compare Metrics') { steps { script { echo "Compare Metrics Test1 vs REF" } } } } } stage('TE2') { stages { stage('PUSH TE2') { steps { script { //Trigger a job sleep time: 5, unit: 'MINUTES' echo "Test2" } } } stage('Archive Logs') { steps { script { echo "Archive Test2 Logs" } } } stage('Insert Metrics') { steps { script { echo "Insert Test2 Metrics in DB" } } } stage('Compare Metrics') { steps { script { echo "Compare Metrics Test2 vs REF" } } } } } } } } }
- duplicates
-
JENKINS-53311 [Blue Ocean] Sequential stages appear to be completed but are still executing
-
- Closed
-
[JENKINS-53129] Parallel sequential stages in Blue Ocean showing wrong status
vivek Yes indeed, when you click on the stage shown as Processing, the steps are not shown.
As for the other processing stage shown wrongly as Passed, its steps are shown and can be selected.
Sometimes when stage is in progress, steps might not appear instantly because it might not yet be running so api serving them for the selected stage still be returning no steps.
Regarding wrong status, olamy nicu it might be api not returning correct status? I think there is existing issue with status of parallel stages, there might be ticket some where or may be its new one.
Sorry vivek, but this is not the case on my side my 2 stages are processing exactly the same jobs that takes 2 hours each, we are not talking about instantly status appearance.
As shown in below screenshots, the processing stage that is showing wrong Passed status (PUSH TE2), is showing the triggered builds properly. As for the stage showing processing status (PUSH TE1), the Triggered Builds section does not exist.
vivek As seen in my previous comment, when clicking on the upper stage it is giving me the details of the Parent stage (Pushing 2 Tests / TE1) instead of the child (PUSH TE1) and when selecting the bottom stage it is giving me the details of the right stage (PUSH TE2) but with wrong status.
vivek, as a summary the expected behavior is to show processing stages as Processing and to be able to access the Triggered Builds upon clicking on the stage.
vivek, in addition currently the Processing stages are not visible on Blue Ocean. They only appear once they are done.
vivek, another case where 2 parallel stages are processing but shown in Blue Ocean in Grey (Pending).
olamy yes related to JENKINS-53311 but with additional problem in my Jira related to "Triggered Builds" Field.
In addition my Jira issue was reported before JENKINS-53311 and contains more examples
Thank you olamy.
When it is expected to have the plugin patch ready in Jenkins ?
olamy the status issue was resolved with your last fix (Blue Ocean 1.8.3)(Jenkins 2.138.1), but the Triggered Builds Section is not appearing when having processing stage.
The Triggered Build section is only appearing when the stage is done.
In addition when having several parallel stages processing at the same time, only 1 of the stages is having the blue circle with the blue dot blinking inside.
Can you please check?
I trigger jobs from inside the stage as shown below code sample.
Noting that the Triggered Builds section was working properly previously before you started allowing in Blue Ocean to display sequential stages inside a parallel one.
It is very important and crucial to see the Triggered Builds within a stage while PROCESSING and not just when the stage is DONE.
stage('Pushing 2 Tests and 2 Debug jobs') { //failFast true when { expression { Push2TEs == 'true' } } parallel { stage('TE1') { stages { stage('PUSH TE1') { options { retry(2) timeout(time: 3, unit: 'HOURS') } steps { script { timestamps { println("${STAGE_BEGIN} PUSH TE1") def TE1build = build job: "TESTING/${TEST_LABEL1}/PAC_PTE/0010.TESTING-Headline", parameters: [ [$class: 'StringParameterValue', name: 'MX_VERSION', value: MX_VERSION], [$class: 'StringParameterValue', name: 'MX_CHANGELIST', value: MX_CHANGELIST], [$class: 'BooleanParameterValue', name: 'Execute_benchmark', value: true], [$class: 'BooleanParameterValue', name: 'Generate_traceability_reports', value: true], [$class: 'StringParameterValue', name: 'SETUPS', value: 'Custom'], [$class: 'StringParameterValue', name: 'Custom_Script_Before', value: '/nfs_qa_pac/pac-pte/jenkins/getEnvProperties.sh'], [$class: 'StringParameterValue', name: 'Custom_Script_After', value: '/nfs_qa_pac/pac-pte/jenkins/restoreEnv.sh'] ], propagate: false LogJobStatus("${TEST_LABEL1}", TE1build.result) currentBuild.result = TE1build.result } } } } stage('Archive Logs') { steps { script { timestamps { println("${STAGE_BEGIN} Archive ${TEST_LABEL1} Logs") //sleep time: 1, unit: 'MINUTES' def archiveLogsTE1 = build job: 'Archiving', parameters: [ [$class: 'StringParameterValue', name: 'BENCH_MARK_NAME', value: TE1_BENCH_MARK_NAME], [$class: 'StringParameterValue', name: 'VERSION', value: MX_VERSION], [$class: 'StringParameterValue', name: 'CHANGELIST', value: MX_CHANGELIST], [$class: 'StringParameterValue', name: 'APP_DIR', value: TE1_APP_DIR], [$class: 'StringParameterValue', name: 'RESULTS_DIR', value: TE1_LOG_DIR], [$class: 'StringParameterValue', name: 'KPI_DIR', value: TE1_WORKSPACE], [$class: 'StringParameterValue', name: 'TPK', value: TPK], [$class: 'StringParameterValue', name: 'JOB_ID', value: JOB_ID], [$class: 'StringParameterValue', name: 'TEST_ID', value: TEST_LABEL1], [$class: 'StringParameterValue', name: 'NODE', value: TE1_NODE] ], propagate: false currentBuild.result = archiveLogsTE1.result LogJobStatus("Archive ${TEST_LABEL1} Logs", archiveLogsTE1.result) println("${STAGE_END} Archive ${TEST_LABEL1} Logs") } } } } } } stage('TE2') { stages { stage('PUSH TE2') { options { retry(2) timeout(time: 3, unit: 'HOURS') } steps { script { timestamps { println("${STAGE_BEGIN} PUSH TE2") def TE2build = build job: "TESTING/${TEST_LABEL2}/PAC_PTE/0010.TESTING-Headline", parameters: [ [$class: 'StringParameterValue', name: 'MX_VERSION', value: MX_VERSION], [$class: 'StringParameterValue', name: 'MX_CHANGELIST', value: MX_CHANGELIST], [$class: 'BooleanParameterValue', name: 'Execute_benchmark', value: true], [$class: 'BooleanParameterValue', name: 'Generate_traceability_reports', value: true], [$class: 'StringParameterValue', name: 'SETUPS', value: 'Custom'], [$class: 'StringParameterValue', name: 'Custom_Script_Before', value: '/nfs_qa_pac/pac-pte/jenkins/getEnvProperties.sh'], [$class: 'StringParameterValue', name: 'Custom_Script_After', value: '/nfs_qa_pac/pac-pte/jenkins/restoreEnv.sh'] ], propagate: false LogJobStatus("PUSH TE2", TE2build.result) currentBuild.result = TE2build.result } } } } stage('Archive Logs') { steps { script { timestamps { println("${STAGE_BEGIN} Archive ${TEST_LABEL2} Logs") //sleep time: 1, unit: 'MINUTES' def archiveLogsTE2 = build job: 'Archiving', parameters: [ [$class: 'StringParameterValue', name: 'BENCH_MARK_NAME', value: TE2_BENCH_MARK_NAME], [$class: 'StringParameterValue', name: 'VERSION', value: MX_VERSION], [$class: 'StringParameterValue', name: 'CHANGELIST', value: MX_CHANGELIST], [$class: 'StringParameterValue', name: 'APP_DIR', value: TE2_APP_DIR], [$class: 'StringParameterValue', name: 'RESULTS_DIR', value: TE2_LOG_DIR], [$class: 'StringParameterValue', name: 'TPK', value: TPK], [$class: 'StringParameterValue', name: 'JOB_ID', value: JOB_ID], [$class: 'StringParameterValue', name: 'TEST_ID', value: TEST_LABEL2], [$class: 'StringParameterValue', name: 'NODE', value: TE2_NODE] ], propagate: false currentBuild.result = archiveLogsTE2.result LogJobStatus("Archive ${TEST_LABEL2} Logs", archiveLogsTE2.result) println("${STAGE_END} Archive ${TEST_LABEL2} Logs") } } } } } } stage('HEAD DEBUG') { stages { stage('PUSH HEAD DEBUG') { options { retry(2) timeout(time: 2, unit: 'HOURS') } steps { script { timestamps { println("${STAGE_BEGIN} PUSH HEAD DEBUG") try { //STREAM_ID='DEBUG230820181643' def pushHeadDebugJob = build job: "TESTING/${STREAM_ID}/PAC_PTE/0010.TESTING-Headline", parameters: [ [$class: 'StringParameterValue', name: 'MX_VERSION', value: MX_VERSION], [$class: 'StringParameterValue', name: 'MX_CHANGELIST', value: MX_CHANGELIST], [$class: 'BooleanParameterValue', name: 'Execute_benchmark', value: false], [$class: 'BooleanParameterValue', name: 'Generate_traceability_reports', value: false], [$class: 'StringParameterValue', name: 'SETUPS', value: 'Custom'], [$class: 'StringParameterValue', name: 'Custom_Script_Before', value: '/nfs_qa_pac/pac-pte/jenkins/getEnvProperties.sh'], [$class: 'StringParameterValue', name: 'Custom_Script_After', value: '/nfs_qa_pac/pac-pte/jenkins/restoreEnv.sh'] ], propagate: false currentBuild.result = pushHeadDebugJob.result } catch (all) { echo 'Pushing Head Debug job Failed' return 0 } println("${STAGE_END} PUSH HEAD DEBUG") } } } } stage('DEPLOY CLIENT HEAD') { steps { script { timestamps { println("${STAGE_BEGIN} Deploying Client HEAD") try { def DeployClient = build job: 'DeployClient', parameters: [ [$class: 'StringParameterValue', name: 'NODE', value: 'pacpte_pte02nt'], [$class: 'StringParameterValue', name: 'PROPERTIES', value: '/nfs_qa_pac/pac-pte/jenkins/env_properties/0010.TESTING-' + STREAM_ID + '-Headline.properties'], [$class: 'StringParameterValue', name: 'CHANGELIST', value: MX_CHANGELIST], [$class: 'StringParameterValue', name: 'OPERATING_SYSTEM', value: OPERATING_SYSTEM], [$class: 'StringParameterValue', name: 'DEBUG_NODE', value: HEAD_DEBUG_NODE], [$class: 'StringParameterValue', name: 'DEBUG_APP_DIR', value: HEAD_DEBUG_APP_DIR] ], propagate: false currentBuild.result = DeployClient.result } catch (all) { echo 'Deploy Head Debug Client Failed' return 0 } println("${STAGE_END} Deploying Client HEAD") } } } } } } } }
olamy, you can find below for sequential Processing stages, Blue Ocean is showing the Triggered Builds section.
olamy, a new bug detected, when the first stage in a sequential parallel pipeline is done, the Processing stages got wrong status and show only 1 stage processing even thought there are 4 stages processing.
ekassis please stop hijacking this issue. You reopen it and changing the description. This is totally wrong! it's a thread in a mailing list. So please open a new issue with correct description.
> the other shown as Processing but not displaying the triggered builds.
You mean when you click them the steps are not shown?
nicu PTAL