Jenkins+Docker+github+Spring Boot自动化部署

一、介绍

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

Jenkins+Docker+github+Spring Boot自动化部署_第1张图片

进入到插件管理

Jenkins+Docker+github+Spring Boot自动化部署_第2张图片

等待安装,并进行重启

2.进行全局工具配置:Jenkins>系统管理>全局工具配置

Jenkins+Docker+github+Spring Boot自动化部署_第3张图片

jdk配置:没有的话可以选则自动安装,选择好版本就好了

Jenkins+Docker+github+Spring Boot自动化部署_第4张图片

我们可以通过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配置

Jenkins+Docker+github+Spring Boot自动化部署_第5张图片

maven配置:

Jenkins+Docker+github+Spring Boot自动化部署_第6张图片

docker配置:

Jenkins+Docker+github+Spring Boot自动化部署_第7张图片

最后点击应用并保存。

三、开始新建任务

1.点击新建任务

Jenkins+Docker+github+Spring Boot自动化部署_第8张图片

2.任务的填写

Jenkins+Docker+github+Spring Boot自动化部署_第9张图片

3.任务配置

添加github仓库配置,其他仓库也是一样:

Jenkins+Docker+github+Spring Boot自动化部署_第10张图片

4.构建触发器配置:

Jenkins+Docker+github+Spring Boot自动化部署_第11张图片

5.build编译:

Jenkins+Docker+github+Spring Boot自动化部署_第12张图片

6.编译完成后执行部署操作

创建编译目录

#创建Dockerfile编译目录
[root@VM_21_126_centos ~] mkdir -p /opt/data/build
#设置目录权限
[root@VM_21_126_centos ~] chomd 777 /opt/data/build

编译build的shell命令

Jenkins+Docker+github+Spring Boot自动化部署_第13张图片

命令如下:

#将打包好的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.点击立即构建进行测试

Jenkins+Docker+github+Spring Boot自动化部署_第14张图片

8.点进去,查看构建进度

Jenkins+Docker+github+Spring Boot自动化部署_第15张图片

9.点击控制台输出 可以查看执行的日志,慢慢等待下载依赖并完成项目的编译部署

Jenkins+Docker+github+Spring Boot自动化部署_第16张图片

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,就可以看到我们最后的成果了。

Jenkins+Docker+github+Spring Boot自动化部署_第17张图片

四、配置Github提交代码时触发器自动构建代码

这里需要进行内网穿透或者使用外网服务器进行配置

1.打开Jenkins的GitHub的设置页面:系统管理>系统设置

Jenkins+Docker+github+Spring Boot自动化部署_第18张图片

2.找到Github,点击高级

Jenkins+Docker+github+Spring Boot自动化部署_第19张图片

3.开启webHook,然后把地址复制到剪切版,后面会用到,点击应用并保存

Jenkins+Docker+github+Spring Boot自动化部署_第20张图片

4.打开自己的项目Github地址,点击保存

Jenkins+Docker+github+Spring Boot自动化部署_第21张图片

5.填写刚才的的地址,选择push的时候触发构建事件

Jenkins+Docker+github+Spring Boot自动化部署_第22张图片

保存成功如下

Jenkins+Docker+github+Spring Boot自动化部署_第23张图片

5.修改代码,进行push到GitHub服务器,Jenkins出发构建事件实现代码构建。

(1)更新本地代码并提交

Jenkins+Docker+github+Spring Boot自动化部署_第24张图片

(2)查看Jenkins开始自动构建

Jenkins+Docker+github+Spring Boot自动化部署_第25张图片

完成教程。

 

 

 

你可能感兴趣的:(docker)