Jenkins Pipeline 流水线方式部署 SpringBoot 项目1:https://developer.aliyun.com/article/1394466
四、Git Pull Code
我们做第一步,就是编写一个Jenkins 脚本,拉取 Github 上的代码。
pipeline { agent any stages { stage('git pull 拉取代码') { steps { // Get some code from a GitHub repository git branch: 'main', credentialsId: 'b6013989-c0b0-4511111111f7', url: 'https://github.com/ningzaichun/hello-springboot' } } stage('编译构建') { steps { echo '编译构建' } } stage('项目部署') { steps { echo '项目部署' } } } }
这样的执行结果应当如下:
相关日志说明:
但其实这一栏还有许多可以配置的东西,但是目前没用上,就暂且不说,等到后来用上,再去查文档和检索。
五、Maven 编译
我们在上一个步骤中增加一个步骤,即增加一个 stage(){}
最简单的编译构建方式莫过于maven clean package
哈哈
pipeline { agent any stages { stage('git pull 拉取代码') { steps { // Get some code from a GitHub repository git branch: 'main', credentialsId: 'b6013989-c0b0-11-b11133bf7', url: 'https://github.com/ningzaichun/hello-springboot' } } stage('编译构建') { steps { sh label: '', script: 'mvn clean package' } } stage('项目部署') { steps { echo '项目部署' } } } }
执行结果应当如下:
在日志中也是可以看到我们已经构建成功啦
六、打包镜像,发布至镜像仓库
编译成功后,就是打包成镜像
在helloSpringBoot的项目中,我有编写了一个十分简单的Dockerfile文件的,如下:
FROM java:8 WORKDIR app COPY target/*.jar app.jar CMD ["java", "-jar", "app.jar"]
我们可以利用这个Dockerfile 来进行Docker打包
docker 一些基础命令,我就不再提起了,
如果有不太了解Dockerfile编写的小伙伴,可以看看这篇文章☞:Dockerfile
如果是对docker 一些命令不是非常熟悉的小伙伴,可以看这篇☞:Docker 基本命令
pipeline { agent any stages { stage('git pull 拉取代码') { steps { // Get some code from a GitHub repository git branch: 'main', credentialsId: 'b6013111113bf7', url: 'https://github.com/ningzaichun/hello-springboot' } } stage('编译构建') { steps { sh label: '', script: 'mvn clean package' } } stage('清除旧镜像及容器') { steps { //定义镜像名称 // 构建之前,需要先删除原有的镜像 sh "docker rm -f hellonzc" sh "docker rmi -f hellospringboot:v0.0.1" sh "docker rmi -f registry-vpc.cn-heyuan.aliyuncs.com/ningzaichun/jenkins:v0.0.1" } } stage('构建与发布镜像') { steps { //编译,构建本地镜像 sh "mvn clean package" sh "docker build -t hellospringboot:v0.0.1 . " // 登录阿里云镜像 sh "docker login --username=nzc1115 --password=1111111 registry-vpc.cn-heyuan.aliyuncs.com" sh " docker tag hellospringboot:v0.0.1 registry-vpc.cn-heyuan.aliyuncs.com/ningzaichun/jenkins:v0.0.1" //发布镜像 sh " docker push registry-vpc.cn-heyuan.aliyuncs.com/ningzaichun/jenkins:v0.0.1" } } } }
执行结果:
相关日志:
七、拉取镜像,运行容器
就是再多个步骤罢了~
pipeline { agent any stages { stage('git pull 拉取代码') { steps { // Get some code from a GitHub repository git branch: 'main', credentialsId: 'b60111111133bf7', url: 'https://github.com/ningzaichun/hello-springboot' } } stage('编译构建') { steps { sh label: '', script: 'mvn clean package' } } stage('清除旧镜像及容器') { steps { //定义镜像名称 // 构建之前,需要先删除原有的镜像 sh "docker rm -f hellonzc" sh "docker rmi -f hellospringboot:v0.0.1" } } stage('构建与发布镜像') { steps { //编译,构建本地镜像 sh "mvn clean package" sh "docker build -t hellospringboot:v0.0.1 . " // 登录阿里云镜像 sh "docker login --username=nzc15 --password=11113 registry-vpc.cn-heyuan.aliyuncs.com" sh " docker tag hellospringboot:v0.0.1 registry-vpc.cn-heyuan.aliyuncs.com/ningzaichun/jenkins:v0.0.1" //发布镜像 sh " docker push registry-vpc.cn-heyuan.aliyuncs.com/ningzaichun/jenkins:v0.0.1" } } stage('运行容器') { steps { sh "docker rmi -f registry-vpc.cn-heyuan.aliyuncs.com/ningzaichun/jenkins:v0.0.1" sh " docker pull registry-vpc.cn-heyuan.aliyuncs.com/ningzaichun/jenkins:v0.0.1" sh "docker run -d -p 8080:8080 --name hellonzc registry-vpc.cn-heyuan.aliyuncs.com/ningzaichun/jenkins:v0.0.1" } } } }
补充:
关于脚本中构建好本地镜像,在拉取前又删除本地镜像,再拉取的矛盾问题,
- 其实我就是将命令效果全部展示出来,
- 另一方面就是如果是要部署到其他服务器上的话,
- 这条命令再加上另一台服务器的信息,就是可以用上的啦。
执行结果:
相关日志:
小结:
其实如果是看过我那篇Maven部署的朋友,应该能够感受到,在这篇文章中,好像pipeline好像和那篇文章差不多,可能这篇还更显繁琐。
我要说明,这篇文章顶多是pipeline流水线任务的入门篇,看一眼大概,知道有pipeline任务,它的优势更多的体现在多任务构建,微服务构建,还有源码存储jenkins Pipeline 脚本文件等等
以单体项目来执行,可能没法完全体现它的优势,并且我也没有弄它的最佳实践,所以可能看完会略显失望。
慢慢来啦~,这个东东详细说起来,也没有大家想象的那么简短
后记
首先还是要对之前到这个系列文章的小伙伴,说一句抱歉,非常不好意思。
因为我个人的疏忽错误,导致对照着前面文章安装环境的小伙伴,来看这篇文章进行实操时,仍然需要重新搭建一遍实操环境。
对此感到十分抱歉,希望各位读者能够见谅,前文我也已经修正错误,同时也希望大家继续支持这个专栏,给予我一些正向反馈。
做的不好的地方也请各位读者、朋友、小伙伴能够及时指出,非常感谢各位!
如存有疑问,也请大家友善留言,我会在看到的第一时间尽快回复你。