Jenkins持续集成与持续交付

本文介绍了Jenkins的持续集成与持续交付应用,详细阐述了从Jenkins安装到配置GitLab手动触发构建的过程,以及如何通过容器化方式自动化构建和测试。文中包括设置Jenkins初始密码、更新插件源、安装Git、配置GitLab仓库、执行Shell命令以及解决Docker权限问题等步骤,最后展示了如何通过Dockerfile构建镜像并推送至私有仓库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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默认开启的端口是8080
在这里插入图片描述
(2)访问: http://172.25.12.6:8080
使用初始密码登录:cat /var/lib/jenkins/secrets/initialAdminPassword
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)更新插件源:

vim  /var/lib/jenkins/hudson.model.UpdateCenter.xml 	##修改更新中心
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
  </site>

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

在这里插入图片描述
在这里插入图片描述
修改default.json文件中的下载源为清华网站,谷歌改为百度
在这里插入图片描述
(4)改好后,重新访问 http://172.25.12.6:8080,拿到程序员管理密码,选择社区推荐安装
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.jenkins使用

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

3.1 gitlab手动实现jenkins触发构建

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

3.2 用容器化方式构建

(1)在server6上安装docker-ce,并启动docker·
在这里插入图片描述
在这里插入图片描述
(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	##使配置生效

在这里插入图片描述
(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来自动做这件事
(1)在server5上的demo目录下推送一个index.html文件到远程仓库
在这里插入图片描述
在这里插入图片描述
(2)在demo目录下编辑Dockerfile,将当前页面index.html复制到nginx默认发布目录中去
跟踪Dockerfile文件添加到暂存区中,递交Dockerfile推送到远程仓库
在这里插入图片描述
在这里插入图片描述
(3)在浏览器上查看
#1,#2,#3,都是构建号,查看第三次构建输出中有Dockerfile
在这里插入图片描述
在这里插入图片描述
根据dockerfile构建镜像
返回demo项目,点击插件管理,选择可选插件,找到与dockerfile相关的插件,直接安装
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在server6上搭建docker仓库

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

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

在这里插入图片描述
gitlab中信息更新
在这里插入图片描述
上传到我们的私有仓库myweb中
在这里插入图片描述
在这里插入图片描述
单元测试
在jenkins主机上对jenkins用户进行权限下放
在这里插入图片描述
在这里插入图片描述
新建任务docker测试上传的镜像
在这里插入图片描述
在demo任务成功后触发docker任务
在这里插入图片描述
构建执行shell,在本地主机运行一个webserver镜像
在这里插入图片描述
手动触发
在这里插入图片描述
成功执行
在这里插入图片描述
查看运行后的webserver镜像,访问webserver的ip,同步到的是gitlab上的index.html默认发布信息
在这里插入图片描述
在这里插入图片描述
再次构建执行shell增加端口映射
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在gitlab主机更改index.html
在这里插入图片描述
在浏览器上查验,gitlab中信息已更新
在这里插入图片描述
jenkins中demo和docker任务自动触发(下图中的构建号7和3)
在这里插入图片描述
在这里插入图片描述
自动化触发完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值