
yyy boot项目 Jenkins流水线
node {
def network = "yyy" // 容器网络
// def publish_parameter ="-p#2828:2828" //运行命令的参数部分
// def server = "s1"
def mvnHome // maven工具路径
def javaHome // java工具路径
def projcetUrl = 'https://www.itzaj.com:325/kh/hswl/boot3.git' // 项目地址
def projectBranch = 'master'
def packageVersion = "${BUILD_NUMBER}" // 项目版本
def harbor_url = "www.itzaj.com:338" //Harbor私服地址
def harbor_username = "root" //Harbor的用户名
def harbor_password = "DFgo1234...." //Harbor的密码
def harbor_project_name = "yyy" //Harbor的项目名称
def serverArray = "${server}".split(',')
// def packageName = "archer-boot"
// def packageEnv = "prod"
stage('引用全局工具') { // for display purposes
mvnHome = tool 'MAVEN3'
javaHome = tool 'JDK8'
}
stage('拉取代码') {
checkout scmGit(branches: [[name: "*/${projectBranch}"]], extensions: [], userRemoteConfigs: [[credentialsId: 'd5f3ef0f-e6bb-4871-986f-1723c3b7ea64', url: "${projcetUrl}"]])
}
withEnv(["JAVA_HOME=$javaHome","MVN_HOME=$mvnHome"]) {
stage('maven打包') {
sh "$mvnHome/bin/mvn clean install -DskipTests -U"
}
stage('构建镜像') {
//构建镜像
sh "docker build -t ${packageName} --build-arg JAR_ENV=${packageEnv} -f ./ops/Dockerfile ."
}
stage('推送镜像') {
//给镜像打标签
sh "docker tag ${packageName}:latest ${harbor_url}/${harbor_project_name}/${packageName}:${packageVersion}"
//登录私服
sh "docker login ${harbor_url} -u${harbor_username} -p${harbor_password}"
//推送镜像
sh "docker push ${harbor_url}/${harbor_project_name}/${packageName}:${packageVersion}"
}
stage('清理本地镜像') {
//删除镜像
sh "docker rmi ${harbor_url}/${harbor_project_name}/${packageName}:${packageVersion}"
sh "docker rmi ${packageName}:latest"
}
//}
}
stage('发布') {
def remoteCommand = """
sh /data/jenkins_publish_1.sh ${packageName} ${packageVersion} ${harbor_url} ${harbor_project_name} ${harbor_username} ${harbor_password} ${publish_parameter} ${network} ${packageEnv}
"""
echo remoteCommand
for(int i=0;i<serverArray.size();i++){
def currentServer = serverArray[i]
sshPublisher(publishers: [sshPublisherDesc(configName: "${currentServer}", verbose: true, transfers: [sshTransfer(cleanRemote: false, execCommand: remoteCommand)])])
}
}
}
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员HoneyZ
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果