github.com/olli-ai/jx/v2@v2.0.400-0.20210921045218-14731b4dd448/pkg/cmd/create/test_data/jenkinsfiles/Jenkinsfile.nodejs (about) 1 pipeline { 2 agent { 3 label "jenkins-nodejs" 4 } 5 environment { 6 ORG = 'jstrachan' 7 APP_NAME = 'mynode1' 8 CHARTMUSEUM_CREDS = credentials('jenkins-x-chartmuseum') 9 } 10 stages { 11 stage('CI Build and push snapshot') { 12 when { 13 branch 'PR-*' 14 } 15 environment { 16 PREVIEW_VERSION = "0.0.0-SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER" 17 PREVIEW_NAMESPACE = "$APP_NAME-$BRANCH_NAME".toLowerCase() 18 HELM_RELEASE = "$PREVIEW_NAMESPACE".toLowerCase() 19 } 20 steps { 21 container('nodejs') { 22 sh "npm install" 23 sh "npm test" 24 25 sh 'export VERSION=$PREVIEW_VERSION && skaffold run -f skaffold.yaml' 26 27 sh "jx step validate --min-jx-version 1.2.36" 28 sh "jx step post build --image \$JENKINS_X_DOCKER_REGISTRY_SERVICE_HOST:\$JENKINS_X_DOCKER_REGISTRY_SERVICE_PORT/$ORG/$APP_NAME:$PREVIEW_VERSION" 29 } 30 31 dir('./charts/preview') { 32 container('nodejs') { 33 sh "make preview" 34 sh "jx preview --app $APP_NAME --dir ../.." 35 } 36 } 37 } 38 } 39 stage('Build Release') { 40 when { 41 branch 'master' 42 } 43 steps { 44 container('nodejs') { 45 // ensure we're not on a detached head 46 sh "git checkout master" 47 sh "git config --global credential.helper store" 48 sh "jx step validate --min-jx-version 1.1.73" 49 sh "jx step git credentials" 50 // so we can retrieve the version in later steps 51 sh "echo \$(jx-release-version) > VERSION" 52 } 53 dir('./charts/mynode1') { 54 container('nodejs') { 55 sh "make tag" 56 } 57 } 58 container('nodejs') { 59 sh "npm install" 60 sh "npm test" 61 62 sh 'export VERSION=`cat VERSION` && skaffold run -f skaffold.yaml' 63 sh "jx step validate --min-jx-version 1.2.36" 64 sh "jx step post build --image \$JENKINS_X_DOCKER_REGISTRY_SERVICE_HOST:\$JENKINS_X_DOCKER_REGISTRY_SERVICE_PORT/$ORG/$APP_NAME:\$(cat VERSION)" 65 } 66 } 67 } 68 stage('Promote to Environments') { 69 when { 70 branch 'master' 71 } 72 steps { 73 dir('./charts/mynode1') { 74 container('nodejs') { 75 sh 'jx step changelog --version v\$(cat ../../VERSION)' 76 77 // release the helm chart 78 sh 'make release' 79 80 // promote through all 'Auto' promotion Environments 81 sh 'jx promote -b --all-auto --timeout 1h --version \$(cat ../../VERSION)' 82 } 83 } 84 } 85 } 86 } 87 post { 88 always { 89 cleanWs() 90 } 91 } 92 }