/* groovylint-disable NestedBlockDepth */ // Description: Jenkinsfile for finance_dbt pipeline { agent { kubernetes { inheritFrom 'kaniko' } } environment { DESTINATION_MACHINE = 'shennan@physical-ubuntu-server' ORG = 'mujiannan' PROJECT = 'finance-dbt' DOCKER_REGISTRY = 'docker-registry.mujiannan.com:5001' SMS_URL = 'https://nas.mujiannan.com:5001/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=%22XO8yFQyi66SStEPY7AALimGbNjMsZE85i3m0UlF0siIQtyn1deqSomp0CUheOwlE%22' // NOSONAR } stages { stage('Pre Check') { steps { script { // Retrieve the latest commit message def String commitMessage = sh(returnStdout: 'true', script: 'git log -1 --pretty=%B').trim() echo "Commit message: ${commitMessage}" // Set a flag based on the commit message if (commitMessage.contains('[SKIP CI]')) { env.SKIP_CI = 'true' } // Set a flag based on the commit message if ( commitMessage.contains('[SKIP CD]') || env.SKIP_CI == 'true' ) { env.SKIP_CD = 'true' } } script { // Set the image tag, GIT_TAG is preferred, if not available, use the commit hash abbreviated env.IMAGE_TAG = sh(returnStdout: 'true', script: 'git describe --tags --always').trim() } } } stage('Build') { when { not { expression { return env.SKIP_CI == 'true' } } } steps { container('kaniko') { // Build the Docker image sh """ /kaniko/executor \ --context . \ --cache=true \ --cache-dir="${WORKSPACE}/kaniko-cache" \ --registry-mirror="${DOCKER_REGISTRY}" \ --destination "${DOCKER_REGISTRY}/${ORG}/${PROJECT}:${IMAGE_TAG}" \ --label org.opencontainers.image.branch=${BRANCH_NAME} \ --label org.opencontainers.image.build_tag=${BUILD_TAG} \ --label org.opencontainers.image.revision="${GIT_COMMIT}" \ --label org.opencontainers.image.version="${IMAGE_TAG}" \ --label org.opencontainers.image.url="${BUILD_URL}" \ --label org.opencontainers.image.source="${GIT_URL}" """ } } } stage('Deploy') { when { not { expression { return env.SKIP_CD == 'true' } } } steps { withKubeConfig([namespace: "${BRANCH_NAME}"]) { container('kubectl') { sh ''' if [[ "dev" = "$BRANCH_NAME" || "test" = "$BRANCH_NAME" || "prod" = "$BRANCH_NAME" ]]; then export deployment=$BRANCH_NAME export namespace=$BRANCH_NAME else export deployment=dev export namespace=dev fi export image_tag=$IMAGE_TAG . ./Deploy.sh ''' } } } } } }