持续集成和持续交互:jenkins持续集成

jenkins持续集成

      • 1. jenkins简介
      • 2. jenkins安装
      • 3. jenkins的使用
      • 4. 添加docker插件
      • 5. 新建item(docker)

1. jenkins简介

Jenkins是开源CI&CD(continuous integration & continuous delivery)软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。

Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。

CI(Continuous integration持续集成)持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。
CD(Continuous Delivery持续交付) 是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。

2. jenkins安装

国内镜像:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/
官方网站:https://jenkins.io/zh/download/
jdk安装包:
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html#license-lightbox

[root@server3 ~]# ls
jdk-8u251-linux-x64.rpm  jenkins-2.237-1.1.noarch.rpm

[root@server3 ~]# rpm -ivh jdk-8u251-linux-x64.rpm  # 安装jdk
[root@server3 ~]# rpm -ivh jenkins-2.237-1.1.noarch.rpm # 安装jenkins

[root@server3 ~]# systemctl start jenkins  #确保可以连接外网,因为jenkins需要下载数据

[root@server3 jenkins]# cat /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>
</sites>

[root@server3 jenkins]# systemctl restart jenkins

持续集成和持续交互:jenkins持续集成_第1张图片

[root@server3 updates]# pwd  # 出现上面页面之后,会生成一个updates目录
/var/lib/jenkins/updates

更改updates目录下的default.json文件下的下载地址
[root@server3 updates]# sed -i.bak 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json
[root@server3 updates]# sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

[root@server3 updates]# systemctl restart jenkins

[root@server3 updates]# cat /var/lib/jenkins/secrets/initialAdminPassword # 查看初始密码
dcd4fe3806d24d76939b23ed4a2ef5e2

将密码粘贴到上图的管理员密码中
选择推荐安装
持续集成和持续交互:jenkins持续集成_第2张图片
持续集成和持续交互:jenkins持续集成_第3张图片
持续集成和持续交互:jenkins持续集成_第4张图片
持续集成和持续交互:jenkins持续集成_第5张图片

3. jenkins的使用

持续集成和持续交互:jenkins持续集成_第6张图片
持续集成和持续交互:jenkins持续集成_第7张图片
持续集成和持续交互:jenkins持续集成_第8张图片

排错:需要在jenkis上安装git
[root@server3 updates]# yum install -y git

持续集成和持续交互:jenkins持续集成_第9张图片

[root@server2 .ssh]# pwd
/root/.ssh
[root@server2 .ssh]# cat id_rsa  # 私钥
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAs3Fnt/GEvo8d6hqeEEtrH/Ih79s4A133FjHQ6XkFgnzScwKU
ZW2epuE4LKGxPM+GgXFsbqmrRKEW8O7aMJjANHdY6CjPjMFopo/192jCHjOhPCdF
tbodJXVpP5sG6BfiVRM3f9Vfu3y7mjSSKy6/HNTDqCBk7Iuhrc5JQLAc8chn+3nH
cYbAkkHRtwEZ+S538V2o8Sw1441/zhD2erEBIHJ7dOWkYy9X6CUqqEy58b3P0xfS
YRhdYd2dSH8ePgr0r7gvCNOesj0Q5yucR/NIkaF5ivUGty87FgtPlCpGmf4Zdg1W
bMu8/oi0DdjDf7wvD9CNecQyP5kCwaGxo5ecAwIDAQABAoIBAQCAHOlWFKMXggpz
h4luTMowxqigHL1C+iVcvThQWE0sun1uC1tzhu4MayO2CcMGjYuUgyxNXemfV/uP
DJjOtWAUlVjud6Sm87cJpCKR/0MIWQg2cDt+4V/JzKfV95LYxaSb5Nps9CQjMYyn
Lf1lwzxDE0yVjns/vvkxo+P8wUAJBj+BmwIjmV1buB83IwhDioypWUzhJCXKjpHx
+QPd6ELJ2af4iL0f3bcX3Ej/9uYUkKxIDjkvXxSi9NEHeK1tWzUCf+X4LARp7YY+
TWEXboF/OWY5swOm1oWZrumUbUbreIYBJs+R59WgKeY77XssnIVlnL1CNYV4fb/C
Tc7HJa8BAoGBAODUx/jtF3s82ITXzFpW+JlmOWfKKJVHpPzAKwuRbkAq2wsVaLvb
3lMlsJ6ets2BZGp4503Y9ogod9NXxVLnLPko7bJe8AWWktnAXSr9b8bvFNVR13/B
jl446FHx57LxvtZwNeJSa1PPS41zDFkcyalVqf/W9QmX9yb3juuylqlBAoGBAMxR
ziNlIX9He/70UBNGaMXTL/NnSOvS76eWnphgspJJ94EUx49a0dQcjGAGeoBc1aeH
UxmlxiJ3mQsqxDTmylxQi0IyigfKtmpXcqvJCH8eoe189ormTAXodZmL2ybaDK1t
91BtMVmGm0ETV72SKnt5KYv3r50BpkzCcBXDBVBDAoGAMOgYV927LeOedcc7fKtO
iI/kDN+81Dwxd4mV035fLTYlT9PoZHT/d7bLJLYBrdJntYF3T0fS2Ot0pVSCZ/ZB
ojF1A0gDjjOi3hsqKR/YIL4BGiYjancAMR7P6oNkk1hi2uKt1f13u1Nsa+iK1xec
BmnMAQsRYnTcHm3beQnwHAECgYAm1Hkvot2d2dEH4BiDwULSLdOUF5H1N25SVD6p
yN7HDIWcI33VkbYE8LQA39pSINJ99yrk2etwy3frdmI5h473wlrk5sPyvSSzyxDA
8wDJX+H4R2J3fVL/YHFREBJDLPdx0k9JGqdhU0KYOHvZTDkEpD8wGY9ncFPRjLZO
fHS7DwKBgADeu3YozL//skcGWTcqFnmycTHghJ0Aw9qA8WK3hmf6TUog46k3HskL
Zhf0e1H30pIsknqLIKZ6lc6prEUEACL0wa3qNzxbSEIgmXsub5EgZNIqYQCAHMx6
HNVUpmSxo63SCfpru7ToQpWNc+thoxHclVUCu0/mPEP28jo3JmR9
-----END RSA PRIVATE KEY-----

问题解决
在这里插入图片描述
持续集成和持续交互:jenkins持续集成_第10张图片
持续集成和持续交互:jenkins持续集成_第11张图片
保存
在这里插入图片描述
持续集成和持续交互:jenkins持续集成_第12张图片
持续集成和持续交互:jenkins持续集成_第13张图片

[root@server3 workspace]# pwd  # 将文件抓取到workspace中
/var/lib/jenkins/workspace
[root@server3 workspace]# cd test
[root@server3 test]# ls
index.html  README.md
[root@server3 test]# cat index.html 
zjy hello

持续集成和持续交互:jenkins持续集成_第14张图片
持续集成和持续交互:jenkins持续集成_第15张图片
持续集成和持续交互:jenkins持续集成_第16张图片
在这里插入图片描述
在这里插入图片描述
到gitlab中
持续集成和持续交互:jenkins持续集成_第17张图片
持续集成和持续交互:jenkins持续集成_第18张图片
测试:
持续集成和持续交互:jenkins持续集成_第19张图片
jenkins可以检测到
在这里插入图片描述

4. 添加docker插件

在jenkins中添加docker插件
持续集成和持续交互:jenkins持续集成_第20张图片
开启harbor仓库(之前已经配置完成)
持续集成和持续交互:jenkins持续集成_第21张图片
使用本地的docker库(所以在server3上安装docker)

[root@server3 ~]# cat /etc/yum.repos.d/docker-ce.repo 
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=0
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[root@server3 ~]# ls
container-selinux-2.77-1.el7.noarch.rpm

[root@server3 ~]# yum install docker-ce container-selinux-2.77-1.el7.noarch.rpm -y

[root@server3 ~]# systemctl start docker

修改docker运行权限

[root@server3 ~]# ll /run/docker.sock
srw-rw---- 1 root docker 0 May 24 16:31 /run/docker.sock
[root@server3 ~]# chmod 777 /run/docker.sock
[root@server3 ~]# ll /run/docker.sock
srwxrwxrwx 1 root docker 0 May 24 16:31 /run/docker.sock

证书

[root@server1 harbor]# cd /etc/docker/
[root@server1 docker]# ls
certs.d  daemon.json  key.json  plugins
[root@server1 docker]# scp -r certs.d/ [email protected]:/etc/docker/

镜像加速器

[root@server3 ~]# cat /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://qe6d82ah.mirror.aliyuncs.com"]
}
[root@server3 ~]# systemctl daemon-reload
[root@server3 ~]# systemctl restart docker

持续集成和持续交互:jenkins持续集成_第22张图片
在gitlab主机上写dockerfile

[root@server2 gitdemo]# cat Dockerfile 
FROM nginx
EXPOSE 80
COPY index.html /usr/share/nginx/html

[root@server2 gitdemo]# git add Dockerfile

[root@server2 gitdemo]# git commit -m "add Dockerfile"

[root@server2 gitdemo]# git push -u origin master

持续集成和持续交互:jenkins持续集成_第23张图片
jenkins上输出有问题
持续集成和持续交互:jenkins持续集成_第24张图片

[root@server3 ~]# chmod 777 /run/docker.sock
[root@server3 ~]# ll /run/docker.sock
srwxrwxrwx 1 root docker 0 May 24 16:51 /run/docker.sock

在这里插入图片描述
持续集成和持续交互:jenkins持续集成_第25张图片
持续集成和持续交互:jenkins持续集成_第26张图片
持续集成和持续交互:jenkins持续集成_第27张图片

5. 新建item(docker)

持续集成和持续交互:jenkins持续集成_第28张图片
持续集成和持续交互:jenkins持续集成_第29张图片
持续集成和持续交互:jenkins持续集成_第30张图片
在这里插入图片描述

[root@server3 ~]# docker ps
CONTAINER ID        IMAGE                            COMMAND                  CREATED              STATUS              PORTS               NAMES
e0e3852257df        reg.westos.org/library/gitdemo   "nginx -g 'daemon of…"   About a minute ago   Up 56 seconds       80/tcp              webserver

[root@server3 ~]# docker inspect webserver
 "IPAddress": "172.17.0.2",

[root@server3 ~]# curl 172.17.0.2
zjy hello

流程:用户通过git提交文件到gitlab上,github通过webhook触发jenkins,jenkins调用docker build plugins去build images,然后push registry,再次触发docker project,docker run,然后就可以访问webserver

持续集成和持续交互:jenkins持续集成_第31张图片

[root@server2 gitdemo]# cat index.html 
zjy hello
ljl hello

[root@server2 gitdemo]# git add index.html
[root@server2 gitdemo]# git commit -m "update index.html"
[master 0443c21] update index.html
 1 file changed, 1 insertion(+)
[root@server2 gitdemo]# git push -u origin master
Counting objects: 5, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 262 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To git@172.25.60.2:root/gitdemo.git
   684f4ef..0443c21  master -> master
Branch master set up to track remote branch master from origin.

[root@server3 ~]# curl 172.17.0.2 #访问更新
zjy hello
ljl hello

你可能感兴趣的:(CI&CD)