def cicdproject = "${CICD_NAMESPACE}" def appname = "${APP_NAME}" def utv_project = "${UTV_NAMESPACE}" def test_project = "${TEST_NAMESPACE}" def auto_project = "${AUTO_NAMESPACE}" def sys_project = "${SYS_NAMESPACE}" def jenkinsslave = "nodejs15-agent" def dist_path = "dist/apps/dafa-web" pipeline { agent { node {label "${jenkinsslave}"} } environment { CURRENT_COMMIT = getShortCommitHash() BUILD_TAG = "" } stages { stage("Initialize") { steps { echo '### Generating build tag... ###' script { def packageJson = readJSON file: 'package.json' BUILD_TAG = "dev_v${packageJson.version}_${env.BUILD_NUMBER}_${CURRENT_COMMIT}" echo '### Build tag ###' echo "This is the build tag: ${BUILD_TAG}" } echo '### Build tag generated! ###' } } stage("Install dependencies") { environment { NEXUS_CREDS = "${env.NEXUS_USERNAME}:${env.NEXUS_PASSWORD}" } steps { echo '### Installing dependencies... ###' sh ''' ENCODED=$(echo -n "${NEXUS_CREDS}" | openssl base64) CACHE_DIRECTORY=/home/jenkins/.npm/cache mkdir -p ${CACHE_DIRECTORY} echo "_auth=${ENCODED}" >> .npmrc npm install ''' echo '### Dependencies installed! ###' } } stage("Build application") { steps { echo '### Building application... ###' sh ''' npm run build:pega #cp nginx/nginx.conf ${NGINX_PATH} #cp -r nginx/* ${NGINX_PATH} ''' echo '### Application built! ###' } } stage('App bake') { steps { echo '### Creating image... ###' script { openshift.withCluster() { openshift.withProject(utv_project) { openshift.selector("bc", "${ appname }").startBuild("--from-dir=${dist_path}", "--wait=true") openshift.tag("${ appname }:latest", "${ appname }:${BUILD_TAG}") } } } echo '### Image created! ###' } } stage('Deploy to "auto"') { steps { echo '### Deploying to "auto"... ###' script { openshift.withCluster() { openshift.withProject(auto_project) { openshift.raw("set image dc/${ appname } ${ appname }=docker-registry.default.svc:5000/${utv_project}/${ appname }:${BUILD_TAG} --record=true --source=docker") openshift.raw("annotate dc ${ appname } version=${BUILD_TAG} --overwrite=true") openshift.selector("dc", "${ appname }").rollout().status(); } } } echo '### Deployed to "auto"! ###' } } stage('Deploy to "test"') { steps { echo '### Deploying to "test"... ###' script { openshift.withCluster() { openshift.withProject(test_project) { openshift.raw("set image dc/${ appname } ${ appname }=docker-registry.default.svc:5000/${utv_project}/${ appname }:${BUILD_TAG} --record=true --source=docker") openshift.raw("annotate dc ${ appname } version=${BUILD_TAG} --overwrite=true") openshift.selector("dc", "${ appname }").rollout().status(); } } } echo '### Deployed to "test"! ###' } } stage('Deploy "sys"') { steps { echo '### Deploying to "sys"... ###' script { openshift.withCluster() { openshift.withProject(sys_project) { openshift.raw("set image dc/${ appname } ${ appname }=docker-registry.default.svc:5000/${utv_project}/${ appname }:${BUILD_TAG} --record=true --source=docker") openshift.raw("annotate dc ${ appname } version=${BUILD_TAG} --overwrite=true") openshift.selector("dc", "${ appname }").rollout().status(); } } } echo '### Deployed to "sys"! ###' } } } } def getShortCommitHash() { return sh(returnStdout: true, script: "git log -n 1 --pretty=format:'%h'").trim() }