一、实现目标
通过在Jenkins中创建流水线任务,编写流水线脚本以实现自动化构建和部署SpringBoot项目。流水线脚本主要实现以下几个步骤:
- Preparation:从gitee上拉取远程仓库的SpringBoot项目代码。
- Build:使用Maven对拉取的代码进行构建出jar包。
- Image:再用构建出来的jar包通过docker来制作镜像,并推送到registry私有镜像仓库。
- Deploy:从registry私有镜像仓库拉取镜像并在服务器上运行。
二、前期准备
(1)环境准备
需要准备台linux服务器或者虚拟机,用于项目的部署以运行。服务器上还需要提前安装好Maven、Git、JDK等。
(2)Jenkins插件安装
Jenkins要完成自动化构建和部署还需要依赖一些插件来共同完成,可以在插件管理里面搜索需要的插件进行安装,常用到的插件有以下几个:
- Git:Git插件是必要的,因为它允许Jenkins与Git仓库进行交互,从而实现代码的自动拉取。
- Maven Integration:用于在Jenkins中建立对Maven项目的支持,它能够识别Maven项目并执行Maven的生命周期命令,如clean, test, package, install等。
- Publish Over SSH:通过SSH协议将部署文件推送到服务器上。
- Pipeline: Stage View:通过一个可视化的界面来定义和管理他们的Jenkins流水线。
三、配置SSH服务器
配置SSH remote hosts的主要目的是允许Jenkins通过SSH连接到远程服务器,并在该服务器上执行命令或脚本。这通常用于在构建或部署过程中执行一些需要在远程服务器上完成的任务,比如运行测试、部署应用程序等。
(1)在Jenkins的主界面左侧点击“系统管理”菜单下的“系统配置”。
(2)滚动到“Publish over SSH”部分,点击“新增”按钮来添加一个新的SSH服务器配置。
(3)输入SSH服务器配置信息并保存。
三、全局工具配置
在左侧菜单“系统管理”中选择全局工具配置,进行Maven、Jdk、以及Git相关配置。
3.1 Maven配置及安装
(1)启动Jenkins容器时挂载到容器中的maven路径为:-v /usr/local/src/maven/apache-maven-3.9.6/:/usr/local/src/maven/
。选择文件系统中的settings文件,然后把挂载到容器中的Maven目录下的setting文件的全路径添加到文件路径中。
(2)在Maven 安装里面,新增Maven,不要勾选自动安装,然后在MAVEN_HOME中配置挂载到容器中的Maven的路径。
3.2 Jdk安装
由于启动Jenkins容器时会指定容器中默认的jdk运行环境,直接使用默认的jdk环境就好,这里就不做修改。
3.3 Git配置
启动Jenkins容器时会指定容器中默认的git运行环境,这里也直接使用默认的git,不要勾选自动安装。然后在Path to Git executable里面的路径配置容器中具体的git执行文件,可以进入到容器中,通过命令which git
来查看具体的git执行文件路径。
3.4 环境变量配置
在系统管理-系统配置-全局属性里面找到环境变量,将Maven的环境变量配置上去。
四、新建任务
在左侧菜单栏中,点击新建任务后跳转到任务创建页面,输入任务名称,选择任务风格后点击确定就能创建对应的任务。
五、任务配置
在任务配置页面进行任务的相关配置,这里主要是对流水线任务的pipeline脚本进行编写,这个脚本也是任务能否执行成功的关键。脚本内容主要分以下基本:
5.1 拉取代码
(1)使用jenkins自带的脚本生成器来生成拉取代码的语法。
(2)生成的拉取代码语法复杂到pipeline脚本中。
stage('Preparation') {
steps {
echo '准备拉取代码'
git credentialsId: '1', url: 'https://gitee.com/xxxx/web_demo_freestyle.git'
echo '代码拉取成功'
}
}
(3)代码拉取成功后,拉取的代码会存放在jenkins_home
目录下的workspace
目录中对应的任务名
命名的目录中。
5.2 构建代码
stage('Build') {
steps {
// 先检查下Maven是否配置好
sh "mvn --version"
echo '准备构建代码'
sh "mvn package -Dmaven.test.skip=true"
echo '代码构建成功'
}
}
代码构建成功后会jenkins_home
目录下的workspace
目录中对应的任务名
命名的目录,在该目录中会存放构建项目的源码以及maven构建后生成的jar包,后续制作镜像时都是从workspace
目录中对应的任务名
命名的目录中去拉取的。
5.3 制作镜像
(1)在项目的根目录下创建个Dockerfile文件,并编辑内容如下:
FROM openjdk:8
MAINTAINER njh
ADD web_demo_freestyle-0.0.1-SNAPSHOT.jar ~/app.jar
EXPOSE 8088
ENTRYPOINT ["java","-jar","~/app.jar"]
(2)通过流水线语法中的片段生成器来生成上传jar包以及Dockerfile文件到服务器中。此时的工作路径是在workspace
目录中对应的任务名
命名的目录下。
cd /root/jenkins
chmod 777 Dockerfile
docker build -t 127.0.0.1:5005/app:v1 .
docker push 127.0.0.1:5005/app:v1
(4)将生成的语法复制打流水线脚本:
5.4 部署服务
(1)通过流水线语法生成启动镜像容器的命令。
(2)将生成的语法复制到流水线脚本中。
五、执行任务
(1)点击任务右侧的执行按钮开始执行这个任务,在构建历史中可以看到正在执行的任务。
(2)点击正在执行的任务编号,到任务信息页面,点击控制台输出就可以看到任务执行的日志信息。
(3)任务执行完成后,可以在日志中看到BUILD SUCCESS
。
(4)流水线任务执行完成后,查看服务器上项目是否正常运行。