- A+
为了提高开发效率,将繁琐的工程构建、工程打包以及工程部署等工作融合一体,集成自动化构建环境,这里我们引入DevOps思想,通过自动化部署工具一键部署。
环境准备
Docker
Jenkins
Gitee仓库
SpringBoot工程
构建步骤
- 安装docker
如果您的ECS或者虚拟机可以链接网络,可以直接使用yum源进行安装,如果属于专有云或者私有云可以使用离线安装的方式安装docker环境,具体安装可参考本博客中的如下文章
- 安装Jenkins镜像
安装完docker环境后,可使用docker先进行Jenkins镜像源查询
docker search jenkins
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
jenkins Official Jenkins Docker image 4774 [OK]
jenkins/jenkins The leading open source automation server 2042
jenkinsci/blueocean https://jenkins.io/projects/blueocean 520
jenkinsci/jenkins Jenkins Continuous Integration and Deliver... 382
jenkins/jnlp-slave a Jenkins agent which can connect to Jenki... 127 [OK]
jenkinsci/jnlp-slave A Jenkins slave using JNLP to establish co... 124 [OK]
jenkinsci/slave Base Jenkins slave docker image 64 [OK]
jenkins/slave base image for a Jenkins Agent, which incl... 42 [OK]
jenkinsci/ssh-slave A Jenkins SSH Slave docker image 41 [OK]
cloudbees/jenkins-enterprise CloudBees Jenkins Enterprise (Rolling rele... 34 [OK]
jenkins/ssh-slave A Jenkins slave using SSH to establish con... 29 [OK]
xmartlabs/jenkins-android Jenkins image for Android development. 27 [OK]
h1kkan/jenkins-docker 🤖 Extended Jenkins docker image, bundle... 26
bitnami/jenkins Bitnami Docker Image for Jenkins 24 [OK]
openshift/jenkins-2-centos7 A Centos7 based Jenkins v2.x image for use... 22
cloudbees/jenkins-operations-center CloudBees Jenkins Operation Center (Rollin... 14 [OK]
vfarcic/jenkins-swarm-agent Jenkins agent based on the Swarm plugin 8 [OK]
openshift/jenkins-slave-base-centos7 A Jenkins slave base image. DEPRECATED: se... 7
publicisworldwide/jenkins-slave Jenkins Slave based on Oracle Linux 5 [OK]
trion/jenkins-docker-client Jenkins CI server with docker client 5 [OK]
openshift/jenkins-1-centos7 DEPRECATED: A Centos7 based Jenkins v1.x i... 4
ansibleplaybookbundle/jenkins-apb An APB which deploys Jenkins CI 1 [OK]
amazeeio/jenkins-slave A jenkins slave that connects to a master ... 0 [OK]
mashape/jenkins Just a jenkins image with the AWS cli adde... 0 [OK]
jameseckersall/jenkins docker-jenkins (based on openshift jenkins... 0 [OK]
这里笔者使用的是第二个 jenkins/jenkins
//拉取jenkins镜像
docker pull jenkins/jenkins
//下载成功后,查询镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jenkins/jenkins latest 0709618f99e4 5 days ago 649.4 MB
拉取镜像后,我们就可以开始启动Jenkins镜像了。
docker run -idt --name my-jenkins -p 80:8001 -p 8009:8009 -p 8080:8080 -p 50000:50000 -v jenkins_data:/var/jenkins_home/ jenkins/jenkins
-idt 表示后台启动
--name 为jenkins起一个漂亮的名字
-p 指定宿主机与docker容器映射端口
-v 设置jenkins文件挂载点
jenkins/jenkins 镜像名称
启动后,通过端口号127.0.0.1:8080访问,如下图:
出现上述页面后,稍微等3-5分钟,等待Jenkins初始化。初始化完成后,如下图:
按照上述提示信息去docker容器内的/var/jenkins_home/secrets/initialAdminPassword目录下查找密码,进行下一步。
选择安装推荐的插件,安装时间可能比较长,请耐心等待。如果第一次安装插件出现很多失败的,继续进行重试安装,直到全部插件安装成功为止。如下:
安装完成后就会跳到用户注册页面,我们可以为自己的Jenkins创建一个喜欢的用户名,如下图:
注册完成后,设置自己Jenkins得到实例路径,笔者直接使用默认路径,即IP + 端口号
点击保存并完成就配置好自己的Jenkins环境了。
- 配置Jenkins环境
由于我们需要配置与Gitee(码云)代码库自动化构建集成,所以必须安装Gitee插件以及Maven Integration。
安装完成后,我们可以针对相应的Gitee仓库中的代码进行配置,笔者使用的是一个简单的SpringBoot Demo工程。
可以看到,这里做测试的SpingBoot工程,仅仅包含一个简单的接口,就是访问IP,直接返回 “hello jenkins”
接下来,为我们的Jenkins配置环境变量,我们需要配置JDK、Maven、Gitee库地址等。
首先、点击 系统管理->全局工具配置,进入该页面,对依赖工具进行配置。
JDK
进入上述jenkins 容器中输入如下命令,查看jdk安装路径
复制该路径,配置JDK环境变量
Maven
Gitee
点击 系统管理->系统配置,找到Gitee配置项,配置属于你自己的Gitee仓库
- 项目构建
上述我们配置完Jenkins环境后,就可以动手配置一个新的构建项目了。
构建一个名叫SpringBoot-test的项目,通用配置里会自动选上上述配置Gitee仓库名称
接下来,我们配置Gitee代码库,注意这里一定要把自己的Gitee用户名和密码输入正确,否则无法找到仓库。
再往下,配置Gitee WebHook 触发器
注意上述,点击生成后复制该密码去Gitee代码库配置有关内容。
找到相应代码库,点击WebHooks 进行添加触发信息。
输入上述Jenkins触发器中生成的密码和url,点击添加。
添加后,点击测试,检查请求是否准确无误。
配置完成之后,我们需要设置maven在打包完成后需要执行的一些shell脚本。注意:这里是打包完成后,也就是配置Post_Steps。
这里笔者整理了一些通用的脚本,可供参考,可针对自己的项目进行修改。
#!/bin/bash
#服务名称
SERVER_NAME=mxblog
# 源jar路径,mvn打包完成之后,target目录下的jar包名称,这里使用jar包,用java -jar 命令执行
JAR_NAME=mxblog
# 源jar路径
#/usr/local/jenkins_home/workspace--->jenkins 工作目录
#target 打包生成jar包的目录
JAR_PATH=/var/jenkins_home/workspace/mxblog/target
echo "查询进程id-->$SERVER_NAME"
PID=`ps -ef | grep "$SERVER_NAME" | awk '{print $2}'`
echo "得到进程ID:$PID"
echo "结束进程"
for id in $PID
do
kill -9 $id
echo "killed $id"
done
echo "结束进程完成"
cd $JAR_PATH
#修改文件权限
chmod 755 $JAR_NAME.jar
echo "启动应用..."
BUILD_ID=dontKillMe nohup java -jar $JAR_NAME.jar > mxblog.log &
if [ $? = 0 ];then
sleep 30
tail -n 1000 mxblog.log
fi
配置完成之后,点击保存,一个新的构建任务就此诞生了。
- 执行构建
我们返回构建列表,启动构建任务,第一次构建由于需要加载相应的依赖Jar包,所以时间比较长,需要耐心等待。
我们可以选择构建的版本号,查看相对应的日志信息,检查应用是否启动或者构建日志。
构建成功后,查看构建日志,我们不难发现Jenkins已经按照自动化流程进行构建,先拉取Gitee上的最新代码
拉取到最新代码后,然后进行Maven打包处理
最后执行shell命令将jar文件成功复制到 app目录下,并且启动应用。
应用成功启动,如上图日志,还可以查看Jenkins对应的jar文件目录是否存在。
这样,整个自动化构建就完成了,最后一步,我们可以访问下,应用是否已启动。
恭喜你,已经完成自动化构建。~~~
上述属于首次配置完成,接下来我来修改一下SpringBoot工程,将返回的信息改为“hello jenkins second modify boot !”,我们只需要修改完提交代码即可,Jenkins会自动去完成构建
当你将上述代码push后,jenkins会出发相应构建任务,如下图,可以看出Jenkins正在等待运行。
我们只需要等待1分钟后,再去访问相应的内容,就会发现我们刚才修改的内容已经发生改变。!
至此,Jenkins自动化配置就完成了,大家赶快去尝试吧!
更多互联网软件分享以及互联网书籍请查看========>免费软件书籍分享
- 我的微信
- 加好友一起交流!
-
- 微信公众号
- 关注公众号获取分享资源!
-