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的部署过程已经,演示完毕了,下一章把一些常用的设置和打包环境介绍下。

相关推荐
草梅友仁4 天前
草梅 Auth 1.5.0 发布与自动化发包经验 | 2025 年第 35 周草梅周报
github·自动化运维·eslint
老实巴交的麻匪4 天前
(四)学习、实践、理解 CI/CD 与 DevOps:流水线工具 Pipeline
运维·云原生·自动化运维
会飞的小蛮猪5 天前
Grafana Loki LogMonitor采集日志
后端·自动化运维
perfect123126456 天前
轻量运维工具fastdp
自动化运维
会飞的小蛮猪7 天前
Prometheus运维(接入PrometheusAlert 实现通讯工具告警)
自动化运维
日月星辰Ace7 天前
基于 AWS Lambda + Jenkins 的自动化接口测试平台实践
自动化运维
会飞的小蛮猪8 天前
Prometheus运维(接入AlertManager 实现邮件告警)
自动化运维
陈哥聊测试9 天前
当DevOps落地实施撞上技术债务,如何量化债务突破困局
前端·自动化运维·devops