Jenkins持续集成与持续交付

1.Jenkins介绍

Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。
Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。
CI(Continuous integration持续集成)持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。
CD(Continuous Delivery持续交付) 是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。

2.Jenkins安装

(1)获取java软件包和jenkins软件包,安装(先装java包,再装jenkins包)并启动jenkins
Jenkins持续集成与持续交付_第1张图片
jenkins默认开启的端口是8080
Jenkins持续集成与持续交付_第2张图片
(2)访问: http://172.25.12.6:8080
使用初始密码登录:cat /var/lib/jenkins/secrets/initialAdminPassword
Jenkins持续集成与持续交付_第3张图片
Jenkins持续集成与持续交付_第4张图片
Jenkins持续集成与持续交付_第5张图片
(3)更新插件源:

vim  /var/lib/jenkins/hudson.model.UpdateCenter.xml 	##修改更新中心


  
    default
    https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
  

cd /var/lib/jenkins/updates
sed -i.bak 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json
sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

Jenkins持续集成与持续交付_第6张图片
Jenkins持续集成与持续交付_第7张图片
修改default.json文件中的下载源为清华网站,谷歌改为百度
Jenkins持续集成与持续交付_第8张图片
(4)改好后,重新访问 http://172.25.12.6:8080,拿到程序员管理密码,选择社区推荐安装
在这里插入图片描述
Jenkins持续集成与持续交付_第9张图片
Jenkins持续集成与持续交付_第10张图片
Jenkins持续集成与持续交付_第11张图片
Jenkins持续集成与持续交付_第12张图片
Jenkins持续集成与持续交付_第13张图片
Jenkins持续集成与持续交付_第14张图片

3.jenkins使用

实验环境:
server5(172.25.12.5)作gitlab私有仓库
server6(172.25.12.6) 作jenkins服务端

3.1 gitlab手动实现jenkins触发构建

(1)新建一个自由风格任务:
Jenkins持续集成与持续交付_第15张图片
(2)在源码管理出选择git,输入仓库位置
Jenkins持续集成与持续交付_第16张图片
(3)添加访问git仓库的私钥
Jenkins持续集成与持续交付_第17张图片
点击添加选择jenkins后,类型选择SSH,username填root,在server5上粘贴私钥
Jenkins持续集成与持续交付_第18张图片
此时还是无法连接是因为server6上没有安装git工具命令
Jenkins持续集成与持续交付_第19张图片
安装git后,连接正常
在这里插入图片描述
Jenkins持续集成与持续交付_第20张图片
*/mster是版本的主分支,已经默认就有的,用来控制代码的来源
(4)定义轮询间隔,有更新时触发jenkins构建
Jenkins持续集成与持续交付_第21张图片
(5)构建选择执行shell命令
命令执行ls -l:抓回数据后进行列出
Git提交代码到gitlab,jinkens轮询检测到代码仓库的变更,触发构建
Jenkins持续集成与持续交付_第22张图片
控制台管理通过git克隆远程仓库目录,数据克隆到本地,最后执行一个ls -l
Jenkins持续集成与持续交付_第23张图片
Jenkins持续集成与持续交付_第24张图片
Jenkins持续集成与持续交付_第25张图片
(6)验证
在server6上的/var/lib/jenkins/workspace/demo下可以查看到来自于远端私有仓库的数据
Jenkins持续集成与持续交付_第26张图片

3.2 用容器化方式构建

(1)在server6上安装docker-ce,并启动docker·
Jenkins持续集成与持续交付_第27张图片
在这里插入图片描述
(2)去除警告(docker info)

vim /etc/sysctl.d/bridge.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
sysctl --system	##使配置生效

Jenkins持续集成与持续交付_第28张图片
(3)测试镜像

docker pull nginx
docker run -d --name web nginx
docker inspect web	##获取到docker地址172.17.0.2
curl 172.17.0.2	##可以访问到nginx,说明镜像可以正常使用
docker rm -f web ##删除容器web,保证实验环境纯净

Jenkins持续集成与持续交付_第29张图片
在这里插入图片描述
Jenkins持续集成与持续交付_第30张图片
在这里插入图片描述
上边实验都是手工来做,现在让jenkins来自动做这件事
(1)在server5上的demo目录下推送一个index.html文件到远程仓库
Jenkins持续集成与持续交付_第31张图片
Jenkins持续集成与持续交付_第32张图片
(2)在demo目录下编辑Dockerfile,将当前页面index.html复制到nginx默认发布目录中去
跟踪Dockerfile文件添加到暂存区中,递交Dockerfile推送到远程仓库
Jenkins持续集成与持续交付_第33张图片
在这里插入图片描述
(3)在浏览器上查看
#1,#2,#3,都是构建号,查看第三次构建输出中有Dockerfile
Jenkins持续集成与持续交付_第34张图片
Jenkins持续集成与持续交付_第35张图片
根据dockerfile构建镜像
返回demo项目,点击插件管理,选择可选插件,找到与dockerfile相关的插件,直接安装
Jenkins持续集成与持续交付_第36张图片
Jenkins持续集成与持续交付_第37张图片
Jenkins持续集成与持续交付_第38张图片
在server6上搭建docker仓库

curl localhost:5000/v2/_catalog	##仓库是空的

Jenkins持续集成与持续交付_第39张图片
Jenkins持续集成与持续交付_第40张图片
Jenkins持续集成与持续交付_第41张图片
在这里插入图片描述
上传busybox镜像,表示仓库可用
Jenkins持续集成与持续交付_第42张图片
连接docker时有权限问题,更改docker.sock权限为777(仅限于本地)
Jenkins持续集成与持续交付_第43张图片
浏览器上:
在jenkins上删除之前的构建操作,重新定义
仓库名:myweb
tag(标签):${BUILD_NUMBER}变量
Docker host URL:unix:///var/lib/run/docker.sock ##unix代表本地
高级选项中,取消Force Pull,不让它强行拉取;勾选Skip Push,它帮我们构建好镜像再推送
Jenkins持续集成与持续交付_第44张图片
Jenkins持续集成与持续交付_第45张图片
在jenkins主机上可以查看到我们的仓库镜像myweb
Jenkins持续集成与持续交付_第46张图片
Jenkins持续集成与持续交付_第47张图片
Jenkins持续集成与持续交付_第48张图片
Jenkins持续集成与持续交付_第49张图片
配置demo,取消跳过推送,更改index.html后再次推送,触发
Jenkins持续集成与持续交付_第50张图片

Jenkins持续集成与持续交付_第51张图片
gitlab中信息更新
Jenkins持续集成与持续交付_第52张图片
上传到我们的私有仓库myweb中
Jenkins持续集成与持续交付_第53张图片
在这里插入图片描述
单元测试
在jenkins主机上对jenkins用户进行权限下放
在这里插入图片描述
Jenkins持续集成与持续交付_第54张图片
新建任务docker测试上传的镜像
Jenkins持续集成与持续交付_第55张图片
在demo任务成功后触发docker任务
Jenkins持续集成与持续交付_第56张图片
构建执行shell,在本地主机运行一个webserver镜像
Jenkins持续集成与持续交付_第57张图片
手动触发
Jenkins持续集成与持续交付_第58张图片
成功执行
Jenkins持续集成与持续交付_第59张图片
查看运行后的webserver镜像,访问webserver的ip,同步到的是gitlab上的index.html默认发布信息
Jenkins持续集成与持续交付_第60张图片
Jenkins持续集成与持续交付_第61张图片
再次构建执行shell增加端口映射
Jenkins持续集成与持续交付_第62张图片
Jenkins持续集成与持续交付_第63张图片
Jenkins持续集成与持续交付_第64张图片
在gitlab主机更改index.html
Jenkins持续集成与持续交付_第65张图片
在浏览器上查验,gitlab中信息已更新
Jenkins持续集成与持续交付_第66张图片
jenkins中demo和docker任务自动触发(下图中的构建号7和3)
Jenkins持续集成与持续交付_第67张图片
在这里插入图片描述
自动化触发完成

你可能感兴趣的:(Jenkins持续集成与持续交付)