当咱们应用传统的开发方式开发后盾零碎时,每写完一个性能点就须要从新运行一下我的项目,而后进行测试,如果是我的项目比拟小还能够,然而如果我的项目比拟大的话,因为波及的人员比拟多,这种开发方式就比拟麻烦。基于此,咱们就须要应用Jenkins配合Gitee搭建一个自动化部署平台,并将代码托管到服务器上,这样加重了本地的电脑压力,也解放了部署的流程。
1, 搭建Jenkins平台
首先,咱们须要搭建一下Jenkins自动化构建平台。首先,咱们须要装置Docker,而后在Docker中装置Jenkins,装置的命令如下:
# 装置yum-utils工具sudo yum install -y yum-utils device-mapper-persistent-data lvm2# 配置阿里云的Docker Yum源sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 装置Dockersudo yum install docker-ce docker-ce-cli containerd.io# 启动Dockersudo systemctl start docker# 配置开机自启动sudo systemctl enable docker
通过以上指令即可胜利装置Docker并启动,接下来咱们通过Docker运行Jenkins。
docker run \ -d \ --rm \ -u root \ -p 8080:8080 \ -v /home/jenkins-data:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /opt/develop_resource/apache-maven-3.6.3:/usr/local/maven \ -v "$HOME":/home \ jenkinsci/blueocean
执行上述指令Docker会主动拉取Jenkins的镜像并启动,因为咱们要部署的是SpringBoot,所以须要筹备JDK和Maven环境,不过该Jenkins镜像自带了JDK环境,只需筹备一下Maven即可,首先,下载Maven压缩包,命令如下:
wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
而后,应用命令解压文件。
tar -zxvf apache-maven-3.6.3-bin.tar.gz
解压之后千万要留神Maven所在的目录,比方:
/opt/develop_resource/apache-maven-3.6.3
将它挂载到容器的目录里,-v /opt/develop_resource/apache-maven-3.6.3:/usr/local/maven
这一条指令中的Maven目录千万记得换成本人的。当初,咱们能够运行方才的指令启动Jenkins了,通过docker ps
指令能够查看容器是否启动。
[root@10 /]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESdfa1b8b2c7a3 jenkinsci/blueocean "/sbin/tini -- /usr/…" 15 seconds ago Up 9 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 50000/tcp condescending_meitner
接下来,咱们应用服务器的ip加端口8080的形式拜访Jenkins。
管理员明码能够在Jenkins的启动日志中查看,应用docker logs dfa1b8b2c7a3查看日志:
明码就是红框中的字符串,留神红框下的一段提醒:
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
意思是你能够在/var/jenkins_home/secrets/initialAdminPassword这个文件中查看到管理员明码,不过这是Jenkins容器内的目录,咱们在启动Jenkins的就挂载了Jenkins的要害目录/var/jenkins_home,宿主机目录为/home/jenkins-data,所以能够应用如下指令查看管理员明码。
cat /home/jenkins-data/secrets/initialAdminPassword
失去明码后输出到Jenkins页面解锁Jenkins,而后点击装置举荐的插件。
接下来,间接点击【下一步】。
到这一步,Jenkins平台就能够正式应用了。
2, Jenkins平台配置
接下来,就是对Jenkins平台的配置,首先配置Maven。
按步骤点击,即可进入系统配置。首先,在全局属性中进行配置。
还记得咱们在运行Jenkins容器时挂载的Maven目录吗?挂载到Jenkins容器中的目录就是/usr/local/maven,如果切实搞不懂的你就放弃和我的配置一样即可。
以同样的形式,再新增一个配置:
PATH+EXTRA的作用是让原来PATH变量中的环境不失落,最初点击保留。Maven配置实现后,须要配置Gitee。
点击可选插件,选中Gitee,而后点击Install without restart进行装置,期待装置实现即可,Gitee的相干配置咱们放到前面讲。
3,创立SpringBoot利用
首先,咱们创立一个简略的SpringBoot利用进行测试,控制器代码如下。
@RestControllerpublic class HelloController { @GetMapping("/hello") public String hello(){ return "Hello World!"; }}
而后在配置文件application.yml中增加:
server: port: 8000
并在main下新建docker文件夹,在docker文件夹下新建Dockefile文件,内容如下。
# 指定是基于哪个根底镜像FROM java:8# 作者信息MAINTAINER wwj# 挂载点申明VOLUME /tmp# 将本地的一个文件或目录,拷贝到容器的文件或目录里ADD /target/demo-0.0.1-SNAPSHOT.jar springboot.jar#shell脚本RUN bash -c 'touch /springboot.jar'# 将容器的8000端口裸露,给内部拜访。EXPOSE 8000# 当容器运行起来时执行应用运行jar的指令ENTRYPOINT ["java", "-jar", "springboot.jar"]
须要留神的是ADD指令的编写,当SpringBoot利用打包实现后,其jar包会被放在target目录下。
所以须要指定该文件的地位,应用ADD指令将其放入待构建的容器中,接着在Gitee中新建一个仓库,并将代码推送到仓库中。
仓库名轻易你叫什么,而后将方才的利用推送下来即可。
4,Gitee配置
推送实现后,回到Jenkins治理界面,咱们来实现Gitee的配置,关上系统配置。
找到Gitee配置,填入对应的信息:
点击增加按钮增加一个Jenkins凭证。
抉择Gitee API 令牌:
私人令牌的获取地址为:https://gitee.com/profile/personal_access_tokens。
5, 新建自动化部署工作
配置实现,接下来新建一个工作,点击新建Item。
轻易输出一个工作名称,并抉择【Freestyle project】。
在源码管理处勾选Git,并填入我的项目地址,而后在构建触发器地位勾选触发打包的机会。
在构建触发器最底部地位点击生成Gitee WebHook明码。
而后关上Gitee我的项目中的WebHooks,增加webHook。
此处的URL须要填入一个公网IP,所以如果你是用的虚拟机,就须要用内网穿透工具映射一下。
至于URL应该填什么,咱们须要批改一下。
填写实现后点击增加,Gitee便会发送一个Post申请到Jenkins,如果申请后果如下所示,则配置胜利了。
从新回到Jenkins治理界面,持续勾选构建触发器下的轮询SCM,输出轮询频率。
最初在构建地位下减少构建步骤,抉择执行shell。
shell脚本代码如下。
#!/bin/bash -ildocker rm -f app_dockersleep 1docker rmi -f app_docker:1.0sleep 1mvn clean install -Dmaven.test.skip=truesleep 1docker build -t app_docker:1.0 -f ./src/main/docker/Dockerfile .sleep 1docker run -d -p 8000:8000 --name app_docker app_docker:1.0
该脚本示意删除正在运行的app_docker容器,并删除app_docker:1.0镜像,而后应用mvn命令打包从Gitee拉取来的我的项目代码,接着应用我的项目中的Dockerfile文件构建出一个镜像,名称为app_docker:1.0,最初运行该镜像。
6,打包测试
最初点击保留,部署工作就创立实现了,咱们来测试一下有没有问题。
点击立刻构建,Jenkins会立马进行一次构建,查看控制台输入。
最初,咱们关上默认的地址即可。