11.jenkins paramter和pipeline结合构建镜像
参数
1.Git_Repository
2.Git_Branch
3.Maven_Version
4.Mvn_Cmd
5.Target_Dir
6.jdk_version
7.docker_repository_name
8.Image_Name
9.Image_tag
Git_Repository
Git_Branch
Maven_Version
Mvn_Cmd
Target_Dir
jdk_version
docker_repository_name
Image_Name
Image_tag
pipeline {
agent any
stages {
stage('git clone') {
steps {
// pull代码
git branch: '${Git_Branch}', credentialsId: '4e096dfc-07eb-47bb-9206-f96147559654', url: '${Git_Repository}'
}
}
stage('build package') {
steps {
// mvn编译
sh '/var/lib/jenkins/${Maven_Version}/bin/${Mvn_Cmd}'
}
}
stage('build docker image') {
environment {
Package_Name = "${sh(script:'/server/scripts/get_java_info.sh', returnStdout: true)}"
}
steps {
//write Dockerfile
writeFile file: './Dockerfile', text: """FROM ${Java_Docker_Image_Base}
ADD ${Target_Dir}/$Package_Name /opt/
CMD [\'java\',\'-jar\','/opt/${Package_Name}']
"""
sh 'docker build -t harbor.rongbiz.net/${Repository_name}/${Image_Name}:${Image_Tag} .'
}
}
stage('push docker image') {
steps {
sh 'docker push harbor.rongbiz.net/${Repository_name}/${Image_Name}:${Image_Tag}'
sh 'echo harbor.rongbiz.net/${Repository_name}/${Image_Name}:${Image_Tag}'
}
}
stage('set message to wechat') {
steps {
// One or more steps need to be included within each condition's block.
qyWechatNotification mentionedId: 'ALL', mentionedMobile: '', webhookUrl: 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=59227166-2d6d-47bd-9c9a-6b6ce317cdef'
}
}
}
}
取jar包info信息的shell脚本
cat /server/scripts/get_java_info.sh
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/var/lib/jenkins/${Maven_Version}/bin
#PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/var/lib/jenkins/maven-3.8.6/bin
artifactId=$(mvn help:evaluate -Dexpression=project.artifactId |egrep -v "[INFO]")
version=$(mvn help:evaluate -Dexpression=project.version |egrep -v "[INFO]")
packaging=$(mvn help:evaluate -Dexpression=project.packaging |egrep -v "[INFO]")
echo $artifactId-$version.$packaging|xargs echo -n