100 lines
3.7 KiB
Plaintext
100 lines
3.7 KiB
Plaintext
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!'
|
||
}
|
||
}
|
||
} |