作者:1076263105_69ae53 | 来源:互联网 | 2023-06-07 15:01
一、项目流程 Jenkins从git拉取指定tag代码Jenkins构建代码、镜像以及推送镜像到镜像库Jenkins通过PublishOverSSH通知远程服务器拉取镜像、远程服务
一、项目流程
- Jenkins从git拉取指定tag代码
- Jenkins构建代码、镜像以及推送镜像到镜像库
- Jenkins通过Publish Over SSH通知远程服务器拉取镜像、远程服务器通过镜像启动容器
二、实现流程
1、从代码仓中拉取Jenkinsfile文件
2、从git拉取指定tag代码
配置Git参数:
剩下的部分需要在Jenkinsfile中完成 。
3、构建代码、镜像以及推送镜像到镜像库
构建代码镜像中需要引入容器端口以及宿主机端口变量,这是在参数构建中进行设置:
剩下的部分则在Jenkinsfile文件中完成。
三、Jenkinsfile文件
pipeline {
// jenkins集群中的任一节点
agent any
// 存放所有任务集合
stages {
stage("拉取Git代码") {
steps {
checkout([$class: 'GitSCM', branches: [[name: '${tag}']], extensions: [], userRemoteConfigs: [[credentialsId: '6600bebe-4eec-4529-ac44-ef8', url: 'http://172.16.52.8/shenjianping/web_test.git']]])
}
}
stage("制作自定义镜像并且发布到Harbor") {
steps {
sh '''docker build -t 172.16.52.10:80/repo/${JOB_NAME}:$tag .
docker login -u shenjianping -p ****** 172.16.52.10:80
docker push 172.16.52.10:80/repo/${JOB_NAME}:$tag'''
}
}
stage("通知远程服务器拉取镜像,进行部署") {
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'server02', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''cd /usr/local/test
chmod a+x deploy.sh
./deploy.sh 172.16.52.10:80 repo ${JOB_NAME} $tag $host_port $container_port''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'deploy.sh')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}
}
}
在Jenkinsfile文件中有的固定值,如 172.16.52.10:80 镜像仓库等可以使用environment声明成全局变量然后通过${variableName}方式进行引用。
作者:iveBoy
出处:http://www.cnblogs.com/shenjianping/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。