jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建

一、jenkins简介
1.1Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。
Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。
CI(Continuous integration持续集成)持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第1张图片
1.2CD(Continuous Delivery持续交付) 是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第2张图片
二、jenkins安装与配置

 软件下载:https://jenkins.io/zh/download/

国内镜像站:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/

安装jenkins:(主机需要能上网)
rpm -ivh jdk-8u171-linux-x64.rpm
rpm -ivh jenkins-2.225-1.1.noarch.rpm
systemctl  start jenkins  启动服务
访问: http://172.25.254.5:8080
使用初始密码登录:cat /var/lib/jenkins/secrets/initialAdminPassword
安装默认插件即可,使用admin用户,登录后修改密码。

jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第3张图片

[root@server5 jenkins]# netstat -tnpl | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      9343/java   

2.1更新插件源:

vim  /var/lib/jenkins/hudson.model.UpdateCenter.xml 
'1.1' encoding='UTF-8'?>

  
    default</id>        指定清华下载站下载地址
    https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
  </site>
cd /var/lib/jenkins/updates:登录成功之后会生成 updates目录里面有两个文件,
[root@server5 jenkins]# cd updates/
[root@server5 updates]# ls
default.json  hudson.tasks.Maven.MavenInstaller
指定清华下载站下载地址
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
[root@server5 updates]# systemctl restart jenkins.service 
[root@server5 jenkins]# cat /var/lib/jenkins/secrets/initialAdminPassword
68e9bae9fdff4de58632a773c74941eb

jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第4张图片
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第5张图片
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第6张图片
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第7张图片
更改密码:点击admin用户(右下角)+点击设置更改密码。
2.2新建一个自由风格任务:
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第8张图片
在Gitlab上复制链接ssh克隆
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第9张图片
进入源码管理粘贴刚才在gitlab上的克隆连接
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第10张图片

在jenkins上添加server4(gtidlab)上的生成的私钥(/root/.ssh/id_rsa)
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第11张图片

上面添加完私钥后还是在报错:Jenkins是通过git工具来操作GitHub仓库的,也是需要安装git工具的

[root@server5 ~]# yum install -y git

jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第12张图片
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第13张图片
构建执行shell后保存
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第14张图片

jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第15张图片
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第16张图片
在server5主机上:

[root@ser[root@server5 ~]# cd /var/lib/jenkins/workspace/demo  进入目录查看
[root@server5 demo]# ls -l  已经把gitlab仓库的文件克隆成功
total 8
-rw-r--r-- 1 jenkins jenkins 15 Jun 16 00:05 index.html
-rw-r--r-- 1 jenkins jenkins  8 Jun 16 00:05 README.md

三、docker容器制作构建
server4/5都要装docker

进入:/etc/sysctl.d
scp /etc/sysctl.d/bridge.conf server5:/etc/sysctl.d/  
   
cat bridge.conf  查看内容
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
刷新
sysctl --system
docker info 查看

安装docker插件
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第17张图片
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第18张图片点击安装插件

在server5(jenkins)上获取两个软件一个私有仓库(registry)和myapp 并且倒入仓库上传

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行仓库并端口映射搭配5000
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第19张图片

在这里插入图片描述
myapp有两个包一个v1/v2
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第20张图片
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第21张图片

[root@server5 ~]# curl localhost:5000/v2/_catalog  myapp已经上传
{"repositories":["myapp"]}
修改docker.sock权限,不然jenkins无法直接执行docker命令:
# chmod 777 /var/run/docker.sock
[root@server5 run]# pwd
/var/run
[root@server5 run]# ll docker.sock
srw-rw---- 1 root docker 0 Jun 18 11:16 docker.sock
[root@server5 run]# chmod 777 docker.sock 
[root@server5 run]# ll docker.sock
srwxrwxrwx 1 root docker 0 Jun 18 11:16 docker.sock

接着在jenkins图形界面中设置
Jenkins自动构建docker镜像,并上传至harbor仓库

以下设置是在本地拉取镜像,所以不需要证书

jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第22张图片
此选项表示镜像拉取镜像成功后。但不直接上传到仓库中
在这里插入图片描述
点击立即构建

jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第23张图片
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第24张图片

查看镜像拉取成功
docker images
localhost:5000/myweb   12                  4b6fd035429e        2 minutes ago       109MB
localhost:5000/myweb   latest              4b6fd035429e        2 minutes ago       109MB

jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第25张图片
接下来我们取消Skip push选项,使该镜像自动上传到私有仓库

jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第26张图片
进行测试
首先进行默认配置文件的更改

[root@server4 demo]# cat Ddockerfile   编写dockerfile
FROM nginx
COPY index.html /usr/share/nginx/html

jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第27张图片
更改完配置文件后,推送到gitlab仓库中
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第28张图片
在浏览器查看文件内容已经更改
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第29张图片
再在jenkins上点击立即构建,注意首先检查5000端口是否开放,私有仓库一定要开启
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第30张图片

[root@server5 ~]# curl localhost:5000/v2/_catalog 镜像上传成功
{"repositories":["myapp","myweb"]}

当前镜像已经成功上传,接下来检测下上传的镜像到底有没有问题
1.新建一个任务
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第31张图片
源码管理选择无
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第32张图片
只有当demo完成构建才会触发jenkins才会上传并部署镜像
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第33张图片
进行权限下放

[root@server5 ~]# visudo
jenkins ALL=(ALL)     NOPASSWD: ALL

jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第34张图片
docker任务显示的是无,手动点击最右边的开始构建

jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第35张图片
点击一次,多了会产生错误输出,然后查看构建历史
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第36张图片
查看IP并访问

[root@server5 ~]# docker inspect webserver

jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第37张图片
进行优化 :当有相同的镜像在运行时先删除运行的在做部署

sudo   docker ps -a | grep webserver && sudo docker rm -f webserver   查看当前运行的镜像 ,过滤webserver容器,然后删除此容器,
sleep 1   休息1s等待完全删除
sudo docker run -d --name webserver -p 80:80 localhost:5000/myweb  执行新容器的运行部署。端口映射80端口,可以直接访问80端口

jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第38张图片
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第39张图片
访问测试
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第40张图片
一个完整的测试:
在gitlab上更改默认页面文件内容

jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第41张图片
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第42张图片
server5(jenkins)测试如下:
当更改配置文件被推送到gitlab的demo上,会自动出发jenkins 自动重新拉取镜像部署
直接访问,不用过多操作
jenkins持续集成——Jenkins安装配置+使用docker容器+registry私有仓库制作构建_第43张图片

Jenkins的主要实验环境

server1 172.25.254.1    hatbor仓库
server2 172.25.254.2    远程主机测试(docker交付)
server3 172.25.254.3   ansible
server4 172.25.254.4   gitlab
server5 172.25.254.5   jenkins
server6 172.25.254.6   Jenkins+absible 的测试环境  

你可能感兴趣的:(gitlab,docker,jenkins)