一、镜像tag使用时间变量,配置如下:
1.1、首先在Jenkins的插件管理中安装Date Parameter插件:Manage Jenkins --> Plugin Manager --> Avaiable中搜索Date Parameter。
1.2、在Jenkins中配置如下:
二、编写Pipeline脚本
pipeline {
agent any
stages {
stage('Printenv') {
steps {
script{
sh 'printenv'
}
}
}
stage('pull code') {
steps {
git branch: '${branch}', credentialsId: 'jenkins_226', url: 'git@gitlab.test.cn:hc-backed/hc-risk/hc-risk-test.git'
updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success')
script{
env.BUILD_TASKS = env.STAGE_NAME + "√..." + env.TAB_STR
}
}
}
stage('Code Build'){
steps {
retry(2) { sh "/opt/maven/bin/mvn -U -pl risk-business/business-service -am -Dmaven.test.skip=true clean package" }
updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success')
script{
env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR
}
}
}
stage('Docker Build'){
steps {
retry(2) {
sh '''
cat > Dockerfile << EOF
FROM openjdk:8-jdk-alpine
RUN adduser -D juser
RUN mkdir -p /home/juser/project/hc-risk-phl/business-service
ADD risk-business/business-service/target/business-service-1.0.0-SNAPSHOT.jar /home/juser/project/hc-risk-phl/business-service/phl-business-service.jar
ADD risk-business/business-service/starter.sh /home/juser/project/hc-risk-phl/business-service/starter.sh
RUN chmod +x /home/juser/project/hc-risk-phl/business-service/starter.sh
RUN chown -R juser:juser /home/juser/project
USER juser
ENTRYPOINT ["/home/juser/project/hc-risk-phl/business-service/starter.sh","/home/juser/project/hc-risk-phl/business-service/phl-business-service.jar","start","test"]
EOF
docker build -t 192.168.122.225:5000/phl-business-service:${Date} .
docker push 192.168.122.225:5000/phl-business-service:${Date}
'''
}
updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success')
script{
env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR
}
}
}
stage('Application Deploy'){
steps {
retry(2) { sh 'kubectl --kubeconfig /root/config set image -n phl deploy/phl-business-service phl-business-service=192.168.122.225:5000/phl-business-service:${Date}' }
updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success')
script{
env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR
}
}
}
}
post {
success {
echo 'Congratulations!'
sh """
curl -X POST \
-H "Content-Type: application/json" \
-d '
{
"msg_type":"text",
"content":{"text":
"😄👍构建成功👍😄 项目名称: ${JOB_BASE_NAME} 构建地址: ${RUN_DISPLAY_URL}"
}
}' \
https://open.feishu.cn/open-apis/bot/v2/hook/2680d3b8-fdds-4a59-9f75-78be51d854516
"""
}
failure {
echo 'Oh no!'
sh """
curl -X POST \
-H "Content-Type: application/json" \
-d '
{
"msg_type":"text",
"content":{"text":
"😖❌构建失败 项目名称: ${JOB_BASE_NAME} 构建地址: ${RUN_DISPLAY_URL}"
}
}' \
https://open.feishu.cn/open-apis/bot/v2/hook/2680d3b8-d38b-4a59-9f75-78bfsfdf87856
"""
}
always {
echo 'I will always say Hello again!'
}
}
}
三、结果如下: