1 安装

1.1 二进制安装

1、下载jenkins仓库

  1. sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
  2. sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

但是在执行第一个命令时,可能回出现如下错误

 sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key--2022-03-28 15:22:13--  https://pkg.jenkins.io/redhat-stable/jenkins.repo
Resolving pkg.jenkins.io (pkg.jenkins.io)... 151.101.110.133, 2a04:4e42:11::645
Connecting to pkg.jenkins.io (pkg.jenkins.io)|151.101.110.133|:443... 
connected.
ERROR: cannot verify pkg.jenkins.io's certificate, issued by ‘/C=US/O=Let's Encrypt/CN=R3’:
  Issued certificate has expired.
To connect to pkg.jenkins.io insecurely, use `--no-check-certificate'.

解决办法:

yum install -y ca-certificates

安装java环境

 yum install fontconfig java-11-openjdk

安装jenkins

 yum install -y jenkins

修改配置文件
vim /etc/sysconfig/jenkins 可根据情况修改程序运行的端口号和用户

JENKINS_USER="jenkins"
JENKINS_PORT="8080"

启动

systemctl start jenkins && systemclt enable  jenkins

image.png
更改插件源地址,将URL地址改为清华源
https://mirror.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
image.png
同时更改/var/lib/jenkins/updates/default.json文件当中插件下载地址,然后重启jenkins

 sed -i 's#updates.jenkins.io/download/plugins#mirrors.tuna.tsinghua.edu.cn/jenkins/plugins#g' default.json && sudo sed -i 's#www.google.com#www.baidu.com#g' /var/lib/jenkins/updates/default.json

1.2 以容器方式启动

 docker run -u root -itd --restart=always -p 38080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock --name jenkins-master jenkinsci/blueocean

2 使用jenkins构建CI/CD

2.1 配置gitlab+webhook

1、新建一个流水线风格的任务
image.png
2、构建触发器
这一步的webhook URL地址和secret token需要记录下来,在配置gitlab时需要
2022-03-29_102212.png
3、在gitlab进行配置
image.png
此处的URL地址和secret即从jenkins获得的信息
image.png
测试连接
image.png
QA:在第一次配置时可能回出现以下问题

Url is blocked: Requests to the local network are not allowed

解决办法:
image.png
允许本地网络的web hooks
image.png

2.2 连接Docker

在连接外部docker环境时,需要暴露docker的API,我们可以通过启用容器的方式暴露,或者修改docker的service文件

2.2.1 docker配置

1、修改docker.service文件
vim /usr/lib/systemd/system/docker.service,在ExecStart追加配置-H tcp://0.0.0.0:2375
重载配置并重启服务

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375

2、启动容器方式

docker run -d \
    -p 2375:2375 \
    --name shipyard-proxy \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -e PORT=2375 \
    shipyard/docker-proxy:latest

3、查看docker主机2375端口是否监听

2.2.2 jenkins配置

1、选择系统管理——节点管理
image.png
2、选择Configure Clouds
image.png
3、配置连接Docker
image.png

2.3 对接K8S

2.3.1 生成k8s凭证

需要用到k8s集群的config文件,并需要生成pfx文件,将如下命令种certificate-authority-data、client-certificate-data、client-key-data字段替换成config文件中相应的值

echo certificate-authority-data | base64 -d > ca.crt
echo client-certificate-data | base64 -d > client.crt
echo client-key-data | base64 -d > client.key

生成cert.pfx文件

openssl pkcs12 -export -out cert.pfx -inkey client.key -in client.crt -certfile ca.crt

2.3.1 jenkins上的配置

image.png