为了提高开发效率,将繁琐的工程构建、工程打包以及工程部署等工作融合一体,集成自动化构建环境,这里我们引入DevOps思想,通过自动化部署工具一键部署。

环境准备

Docker

Jenkins

Gitee仓库

SpringBoot工程

构建步骤

  1. 安装docker

如果您的ECS或者虚拟机可以链接网络,可以直接使用yum源进行安装,如果属于专有云或者私有云可以使用离线安装的方式安装docker环境,具体安装可参考本博客中的如下文章

Linux环境安装、卸载Docker

Centos离线安装Docker

  1. 安装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环境了。

  1. 配置Jenkins环境

由于我们需要配置与Gitee(码云)代码库自动化构建集成,所以必须安装Gitee插件以及Maven Integration。

安装完成后,我们可以针对相应的Gitee仓库中的代码进行配置,笔者使用的是一个简单的SpringBoot Demo工程。

可以看到,这里做测试的SpingBoot工程,仅仅包含一个简单的接口,就是访问IP,直接返回 “hello jenkins”

接下来,为我们的Jenkins配置环境变量,我们需要配置JDK、Maven、Gitee库地址等。

首先、点击 系统管理->全局工具配置,进入该页面,对依赖工具进行配置。

JDK

进入上述jenkins 容器中输入如下命令,查看jdk安装路径

复制该路径,配置JDK环境变量

Maven

Gitee

点击 系统管理->系统配置,找到Gitee配置项,配置属于你自己的Gitee仓库


  1. 项目构建

上述我们配置完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


配置完成之后,点击保存,一个新的构建任务就此诞生了。

  1. 执行构建

我们返回构建列表,启动构建任务,第一次构建由于需要加载相应的依赖Jar包,所以时间比较长,需要耐心等待。

我们可以选择构建的版本号,查看相对应的日志信息,检查应用是否启动或者构建日志。

构建成功后,查看构建日志,我们不难发现Jenkins已经按照自动化流程进行构建,先拉取Gitee上的最新代码

拉取到最新代码后,然后进行Maven打包处理

最后执行shell命令将jar文件成功复制到 app目录下,并且启动应用。

应用成功启动,如上图日志,还可以查看Jenkins对应的jar文件目录是否存在。

这样,整个自动化构建就完成了,最后一步,我们可以访问下,应用是否已启动。

恭喜你,已经完成自动化构建。~~~

上述属于首次配置完成,接下来我来修改一下SpringBoot工程,将返回的信息改为“hello jenkins second modify boot !”,我们只需要修改完提交代码即可,Jenkins会自动去完成构建

当你将上述代码push后,jenkins会出发相应构建任务,如下图,可以看出Jenkins正在等待运行。

我们只需要等待1分钟后,再去访问相应的内容,就会发现我们刚才修改的内容已经发生改变。!

至此,Jenkins自动化配置就完成了,大家赶快去尝试吧!

更多互联网软件分享以及互联网书籍请查看========>免费软件书籍分享