Files
mina-sidor-fa-web/openshift/dev/Jenkinsfile
2021-05-06 10:03:38 +02:00

137 lines
4.0 KiB
Groovy

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()
}