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

UI for downstream jobs launched with 'build' step

    XMLWordPrintable

    Details

    • Sprint:
      Blue Ocean 1.1, Blue Ocean 1.2-beta1, Blue Ocean 1.2-beta2, Blue Ocean 1.4 - beta 3, Blue Ocean 1.5 - beta 2
    • Similar Issues:
    • Released As:
      1.14.0

      Description

      Improvement on roadmap

      This improvement is on the Blue Ocean project roadmap. Check the roadmap page for updates.

      Same pipeline as JENKINS-38337

      stage "Stage 1"
      stage ("Trigger jobs") {
          parallel(
              downstream1: {
                  build 'downstream1'
              },
              downstream2: {
                  build 'downstream2'
              }
          )
      }
      

      In the logs, we see things like Starting building: downstream2 #3, however unlike the classic console, this is not a link, so you can't browse to the other build.

       

      Out of scope: 

      When the "don't wait" mode is used, there is no link to the resultant downstream job, so no need to link it back  ( ie build job: 'downer', wait: false)

       

       

        Attachments

          Issue Links

            Activity

            Hide
            zakharovdi Denis Zakharov added a comment -

            It was rollbacked in BO 1.13.2. Can someone reopen it?

            Show
            zakharovdi Denis Zakharov added a comment - It was rollbacked in BO 1.13.2. Can someone reopen it?
            Hide
            sophistifunk Josh McDonald added a comment -

            Pull request to fix the regression (and extra tests) is here: https://github.com/jenkinsci/blueocean-plugin/pull/1933 - give it a few days as most of the reviewers are away from the office right now.

             

            Show
            sophistifunk Josh McDonald added a comment - Pull request to fix the regression (and extra tests) is here: https://github.com/jenkinsci/blueocean-plugin/pull/1933  - give it a few days as most of the reviewers are away from the office right now.  
            Hide
            sophistifunk Josh McDonald added a comment -

            Fixed in fc3e3a9f5cd13f535d88a173499bb929478f5b1f

            Show
            sophistifunk Josh McDonald added a comment - Fixed in fc3e3a9f5cd13f535d88a173499bb929478f5b1f
            Hide
            timethos Tim Huang added a comment -

            Hello, I am on Blue Ocean 1.17.0, and I do not see a link to my downstream jobs. Was there a regression?

             

            Show
            timethos Tim Huang added a comment - Hello, I am on Blue Ocean 1.17.0, and I do not see a link to my downstream jobs. Was there a regression?  
            Hide
            timethos Tim Huang added a comment - - edited

            I have more information on the matter - I was triggering downstream jobs within a `parallel` step (not sure if this has anything to do with it). In an earlier sequential stage, if I trigger another downstream build job, it causes itself and the ones in the parallel steps (that didn't show up before) to show up in their respective "Triggered Jobs" sections.

             

            Below is my groovy script. In the first sequential stage there is a downstream no-op job I made that, when triggered, seems to make the "Triggered Jobs" section show up for the other two downstream jobs that are triggered in the parallel stages further down. Without the no-op job, the "Triggered Jobs" section won't show up for the other two. The formatting of this code won't paste right (missing newlines here and there), so apologies.

            pipeline {
             agent none options {
              // Ideally, PRs build in less than 5
              timeout(time: 15, unit: 'MINUTES')
             } environment {
              CI = 'true'
              AWS_ACCESS_KEY_ID = credentials('aws-access-key-id-test')
              AWS_SECRET_ACCESS_KEY = credentials('aws-secret-access-key-test')
             } stages {
              stage('Abort previous builds on PR') {
               steps {
                // Not sure how this works, but… https://stackoverflow.com/a/52811034
                milestone label: '', ordinal: Integer.parseInt(env.BUILD_ID) - 1
                milestone label: '', ordinal: Integer.parseInt(env.BUILD_ID)
            
                // NOTE: Triggering this no-op job makes all Triggered Builds show up!!!
                build 'Utilities/TriggeringThisInStepsMakesTriggeredBuildsShowUp'
               }
              }  stage('PR tests') {
               failFast false
               parallel {
                stage('Linting & formatting') {
                 agent {
                  node {
                   label 'Node'
                  }
                 }     steps {
                  script {
                   pullRequest.createStatus(status: 'pending',
                    context: 'Format & Syntax (backend)',
                    description: 'Checking code quality…',
                    targetUrl: env.RUN_DISPLAY_URL)       try {
                    sh '! git diff --name-only ^HEAD origin/trunk | grep "^backend"'
                    echo "No changes found, skipping tests."        pullRequest.createStatus(status: 'success',
                     context: 'Format & Syntax (backend)',
                     description: 'Skipped (no changes).')
                   } catch (e) {
                    echo "Changes found, running tests."        ansiColor('xterm') {
                     // Check for it-block .only() calls which skip all other
                     // tests in a suite. These should NEVER be version-checked.
                     sh "! git grep '\\<it\\.only\\>'"         sh 'rm -rf ./frontend'
                     sh 'yarn'
                     sh 'yarn eslint ./backend'
                     sh 'yarn prettier -c "./backend/**/*.js"'         pullRequest.createStatus(status: 'success',
                      context: 'Format & Syntax (backend)',
                      description: 'Squeaky clean! You win today.')
                    }
                   }
                  }
                 }
                 post {
                  failure {
                   script {
                    pullRequest.createStatus(status: 'failure',
                     context: 'Format & Syntax (backend)',
                     description: 'Wow, did you even look at how malformed your code is?',
                     targetUrl: env.RUN_DISPLAY_URL)
                   }
                  }
                 }
                }    stage('Frontend tests') {
                 agent {
                  node {
                   label 'Node'
                  }
                 }     steps {
                  script {
                   pullRequest.createStatus(status: 'pending',
                    context: 'Unit tests (frontend)',
                    description: 'Making sure you didn\'t break anything…',
                    targetUrl: env.RUN_DISPLAY_URL)       try {
                    sh '! git diff --name-only ^HEAD origin/trunk | grep "^frontend"'
                    sh '! git diff --name-only ^HEAD origin/trunk | grep "^shared-utilities"'
                    echo "No changes found, skipping tests."        pullRequest.createStatus(status: 'success',
                     context: 'Unit tests (frontend)',
                     description: 'Skipped (no changes).')
                   } catch (e) {
                    echo "Changes found, running tests."        sh 'rm -rf ./backend'
                    sh 'yarn'
                    dir('frontend') {
                     ansiColor('xterm') {
                      sh 'yarn test:ci --coverage --json --outputFile=test-results.json'
                     }
                    }        pullRequest.createStatus(status: 'success',
                     context: 'Unit tests (frontend)',
                     description: 'Hot damn, they passed!')
                   }
                  }
                 }
                 post {
                  always {
                   script {
                    if (fileExists('frontend/test-results.json')) {
                     archiveArtifacts artifacts: 'frontend/test-results.json', fingerprint: true
                    }
                   }
                  }
                  failure {
                   script {
                    pullRequest.createStatus(status: 'failure',
                     context: 'Unit tests (frontend)',
                     description: 'What did you do???',
                     targetUrl: env.RUN_DISPLAY_URL)
                   }
                  }
                 }
                }    stage('Backend tests') {
                 agent {
                  node {
                   label 'Node'
                  }
                 }     steps {
                  script {
                   pullRequest.createStatus(status: 'pending',
                    context: 'Unit tests (backend)',
                    description: 'Making sure you didn\'t break anything…',
                    targetUrl: env.RUN_DISPLAY_URL)       try {
                    sh '! git diff --name-only ^HEAD origin/trunk | grep "^backend"'
                    sh '! git diff --name-only ^HEAD origin/trunk | grep "^shared-utilities"'
                    echo "No changes found, skipping tests."        pullRequest.createStatus(status: 'success',
                     context: 'Unit tests (backend)',
                     description: 'Skipped (no changes).')
                   } catch (e) {
                    echo "Changes found, running tests."        COMMIT = sh(script: 'git rev-parse HEAD', returnStdout: true).trim()
                    build job: 'Build_Phases/test-backend-parallel', parameters: [
                     [$class: 'StringParameterValue', name: 'COMMIT', value: COMMIT]
                    ], wait: true        pullRequest.createStatus(status: 'success',
                     context: 'Unit tests (backend)',
                     description: 'Wow, way to go!!')
                   }
                  }
                 }
                 post {
                  failure {
                   script {
                    pullRequest.createStatus(status: 'failure',
                     context: 'Unit tests (backend)',
                     description: 'Something terrible has happened.',
                     targetUrl: env.RUN_DISPLAY_URL)
                   }
                  }
                 }
                }    stage('Shared-utilities tests') {
                 agent {
                  node {
                   label 'Node'
                  }
                 }     steps {
                  script {
                   pullRequest.createStatus(status: 'pending',
                    context: 'Unit tests (shared-utilities)',
                    description: 'Making sure you didn\'t break anything…',
                    targetUrl: env.RUN_DISPLAY_URL)       try {
                    sh '! git diff --name-only ^HEAD origin/trunk | grep "^shared-utilities"'
                    echo "No changes found, skipping tests."        pullRequest.createStatus(status: 'success',
                     context: 'Unit tests (shared-utilities)',
                     description: 'Skipped (no changes).')
                   } catch (e) {
                    echo "Changes found, running tests."        sh 'rm -rf ./frontend && rm -rf ./backend'
                    sh 'yarn'
                    dir('shared-utilities') {
                     ansiColor('xterm') {
                      sh 'yarn test --coverage --json --outputFile=test-results.json'
                     }
                    }        pullRequest.createStatus(status: 'success',
                     context: 'Unit tests (shared-utilities)',
                     description: 'Congratulations, you may work another day.')
                   }
                  }
                 }
                 post {
                  always {
                   script {
                    if (fileExists('shared-utilities/test-results.json')) {
                     archiveArtifacts artifacts: 'shared-utilities/test-results.json', fingerprint: true
                    }
                   }
                  }
                  failure {
                   script {
                    pullRequest.createStatus(status: 'failure',
                     context: 'Unit tests (shared-utilities)',
                     description: 'Look, I get it. It\'s hard. FIX THIS!!!',
                     targetUrl: env.RUN_DISPLAY_URL)
                   }
                  }
                 }
                }    stage('Browser tests') {
                 agent {
                  node {
                   label 'Node'
                  }
                 }     environment {
                  CLIENT = 'main'
                  HEADLESS = 'true'
                  APP_ROOT = 'http://localhost:9002'
                  LD_LIBRARY_PATH = '/opt/google/chrome/lib/:$LD_LIBRARY_PATH'
                 }     steps {
                  script {
                   pullRequest.createStatus(status: 'pending',
                    context: 'E2E tests (Chrome)',
                    description: 'Making sure you didn\'t break anything…',
                    targetUrl: env.RUN_DISPLAY_URL)       try {
                    sh '! git diff --name-only ^HEAD origin/trunk | grep "^backend"'
                    sh '! git diff --name-only ^HEAD origin/trunk | grep "^frontend"'
                    sh '! git diff --name-only ^HEAD origin/trunk | grep "^shared-utilities"'
                    echo "No changes found, skipping tests."        pullRequest.createStatus(status: 'success',
                     context: 'E2E tests (Chrome)',
                     description: 'Skipped (no changes).')
                   } catch (e) {
                    echo "Changes found, running tests."        COMMIT = sh(script: 'git rev-parse HEAD', returnStdout: true).trim()
                    build job: 'Build_Phases/test-browser-parallel', parameters: [
                     [$class: 'StringParameterValue', name: 'COMMIT', value: COMMIT]
                    ]        pullRequest.createStatus(status: 'success',
                     context: 'E2E tests (Chrome)',
                     description: 'FULL FUNNEL SUCCESS, BEYOTCH!')
                   }
                  }
                 }
                 post {
                  failure {
                   script {
                    pullRequest.createStatus(status: 'failure',
                     context: 'E2E tests (Chrome)',
                     description: 'Oh no. Ohhhhhh no. This is bad.',
                     targetUrl: env.RUN_DISPLAY_URL)
                   }
                  }
                 }
                }    stage('Bundle test (admin)') {
                 agent {
                  node {
                   label 'Node'
                  }
                 }     environment {
                  CLIENT = 'admin'
                  AWS_ACCESS_KEY_ID = credentials('aws-access-key-id-deploy-production')
                  AWS_SECRET_ACCESS_KEY = credentials('aws-secret-access-key-deploy-production')
                 }     steps {
                  script {
                   pullRequest.createStatus(status: 'pending',
                    context: 'Bundle test (admin)',
                    description: 'Blending…',
                    targetUrl: env.RUN_DISPLAY_URL)       try {
                    sh '! git diff --name-only ^HEAD origin/trunk | grep "^cli"'
                    sh '! git diff --name-only ^HEAD origin/trunk | grep "^frontend"'
                    echo "No changes found, skipping tests."        pullRequest.createStatus(status: 'success',
                     context: 'Bundle test (admin)',
                     description: 'Skipped (no changes).')
                   } catch (e) {
                    echo "Changes found, running tests."        sh 'yarn'
                    sh 'yarn start -e production -n client node ./frontend/bin/client/build.js'        pullRequest.createStatus(status: 'success',
                     context: 'Bundle test (admin)',
                     description: 'Ah, the sweet smell of minified text.')
                   }
                  }
                 }
                 post {
                  failure {
                   script {
                    pullRequest.createStatus(status: 'failure',
                     context: 'Bundle test (admin)',
                     description: 'Uh-oh.',
                     targetUrl: env.RUN_DISPLAY_URL)
                   }
                  }
                 }
                }    stage('Bundle test (main)') {
                 agent {
                  node {
                   label 'Node'
                  }
                 }     environment {
                  CLIENT = 'main'
                  AWS_ACCESS_KEY_ID = credentials('aws-access-key-id-deploy-production')
                  AWS_SECRET_ACCESS_KEY = credentials('aws-secret-access-key-deploy-production')
                 }     steps {
                  script {
                   pullRequest.createStatus(status: 'pending',
                    context: 'Bundle test (main)',
                    description: 'Blending…',
                    targetUrl: env.RUN_DISPLAY_URL)       try {
                    sh '! git diff --name-only ^HEAD origin/trunk | grep "^cli"'
                    sh '! git diff --name-only ^HEAD origin/trunk | grep "^frontend"'
                    echo "No changes found, skipping tests."        pullRequest.createStatus(status: 'success',
                     context: 'Bundle test (main)',
                     description: 'Skipped (no changes).')
                   } catch (e) {
                    echo "Changes found, running tests."        sh 'yarn'
                    sh 'yarn start -e production -n client node ./frontend/bin/client/build.js'        pullRequest.createStatus(status: 'success',
                     context: 'Bundle test (main)',
                     description: 'Ah, the sweet smell of minified text.')
                   }
                  }
                 }
                 post {
                  failure {
                   script {
                    pullRequest.createStatus(status: 'failure',
                     context: 'Bundle test (main)',
                     description: 'Uh-oh.',
                     targetUrl: env.RUN_DISPLAY_URL)
                   }
                  }
                 }
                }    stage('Bundle test (quote-widget)') {
                 agent {
                  node {
                   label 'Node'
                  }
                 }     environment {
                  CLIENT = 'quote-widget'
                  AWS_ACCESS_KEY_ID = credentials('aws-access-key-id-deploy-production')
                  AWS_SECRET_ACCESS_KEY = credentials('aws-secret-access-key-deploy-production')
                 }     steps {
                  script {
                   pullRequest.createStatus(status: 'pending',
                    context: 'Bundle test (quote-widget)',
                    description: 'Blending…',
                    targetUrl: env.RUN_DISPLAY_URL)       try {
                    sh '! git diff --name-only ^HEAD origin/trunk | grep "^cli"'
                    sh '! git diff --name-only ^HEAD origin/trunk | grep "^frontend"'
                    echo "No changes found, skipping tests."
            
                    pullRequest.createStatus(status: 'success',
                     context: 'Bundle test (quote-widget)',
                     description: 'Skipped (no changes).')
                   } catch (e) {
                    echo "Changes found, running tests."        sh 'yarn'
                    sh 'yarn start -e production -n client node ./frontend/bin/client/build.js'        pullRequest.createStatus(status: 'success',
                     context: 'Bundle test (quote-widget)',
                     description: 'Ah, the sweet smell of minified text.')
                   }
                  }
                 }
                 post {
                  failure {
                   script {
                    pullRequest.createStatus(status: 'failure',
                     context: 'Bundle test (quote-widget)',
                     description: 'Uh-oh.',
                     targetUrl: env.RUN_DISPLAY_URL)
                   }
                  }
                 }
                }
               }
              }
             }
            }

             

             

            Show
            timethos Tim Huang added a comment - - edited I have more information on the matter - I was triggering downstream jobs within a `parallel` step (not sure if this has anything to do with it). In an earlier sequential stage, if I trigger another downstream build job, it causes itself and the ones in the parallel steps (that didn't show up before) to show up in their respective "Triggered Jobs" sections.   Below is my groovy script. In the first sequential stage there is a downstream no-op job I made that, when triggered, seems to make the "Triggered Jobs" section show up for the other two downstream jobs that are triggered in the parallel stages further down. Without the no-op job, the "Triggered Jobs" section won't show up for the other two. The formatting of this code won't paste right (missing newlines here and there), so apologies. pipeline { agent none options { // Ideally, PRs build in less than 5 timeout(time: 15, unit: 'MINUTES') } environment { CI = 'true' AWS_ACCESS_KEY_ID = credentials('aws-access-key-id-test') AWS_SECRET_ACCESS_KEY = credentials('aws-secret-access-key-test') } stages { stage('Abort previous builds on PR') { steps { // Not sure how this works, but… https://stackoverflow.com/a/52811034 milestone label: '', ordinal: Integer.parseInt(env.BUILD_ID) - 1 milestone label: '', ordinal: Integer.parseInt(env.BUILD_ID) // NOTE: Triggering this no-op job makes all Triggered Builds show up!!! build 'Utilities/TriggeringThisInStepsMakesTriggeredBuildsShowUp' } } stage('PR tests') { failFast false parallel { stage('Linting & formatting') { agent { node { label 'Node' } } steps { script { pullRequest.createStatus(status: 'pending', context: 'Format & Syntax (backend)', description: 'Checking code quality…', targetUrl: env.RUN_DISPLAY_URL) try { sh '! git diff --name-only ^HEAD origin/trunk | grep "^backend"' echo "No changes found, skipping tests." pullRequest.createStatus(status: 'success', context: 'Format & Syntax (backend)', description: 'Skipped (no changes).') } catch (e) { echo "Changes found, running tests." ansiColor('xterm') { // Check for it-block .only() calls which skip all other // tests in a suite. These should NEVER be version-checked. sh "! git grep '\\<it\\.only\\>'" sh 'rm -rf ./frontend' sh 'yarn' sh 'yarn eslint ./backend' sh 'yarn prettier -c "./backend/**/*.js"' pullRequest.createStatus(status: 'success', context: 'Format & Syntax (backend)', description: 'Squeaky clean! You win today.') } } } } post { failure { script { pullRequest.createStatus(status: 'failure', context: 'Format & Syntax (backend)', description: 'Wow, did you even look at how malformed your code is?', targetUrl: env.RUN_DISPLAY_URL) } } } } stage('Frontend tests') { agent { node { label 'Node' } } steps { script { pullRequest.createStatus(status: 'pending', context: 'Unit tests (frontend)', description: 'Making sure you didn\'t break anything…', targetUrl: env.RUN_DISPLAY_URL) try { sh '! git diff --name-only ^HEAD origin/trunk | grep "^frontend"' sh '! git diff --name-only ^HEAD origin/trunk | grep "^shared-utilities"' echo "No changes found, skipping tests." pullRequest.createStatus(status: 'success', context: 'Unit tests (frontend)', description: 'Skipped (no changes).') } catch (e) { echo "Changes found, running tests." sh 'rm -rf ./backend' sh 'yarn' dir('frontend') { ansiColor('xterm') { sh 'yarn test:ci --coverage --json --outputFile=test-results.json' } } pullRequest.createStatus(status: 'success', context: 'Unit tests (frontend)', description: 'Hot damn, they passed!') } } } post { always { script { if (fileExists('frontend/test-results.json')) { archiveArtifacts artifacts: 'frontend/test-results.json', fingerprint: true } } } failure { script { pullRequest.createStatus(status: 'failure', context: 'Unit tests (frontend)', description: 'What did you do???', targetUrl: env.RUN_DISPLAY_URL) } } } } stage('Backend tests') { agent { node { label 'Node' } } steps { script { pullRequest.createStatus(status: 'pending', context: 'Unit tests (backend)', description: 'Making sure you didn\'t break anything…', targetUrl: env.RUN_DISPLAY_URL) try { sh '! git diff --name-only ^HEAD origin/trunk | grep "^backend"' sh '! git diff --name-only ^HEAD origin/trunk | grep "^shared-utilities"' echo "No changes found, skipping tests." pullRequest.createStatus(status: 'success', context: 'Unit tests (backend)', description: 'Skipped (no changes).') } catch (e) { echo "Changes found, running tests." COMMIT = sh(script: 'git rev-parse HEAD', returnStdout: true).trim() build job: 'Build_Phases/test-backend-parallel', parameters: [ [$class: 'StringParameterValue', name: 'COMMIT', value: COMMIT] ], wait: true pullRequest.createStatus(status: 'success', context: 'Unit tests (backend)', description: 'Wow, way to go!!') } } } post { failure { script { pullRequest.createStatus(status: 'failure', context: 'Unit tests (backend)', description: 'Something terrible has happened.', targetUrl: env.RUN_DISPLAY_URL) } } } } stage('Shared-utilities tests') { agent { node { label 'Node' } } steps { script { pullRequest.createStatus(status: 'pending', context: 'Unit tests (shared-utilities)', description: 'Making sure you didn\'t break anything…', targetUrl: env.RUN_DISPLAY_URL) try { sh '! git diff --name-only ^HEAD origin/trunk | grep "^shared-utilities"' echo "No changes found, skipping tests." pullRequest.createStatus(status: 'success', context: 'Unit tests (shared-utilities)', description: 'Skipped (no changes).') } catch (e) { echo "Changes found, running tests." sh 'rm -rf ./frontend && rm -rf ./backend' sh 'yarn' dir('shared-utilities') { ansiColor('xterm') { sh 'yarn test --coverage --json --outputFile=test-results.json' } } pullRequest.createStatus(status: 'success', context: 'Unit tests (shared-utilities)', description: 'Congratulations, you may work another day.') } } } post { always { script { if (fileExists('shared-utilities/test-results.json')) { archiveArtifacts artifacts: 'shared-utilities/test-results.json', fingerprint: true } } } failure { script { pullRequest.createStatus(status: 'failure', context: 'Unit tests (shared-utilities)', description: 'Look, I get it. It\'s hard. FIX THIS!!!', targetUrl: env.RUN_DISPLAY_URL) } } } } stage('Browser tests') { agent { node { label 'Node' } } environment { CLIENT = 'main' HEADLESS = 'true' APP_ROOT = 'http://localhost:9002' LD_LIBRARY_PATH = '/opt/google/chrome/lib/:$LD_LIBRARY_PATH' } steps { script { pullRequest.createStatus(status: 'pending', context: 'E2E tests (Chrome)', description: 'Making sure you didn\'t break anything…', targetUrl: env.RUN_DISPLAY_URL) try { sh '! git diff --name-only ^HEAD origin/trunk | grep "^backend"' sh '! git diff --name-only ^HEAD origin/trunk | grep "^frontend"' sh '! git diff --name-only ^HEAD origin/trunk | grep "^shared-utilities"' echo "No changes found, skipping tests." pullRequest.createStatus(status: 'success', context: 'E2E tests (Chrome)', description: 'Skipped (no changes).') } catch (e) { echo "Changes found, running tests." COMMIT = sh(script: 'git rev-parse HEAD', returnStdout: true).trim() build job: 'Build_Phases/test-browser-parallel', parameters: [ [$class: 'StringParameterValue', name: 'COMMIT', value: COMMIT] ] pullRequest.createStatus(status: 'success', context: 'E2E tests (Chrome)', description: 'FULL FUNNEL SUCCESS, BEYOTCH!') } } } post { failure { script { pullRequest.createStatus(status: 'failure', context: 'E2E tests (Chrome)', description: 'Oh no. Ohhhhhh no. This is bad.', targetUrl: env.RUN_DISPLAY_URL) } } } } stage('Bundle test (admin)') { agent { node { label 'Node' } } environment { CLIENT = 'admin' AWS_ACCESS_KEY_ID = credentials('aws-access-key-id-deploy-production') AWS_SECRET_ACCESS_KEY = credentials('aws-secret-access-key-deploy-production') } steps { script { pullRequest.createStatus(status: 'pending', context: 'Bundle test (admin)', description: 'Blending…', targetUrl: env.RUN_DISPLAY_URL) try { sh '! git diff --name-only ^HEAD origin/trunk | grep "^cli"' sh '! git diff --name-only ^HEAD origin/trunk | grep "^frontend"' echo "No changes found, skipping tests." pullRequest.createStatus(status: 'success', context: 'Bundle test (admin)', description: 'Skipped (no changes).') } catch (e) { echo "Changes found, running tests." sh 'yarn' sh 'yarn start -e production -n client node ./frontend/bin/client/build.js' pullRequest.createStatus(status: 'success', context: 'Bundle test (admin)', description: 'Ah, the sweet smell of minified text.') } } } post { failure { script { pullRequest.createStatus(status: 'failure', context: 'Bundle test (admin)', description: 'Uh-oh.', targetUrl: env.RUN_DISPLAY_URL) } } } } stage('Bundle test (main)') { agent { node { label 'Node' } } environment { CLIENT = 'main' AWS_ACCESS_KEY_ID = credentials('aws-access-key-id-deploy-production') AWS_SECRET_ACCESS_KEY = credentials('aws-secret-access-key-deploy-production') } steps { script { pullRequest.createStatus(status: 'pending', context: 'Bundle test (main)', description: 'Blending…', targetUrl: env.RUN_DISPLAY_URL) try { sh '! git diff --name-only ^HEAD origin/trunk | grep "^cli"' sh '! git diff --name-only ^HEAD origin/trunk | grep "^frontend"' echo "No changes found, skipping tests." pullRequest.createStatus(status: 'success', context: 'Bundle test (main)', description: 'Skipped (no changes).') } catch (e) { echo "Changes found, running tests." sh 'yarn' sh 'yarn start -e production -n client node ./frontend/bin/client/build.js' pullRequest.createStatus(status: 'success', context: 'Bundle test (main)', description: 'Ah, the sweet smell of minified text.') } } } post { failure { script { pullRequest.createStatus(status: 'failure', context: 'Bundle test (main)', description: 'Uh-oh.', targetUrl: env.RUN_DISPLAY_URL) } } } } stage('Bundle test (quote-widget)') { agent { node { label 'Node' } } environment { CLIENT = 'quote-widget' AWS_ACCESS_KEY_ID = credentials('aws-access-key-id-deploy-production') AWS_SECRET_ACCESS_KEY = credentials('aws-secret-access-key-deploy-production') } steps { script { pullRequest.createStatus(status: 'pending', context: 'Bundle test (quote-widget)', description: 'Blending…', targetUrl: env.RUN_DISPLAY_URL) try { sh '! git diff --name-only ^HEAD origin/trunk | grep "^cli"' sh '! git diff --name-only ^HEAD origin/trunk | grep "^frontend"' echo "No changes found, skipping tests." pullRequest.createStatus(status: 'success', context: 'Bundle test (quote-widget)', description: 'Skipped (no changes).') } catch (e) { echo "Changes found, running tests." sh 'yarn' sh 'yarn start -e production -n client node ./frontend/bin/client/build.js' pullRequest.createStatus(status: 'success', context: 'Bundle test (quote-widget)', description: 'Ah, the sweet smell of minified text.') } } } post { failure { script { pullRequest.createStatus(status: 'failure', context: 'Bundle test (quote-widget)', description: 'Uh-oh.', targetUrl: env.RUN_DISPLAY_URL) } } } } } } } }    

              People

              • Assignee:
                sophistifunk Josh McDonald
                Reporter:
                vlatombe Vincent Latombe
              • Votes:
                34 Vote for this issue
                Watchers:
                60 Start watching this issue

                Dates

                • Created:
                  Updated: