jenkins部署

文章目录

  • 一、介绍
    • 1.Jenkins
    • 2.CI/CD是什么
  • 二、jenkins部署
  • 三、jenkins配置
  • 四、实时触发
  • 五、添加jenkins节点:整合docker
  • 六、自动化构建docker镜像
  • 七、通过ssh插件交付任务


一、介绍

1.Jenkins

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成

Jenkins功能包括:
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。

2.CI/CD是什么

CI(Continuous integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。借用网络图片对CI加以理解。
jenkins部署_第1张图片
CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。下图反应的是CI/CD 的大概工作模式。
jenkins部署_第2张图片
转自作者:哥本哈根月光

二、jenkins部署

软件下载地址(建议):https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/
在这里插入图片描述

[root@server5 ~]# rpm -ivh jdk-11.0.15_linux-x64_bin.rpm
[root@server5 ~]# yum install -y fontconfig     ##安装依赖性,否则Java启动有问题
[root@server5 ~]# rpm -ivh jenkins-2.395-1.1.noarch.rpm

启动服务
[root@server5 ~]# systemctl enable --now jenkins.service     ##启动较慢,因为在更新

[root@server5 ~]# netstat -antlp|grep :8080
tcp6       0      0 :::8080                 :::*                    LISTEN      9579/java

登录
http://192.168.56.15:8080/
jenkins部署_第3张图片
初始密码
[root@server5 jenkins]# cat /var/lib/jenkins/secrets/initialAdminPassword
d7c142eba0244f60a8531fa5e5ab7bc3

登录成功后点击:安装推荐插件
注:加速方法:实验时安装插件速度还可以接受,两种方法均未用到
jenkins部署_第4张图片
另外一种加速方法:
jenkins部署_第5张图片

jenkins部署_第6张图片
无需新建用户,直接使用admin账户
jenkins部署_第7张图片
jenkins部署_第8张图片

三、jenkins配置

修改密码
jenkins部署_第9张图片
jenkins部署_第10张图片
新建项目:和gitlab进行整合
jenkins部署_第11张图片

按照下图操作时,有错误,在jenkins主机上安装git工具,并上传公钥至gitlab

jenkins部署_第12张图片
/main和gitlab项目保持一致

在jenkins主机上安装git工具
[root@server5 ~]# yum install -y git

创建密钥并上传gitlab
[root@server5 ~]# ssh-keygen

jenkins部署_第13张图片
添加gitlab认证凭据
jenkins部署_第14张图片

jenkins部署_第15张图片
复制私钥
jenkins部署_第16张图片
配置ssh
设置不做主机配置校验
jenkins部署_第17张图片
[root@server5 ~]# vim /etc/ssh/ssh_config
Host *
StrictHostKeyChecking no
jenkins部署_第18张图片

构建触发器

jenkins部署_第19张图片
构建任务
jenkins部署_第20张图片
查看控制台输出
jenkins部署_第21张图片

四、实时触发

关闭轮询触发
系统管理-插件管理—安装gitlab插件
jenkins部署_第22张图片
配置项目触发器
jenkins部署_第23张图片jenkins部署_第24张图片
配置gitlab
jenkins部署_第25张图片jenkins部署_第26张图片
jenkins部署_第27张图片
jenkins部署_第28张图片
令牌从配置项目触发器部分复制而来
jenkins部署_第29张图片
测试推送
jenkins部署_第30张图片

五、添加jenkins节点:整合docker

通过docker打包数据

新建虚拟机server6:需要有自己的解析
安装jdk和git
[root@server6 ~]# rpm -ivh jdk-11.0.15_linux-x64_bin.rpm
[root@server6 ~]# yum install -y git           ##git用于拉取等

配置解析:需要有仓库的解析
[root@server6 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.11   server1
192.168.56.12   server2
192.168.56.13   server3
192.168.56.14   server4
192.168.56.15   server5
192.168.56.16   server6
192.168.56.171   reg.westos.org

在节点管理中添加节点
jenkins部署_第31张图片
配置从节点
jenkins部署_第32张图片
jenkins部署_第33张图片
server6 ssh认证
jenkins部署_第34张图片

jenkins部署_第35张图片
关闭master节点的构建任务数:
将master节点仅仅用于调度,不用于构建任务;节省master资源,提升调度的性能
jenkins部署_第36张图片
系统管理-全局安全配置–关闭git主机校验
jenkins部署_第37张图片
jenkins部署_第38张图片
最后测试构建,构建任务会在docker1节点上运行

六、自动化构建docker镜像

在server6上安装docker-ce
[root@server6 docker]# cd /etc/yum.repos.d/
[root@server6 yum.repos.d]# cat docker.repo
[docker]
name=docker-ce
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/x86_64/stable/
gpgcheck=0

[update]
name=centos
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7/extras/x86_64/
gpgcheck=0

[root@server6 yum.repos.d]# yum install -y docker-ce

修改内核参数:让流量可以通过防火墙
[root@server6 ~]# vim /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1

[root@server6 ~]# sysctl --system

[root@server6 ~]# systemctl  enable --now docker
配置docker默认仓库
[root@server6 ~]# vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://reg.westos.org"]
}

[root@server6 ~]# systemctl  restart docker

拷贝仓库证书
[root@k8s1 harbor]# cd /etc/docker/
[root@k8s1 docker]# scp -r certs.d/ 192.168.56.16:/etc/docker/

[root@server6 ~]# ls /etc/docker/certs.d/reg.westos.org/ca.crt
/etc/docker/certs.d/reg.westos.org/ca.crt

测试
[root@server6 docker]# docker pull nginx

登录私有harbor仓库
[root@server6 test]# docker login reg.westos.org
jenkins部署_第39张图片
安装CloudBees Docker Build and Publish插件
1.在本地构建镜像
2.构建好的镜像上传至harbor仓库
jenkins部署_第40张图片
配置项目构建
docker默认走tls加密的,需要证书才可以连接;
使用远程docker主机,连接URL需要证书;本机不需要证书
jenkins部署_第41张图片
下图按需调整即可
jenkins部署_第42张图片

测试:在server1上提交Dockerfile
[root@server1 demo]# vim Dockerfile
FROM nginx
COPY index.html /usr/share/nginx/html

[root@server1 demo]# git status -s
?? Dockerfile
[root@server1 demo]# git add  Dockerfile
[root@server1 demo]# git commit -m "add Dockerfile"
[main 8034141] add Dockerfile
 1 file changed, 2 insertions(+)
 create mode 100644 Dockerfile

[root@server1 demo]# git push -u origin main
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 350 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:root/demo.git
   85c9da3..8034141  main -> main
Branch main set up to track remote branch main from origin.

此时gitlab会主动触发jenkins构建任务,观察jenkins的任务输出
jenkins部署_第43张图片
CICD流程:
user ->git push -> gitlab -> webhooks trigger -> jenkins ->docker plugins -> build image and push registy ->tigger docker_test -> ssh remote exec docker run

七、通过ssh插件交付任务

新建测试虚拟机server7:类生成环境,做测试
在server7上安装docker-ce
[root@server7 docker]# cd /etc/yum.repos.d/
[root@server7 yum.repos.d]# cat docker.repo
[docker]
name=docker-ce
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/x86_64/stable/
gpgcheck=0

[update]
name=centos
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7/extras/x86_64/
gpgcheck=0

[root@server7 yum.repos.d]# yum install -y docker-ce

修改内核参数
[root@server7 ~]# vim /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1

[root@server7 ~]# sysctl --system

启动服务
[root@server7 ~]# systemctl  enable --now docker

拷贝仓库证书
[root@k8s1 harbor]# cd /etc/docker/
[root@k8s1 docker]# scp -r certs.d/ 192.168.56.16:/etc/docker/

[root@server6 ~]# ls /etc/docker/certs.d/reg.westos.org/ca.crt
/etc/docker/certs.d/reg.westos.org/ca.crt

jenkins安装ssh插件
jenkins部署_第44张图片
进入系统配置,添加ssh主机,交付至远程:
jenkins部署_第45张图片
新建docker_test项目

jenkins部署_第46张图片
当test项目成功运行后触发docker_test项目
jenkins部署_第47张图片
docker ps -a 停止的也算

jenkins部署_第48张图片
构建后查看输出:如下即为成功
jenkins部署_第49张图片


你可能感兴趣的:(CICD,jenkins,java,运维)