这个文章会把工作中Jenkins的应用方法写一下,给自己留下印象的同时也希望能给他人带来帮助。环境全部是自己的测试环境,因为就算再熟练也需要有个测试环境来验证,避免因为疏忽大意造成的错误。
1.使用Docker部署Jenkins
# 创建所需目录
root@test219:~# mkdir -p /root/Jenkins/data
root@test219:~# cd /root/Jenkins
root@test219:~/Jenkins# chmod -R 777 *
# 创建docker-compose.yml
root@test219:~/Jenkins# vi docker-compose.yml
version: '3'
services: # 集合
docker_jenkins:
user: root # 为了避免一些权限问题 在这我使用了root
privileged: true
restart: always # 重启方式
image: jenkins/jenkins:latest # 指定服务所使用的镜像 在这里我选择了 LTS (长期支持)
container_name: jenkins # 容器名称
ports: # 对外暴露的端口定义
- 11182:8080 # 访问Jenkins服务端口
- 50000:50000
environment:
TZ: Asia/Shanghai
volumes: # 卷挂载路径
- /root/Jenkins/data:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker # 这是为了我们可以在容器内使用docker命令
- /usr/local/bin/docker-compose:/usr/local/bin/docker-compose
# 启动docker-compose
root@ubuntu2204test99:~/Jenkins# docker-compose up -d
# 查看下jenkins的密码
root@ubuntu2204test99:~/Jenkins# docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
4bea74d5be1c4f3f9ff34b4c1a3567c2
2.对Jenkins进行初始化设置
image-20250901125843132
image-20250901125904984
image-20250901130210785
3.安装常用插件
插件根据实际情况自己添加
Gitlab插件
Git插件
Git Parameter ---> 分支插件,可以获取Gitlab上的分支信息
DingTalk ---> 钉钉插件,钉钉告警使用
Docker Pipeline ---> Docker插件
Nodejs插件 ---> 打包前段项目使用
Ansible ---> Ansible插件
File Operations ---> File Operations
Sonarqube ---> Sonarqube插件
extended choice parameter ---> 可以操作同一套代码下不同模块
description setter plugin ---> 作用是在 Build 栏下方增加一个功能块,用于填写自定义信息,也就是 Build history 中需要显示的文字
user build vars ---> 用于采集当前执行构建者的信息
Pipeline: Stage View ---> 流水线展示插件
Blue Ocean ---> 流水线展示插件
Role-based Authorization Strategy ---> 权限插件
image-20250901131054488
4.在容器中生成sshkey
# 进入容器
root@ubuntu2204test99:~/Jenkins/data# docker exec -it jenkins bin/bash
# 切换jenkins用户
root@af654742e8e4:/# su jenkins
# 跳转到jenkins的目录下
jenkins@af654742e8e4:/$ cd
jenkins@af654742e8e4:~$ pwd
/var/jenkins_home
# 生成Jenkins的密钥
jenkins@af654742e8e4:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/var/jenkins_home/.ssh/id_rsa):
Created directory '/var/jenkins_home/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /var/jenkins_home/.ssh/id_rsa
Your public key has been saved in /var/jenkins_home/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:fMt9nEANbSAENPljRhzJYrhifA0sYZDVrznskpQ1Iw8 jenkins@af654742e8e4
The key's randomart image is:
+---[RSA 3072]----+
| .+++ o+*+ooo |
| ... = +.=. oo |
| . . * + ... |
| E *.o =. |
| . X =So... |
| o * o o o . |
| . o . o . + |
| o . . |
| . |
+----[SHA256]-----+
# 退出容器
jenkins@af654742e8e4:~$
exit
root@af654742e8e4:/#
exit
# 在宿主机的目录中查看是否生成sshkey
root@ubuntu2204test99:~/Jenkins/data# ll .ssh/
total 16
drwx------ 2 wolf wolf 4096 Sep 1 05:12 ./
drwxrwxrwx 13 root root 4096 Sep 1 05:13 ../
-rw------- 1 wolf wolf 2610 Sep 1 05:12 id_rsa
-rw-r--r-- 1 wolf wolf 574 Sep 1 05:12 id_rsa.pub
5.添加代理节点
image-20250901132344590
image-20250901132358778
image-20250901132415984
image-20250901132715344
image-20250901132746232
image-20250901133139859
# 从节点下载 agent
root@ubuntu2204test99:/usr/local# mkdir /usr/local/jenkins-runner/
root@ubuntu2204test99:/usr/local# cd jenkins-runner/
root@ubuntu2204test99:/usr/local/jenkins-runner# curl -sO http://192.168.1.99:11182/jnlpJars/agent.jar
root@ubuntu2204test99:/usr/local/jenkins-runner# ll
total 1376
drwxr-xr-x 2 root root 4096 Sep 1 05:32 ./
drwxr-xr-x 14 root root 4096 Sep 1 05:32 ../
-rw-r--r-- 1 root root 1398060 Sep 1 05:32 agent.jar
# 从节点启动Jenkins代理,我这里使用systemd来接管了
root@ubuntu2204test99:~# vi /etc/systemd/system/jenkins-slave.service
[Unit]
Description=jenkins slave service
[Service]
Type=simple
ExecStart=/usr/local/jdk17/bin/java -jar /usr/local/jenkins-runner/agent.jar -url http://192.168.1.99:11182/ -secret 6ccc6d2b50d3154e2d705f4f7c8c81b68ecc5e384fedb5fdbe246d66820d566a -name test99 -workDir "/root/Jenkins/jenkins_slave"
Restart=always
KillMode=process
RestartSec=
[Install]
WantedBy=multi-user.target
# 启动
root@ubuntu2204test99:/usr/local/jenkins-runner# systemctl start jenkins-slave.service
# 查看Jenkins状态
root@ubuntu2204test99:/usr/local/jenkins-runner# systemctl status jenkins-slave.service
● jenkins-slave.service - jenkins slave service
Loaded: loaded (/etc/systemd/system/jenkins-slave.service; disabled; vendor preset: enabled)
Active: active (running) since Mon 2025-09-01 05:34:17 UTC; 5s ago
.......
# 开启启动
root@ubuntu2204test99:/usr/local/jenkins-runner# systemctl enable jenkins-slave.service
Created symlink /etc/systemd/system/multi-user.target.wants/jenkins-slave.service → /etc/systemd/system/jenkins-slave.service.
image-20250901133526997
好了,到这里大概Jenkins的部署过程已经,演示完毕了,下一章把一些常用的设置和打包环境介绍下。