1 安装
1.1 二进制安装
1、下载jenkins仓库
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
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
更改插件源地址,将URL地址改为清华源
https://mirror.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
同时更改/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、新建一个流水线风格的任务
2、构建触发器
这一步的webhook URL地址和secret token需要记录下来,在配置gitlab时需要
3、在gitlab进行配置
此处的URL地址和secret即从jenkins获得的信息
测试连接
QA:在第一次配置时可能回出现以下问题
Url is blocked: Requests to the local network are not allowed
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
2.2.2 jenkins配置
1、选择系统管理——节点管理
2、选择Configure Clouds
3、配置连接Docker
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