pipeline { agent { label '172.21.51.68'} options { buildDiscarder(logRotator(numToKeepStr: '10')) disableConcurrentBuilds() timeout(time: 20, unit: 'MINUTES') gitLabConnection('gitlab') } environment { IMAGE_REPO = "172.21.51.143:5000/demo/myblog" DINGTALK_CREDS = credentials('dingTalk') TAB_STR = "\n \n                    " } stages { stage('printenv') { steps { script{ sh "git log --oneline -n 1 > gitlog.file" env.GIT_LOG = readFile("gitlog.file").trim() } sh 'printenv' } } stage('checkout') { steps { checkout scm updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success') script{ env.BUILD_TASKS = env.STAGE_NAME + "√..." + env.TAB_STR } } } stage('build-image') { steps { retry(2) { sh 'docker build . -t ${IMAGE_REPO}:${GIT_COMMIT}'} updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success') script{ env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR } } } stage('push-image') { steps { retry(2) { sh 'docker push ${IMAGE_REPO}:${GIT_COMMIT}'} updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success') script{ env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR } } } stage('deploy') { steps { sh "sed -i 's#{{IMAGE_URL}}#${IMAGE_REPO}:${GIT_COMMIT}#g' manifests/*" timeout(time: 1, unit: 'MINUTES') { sh "kubectl apply -f manifests/" } updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success') script{ env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR } } } } post { success { echo 'Congratulations!' sh """ curl 'https://oapi.dingtalk.com/robot/send?access_token=${DINGTALK_CREDS_PSW}' \ -H 'Content-Type: application/json' \ -d '{ "msgtype": "markdown", "markdown": { "title":"myblog", "text": "😄👍 构建成功 👍😄 \n**项目名称**:luffy \n**Git log**: ${GIT_LOG} \n**构建分支**: ${BRANCH_NAME} \n**构建地址**:${RUN_DISPLAY_URL} \n**构建任务**:${BUILD_TASKS}" } }' """ } failure { echo 'Oh no!' sh """ curl 'https://oapi.dingtalk.com/robot/send?access_token=${DINGTALK_CREDS_PSW}' \ -H 'Content-Type: application/json' \ -d '{ "msgtype": "markdown", "markdown": { "title":"myblog", "text": "😖❌ 构建失败 ❌😖 \n**项目名称**:luffy \n**Git log**: ${GIT_LOG} \n**构建分支**: ${BRANCH_NAME} \n**构建地址**:${RUN_DISPLAY_URL} \n**构建任务**:${BUILD_TASKS}" } }' """ } always { echo 'I will always say Hello again!' } } }