1.Jenkins运维路(JenkinsDocker部署)

这个文章会把工作中Jenkins的应用方法写一下,给自己留下印象的同时也希望能给他人带来帮助。环境全部是自己的测试环境,因为就算再熟练也需要有个测试环境来验证,避免因为疏忽大意造成的错误。

1.使用Docker部署Jenkins

ruby 复制代码
# 创建所需目录
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进行初始化设置

null

image-20250901125843132

null

image-20250901125904984

null

image-20250901130210785

null

image-20250901130240698

3.安装常用插件

插件根据实际情况自己添加

sql 复制代码
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  --->   权限插件
null

image-20250901131054488

4.在容器中生成sshkey

ruby 复制代码
# 进入容器
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.添加代理节点

null

image-20250901132344590

null

image-20250901132358778

null

image-20250901132415984

null

image-20250901132715344

null

image-20250901132746232

null

image-20250901133139859

ruby 复制代码
# 从节点下载 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.
null

image-20250901133526997

好了,到这里大概Jenkins的部署过程已经,演示完毕了,下一章把一些常用的设置和打包环境介绍下。

相关推荐
liux352819 小时前
Ansible集群批量管理与维护完全指南
自动化运维
小星运维日记2 天前
2026年五大自动化运维系统测评:企业运维如何突破效率瓶颈?
自动化运维·自动化运维平台·自动化运维系统·自动化运维中心·自动化运维产品
用户0591562441255 天前
# Go语言 Windows 桌面自动化实战:从零开始掌握 winput
自动化运维
小胖体育生5 天前
Ansible Playbook编写全教程:从入门到实战(附完整案例+最佳实践)
自动化运维
极客小云8 天前
【[Python自动化] 我写了一个工具,一键将几百个Word/PDF简历自动汇总到Excel,早早下班!】
自动化运维
draking12 天前
从 3 小时到 15 分钟:我们的发布效率提升 10 倍之路
自动化运维
智能运维指南14 天前
信创深化期ITSM选型:打破流程割裂,锁定全栈适配的智能方案
自动化运维·aiops·it管理·itsm·itsm厂商
饼饼饼16 天前
从 0 到 1:前端 CI/CD 实战(第二篇:用Docker 部署 GitLab)
前端·自动化运维
唐叔在学习17 天前
用python实现类AI自动执行终端指令
后端·python·自动化运维