Jenkins与Docker的自动化CI/CD流水线实战

在互联网时代,对于每一家公司,软件开发和发布的重要性不言而喻,目前已经形成一套标准的流程,最重要的组成部分就是持续集成(CI)及持续部署、交付(CD) 。本文基于Jenkins+Docker+Git实现一套CI自动化发布流程 。
1、发布流程设计

Jenkins与Docker的自动化CI/CD流水线实战

文章插图
 

Jenkins与Docker的自动化CI/CD流水线实战

文章插图
 
工作流程:
1.开发人员提交代码到Git版本仓库;
2.Jenkins人工/定时触发项目构建;
3.Jenkins拉取代码、代码编码、打包镜像、推送到镜像仓库;
4.Jenkins在Docker主机创建容器并发布 。
环境规划如下:
角色IP
Jenkins/Docker 192.168.0.13
Docker 192.168.0.14
Git/Registry 192.168.0.15
操作系统:centos7.5
systemctl stop firewalld
setenforce 0
yum install -y ntpdate
ntpdate time.windows.com
2、部暑git仓库1、创建Git用户并设置密码
# yum install -y git
2、创建Git用户并设置密码
# useradd git
# passwd git
3、创建仓库
# su - git
# mkdir solo.git
# cd solo.git
# git --bare init
4、访问这个仓库
# git clone git@192.168.0.15:/home/git/solo.git
3、准备jenkins环境Jenkins是一个开源软件项目,是基于JAVA开发的一种持续集成工具,用于代码编译、部署、测试等工作 。Jenkins也是一个跨平台的,大多数主流的平台都支持,而且安装很简单,我们这里以部署war包方式安装它 。
官网下载地址:
https://jenkins.io/download/
如图点击下载最后一个Generic Java package(war):
Jenkins与Docker的自动化CI/CD流水线实战

文章插图
 
在安装前需要具备Java环境,安装方式如下:
# tar -xzf jdk-8u45-linux-x64.tar.gz
# mv jdk1.8.0_45/ /usr/local/jdk1.8
# vi /etc/profile
JAVA_HOME=/usr/local/jdk1.8
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH
# source /etc/profile
# java -version
在192.168.0.13主机安装Jenkins,下载Tomcat二进制包将war包到webApps下即可:
# wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
# tar -xzf Apache-tomcat-8.5.31.tar.gz
# mv apache-tomcat-8.5.31 /usr/local/tomcat-jenkins
# rm /usr/local/tomcat-jenkins/webapps/* -rf
# unzip jenkins.war -d /usr/local/tomcat-jenkins/webapps/ROOT
# cd /usr/local/tomcat-jenkins/bin/
# ./startup.sh
# tail ../logs/catalina.out -f
...
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
063de6a478ac44fb8d807a8a46313e38
This may also be found at: /root/.jenkins/secrets/initialAdminPassword
部署成功,访问Jenkins:http://192.168.0.13:8080
第一步:输入上面日志输出的密码:
063de6a478ac44fb8d807a8a46313e38
,或者从本机
/root/.jenkins/secrets/initialAdminPassword文件获取,点击继续
第二步:点击“选择插件来安装”
第三步:保持默认,点击继续
第四步:创建管理员用户,保存并完成
第五步:设置Jenkins访问地址,保持默认,点击保存完成
安装完成,开始使用Jenkins:
Jenkins与Docker的自动化CI/CD流水线实战

文章插图
 
4、安装docker在
192.168.0.13/192.168.0.14/192.168.0.15主机安装Docker,如下:
1、安装依赖包
# yum install -y yum-utils device-mapper-persistent-data lvm2
2、添加Docker软件包源:
# yum-config-manager
--add-repo
https://download.docker.com/linux/centos/docker-ce.repo
3、安装Docker CE
# yum install docker-ce -y
4、配置加速器
# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://bc437cce.m.daocloud.io
5、启动并开机启动
# systemctl start docker
# systemctl enable docker
5、部署私有镜像仓库Docker Hub作为Docker默认官方公共镜像;如果想自己搭建私有镜像仓库,官方也提供registry镜像,使得搭建私有仓库非常简单 。
在192.168.0.15部署:
# docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry
接下来测试registry可用性 。
由于Docker CLI默认以HTTPS访问,而部署的registry并未提供HTTPS,因此,需要在pull镜像的Docker主机(192.168.0.13,192.168.0.14)添加HTTP可信任:
# vi /etc/docker/daemon.json


推荐阅读