一、介绍
1、Jenkins
Jenkins是一个独立的开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。前身是Hudson是一个可扩展的持续集成引擎。可用于自动化各种任务,如构建,测试和部署软件。
Jenkins特点:
- 开源免费;
- 跨平台,支持所有的平台;
- master/slave支持分布式的build;
- web形式的可视化的管理页面;
- 安装配置超级简单;
- tips及时快速的帮助;
- 已有的200多个插件
2、docker
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
本文介绍Jenkins的docker镜像从零开始构建一个基于docker镜像的持续集成环境,包含自动化构建、发布并部署的一个流程
二、环境配置
需要centos7系统安装的工具如下:
- jdk1.8
- maven3.6
- git2.3
- docker1.13 docker安装直达
- jenkins Jenkins安装直达
上面工具可自行安装,jdk、maven、git也可以后面通过jenkins自动安装。
1.安装maven打包插件进入:Jenkins>系统管理>插件管理>可选插件,搜索Maven Integration
进入到插件管理
等待安装,并进行重启
2.进行全局工具配置:Jenkins>系统管理>全局工具配置
jdk配置:没有的话可以选则自动安装,选择好版本就好了
我们可以通过docker inspect jenkins命令查看Jenkins的详细信息:查看JAVA_HOME路径,如下
"Env": [
"PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"LANG=en_US.UTF-8",
"LANGUAGE=en_US:en",
"LC_ALL=en_US.UTF-8",
"JAVA_VERSION=jdk8u262-b10",
"JAVA_HOME=/opt/java/openjdk",
"JENKINS_HOME=/var/jenkins_home",
"JENKINS_SLAVE_AGENT_PORT=50000",
"REF=/usr/share/jenkins/ref",
"JENKINS_VERSION=2.249.2",
"JENKINS_UC=https://updates.jenkins.io",
"JENKINS_UC_EXPERIMENTAL=https://updates.jenkins.io/experimental",
"JENKINS_INCREMENTALS_REPO_MIRROR=https://repo.jenkins-ci.org/incrementals",
"COPY_REFERENCE_FILE_LOG=/var/jenkins_home/copy_reference_file.log"
],
git配置
maven配置:
docker配置:
最后点击应用并保存。
三、开始新建任务
1.点击新建任务
2.任务的填写
3.任务配置
添加github仓库配置,其他仓库也是一样:
4.构建触发器配置:
5.build编译:
6.编译完成后执行部署操作
创建编译目录
#创建Dockerfile编译目录
[root@VM_21_126_centos ~] mkdir -p /opt/data/build
#设置目录权限
[root@VM_21_126_centos ~] chomd 777 /opt/data/build
编译build的shell命令
命令如下:
#将打包好的jar项目,移到/opt/data/build目录
#/var/jenkins_home/workspace/SpringBoot_AutoTest/target/jenkins-0.0.1-SNAPSHOT.jar构建好的jar路径
mv /var/jenkins_home/workspace/SpringBoot_AutoTest/target/jenkins-0.0.1-SNAPSHOT.jar /opt/data/build
#切换目录到/opt/data/build
cd /opt/data/build
#执行构建Dockerfile命令
docker build ./ -t my/demo
#停止之前的容器运行
docker stop demo
#删除之前的容器
docker rm demo
#运行刚刚创建的容器
docker run -d --name demo -p 8086:8086 my/demo
echo "构建完成"
最后点击应用保存
7.点击立即构建进行测试
8.点进去,查看构建进度
9.点击控制台输出 可以查看执行的日志,慢慢等待下载依赖并完成项目的编译部署
10.控制台日志如下,说明构建完成
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 46.623 s
[INFO] Finished at: 2020-10-12T12:48:54+08:00
[INFO] ------------------------------------------------------------------------
Waiting for Jenkins to finish collecting data
[JENKINS] Archiving /root/.jenkins/workspace/SpringBoot_AutoTest/pom.xml to com.example/jenkins/0.0.1-SNAPSHOT/jenkins-0.0.1-SNAPSHOT.pom
[JENKINS] Archiving /root/.jenkins/workspace/SpringBoot_AutoTest/target/jenkins-0.0.1-SNAPSHOT.jar to com.example/jenkins/0.0.1-SNAPSHOT/jenkins-0.0.1-SNAPSHOT.jar
channel stopped
[SpringBoot_AutoTest] $ /bin/sh -xe /opt/apache-tomcat-9.0.24/temp/jenkins5820289777233379491.sh
+ mv /root/.jenkins/workspace/SpringBoot_AutoTest/target/jenkins-0.0.1-SNAPSHOT.jar /var/jenkins_home/workspace/build
+ cd /var/jenkins_home/workspace/build
+ docker build ./ -t my/demo
Sending build context to Docker daemon 59.23 MB
Step 1/8 : FROM java:8u111
---> d23bdf5b1b1b
Step 2/8 : MAINTAINER linfen
---> Using cache
---> 0341c8c4ce58
Step 3/8 : VOLUME /var/run/docker.sock:/var/run/docker.sock
---> Using cache
---> f3a57b6ec6df
Step 4/8 : VOLUME /var/run/docker.sock:/var/run/docker.sock
---> Using cache
---> a8cfb9fd7442
Step 5/8 : ADD jenkins-0.0.1-SNAPSHOT.jar demo.jar
---> 1add2049f16e
Removing intermediate container 5a7dc8e208d1
Step 6/8 : EXPOSE 8086
---> Running in 3e3a527b5c6c
---> 02312ccc80fc
Removing intermediate container 3e3a527b5c6c
Step 7/8 : RUN bash -c 'touch /demo.jar'
---> Running in 049f3e7eb400
[91m[0m ---> d4caa4574ad3
Removing intermediate container 049f3e7eb400
Step 8/8 : ENTRYPOINT java -jar demo.jar
---> Running in 8c2cff195e82
---> c203f4de3442
Removing intermediate container 8c2cff195e82
Successfully built c203f4de3442
+ docker stop demo
demo
+ docker rm demo
demo
+ docker run -d --name demo -p 8086:8086 my/demo
678d071aec019437bdc78dbbfa620d05e45ea0ab715d2d5f1777adf5b90afd1a
+ echo 构建完成
构建完成
Finished: SUCCESS
日志太长,所以只截取一部分。
11.浏览器输入http://lcoalhost:8086,就可以看到我们最后的成果了。
四、配置Github提交代码时触发器自动构建代码
这里需要进行内网穿透或者使用外网服务器进行配置
1.打开Jenkins的GitHub的设置页面:系统管理>系统设置
2.找到Github,点击高级
3.开启webHook,然后把地址复制到剪切版,后面会用到,点击应用并保存
4.打开自己的项目Github地址,点击保存
5.填写刚才的的地址,选择push的时候触发构建事件
保存成功如下
5.修改代码,进行push到GitHub服务器,Jenkins出发构建事件实现代码构建。
(1)更新本地代码并提交
(2)查看Jenkins开始自动构建
完成教程。