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

相关推荐
垚垚学技术_聚焦云原生5 天前
Ansible Playbook 进阶:when 条件、loop 循环、handlers 触发器落地
linux·ansible·自动化运维·devops
Sudo思维5 天前
我写了 3 年代码,最后悔的是没早点把服务器巡检脚本化(附完整脚本)
自动化运维
JoePotter5 天前
从零搭建华为云 EVS 每日自动快照:hcloud + PowerShell + 邮件报告实战
华为云·自动化运维·powershell·evs·koocli·快照备份·mailozaurr
Helix2505 天前
Intune 可观测性与 AI 排障实战:Copilot、高级分析与自动化运维指南
copilot·自动化运维·terminal·intune 可观测性·设备时间线·intelligent·ai排障
MoRay6 天前
大专大一,手搓 AIOps 底座:当大模型幻觉时,我的系统在 98.9ms 抓住了宕机的 Redis
自动化运维
梯度下降者9 天前
二、自动化运维架构师的三大核心能力
ci/cd·架构师·自动化运维·iac·平台工程
迪康软件zz10 天前
从 PHP 高危漏洞看纵深防御:资产盘点、补丁管理与端点防护实践
运维·安全·自动化运维
智能运维指南10 天前
企业 IT 管理软件如何选型?先理清监控、服务管理、配置与自动化能力
运维·自动化·自动化运维·嘉为蓝鲸
垚垚学技术_聚焦云原生10 天前
Ansible 变量体系详解:主机变量、组变量、全局变量优先级实战
ansible·自动化运维·devops·变量优先级
智能运维指南10 天前
企业 IT 运维自动化平台怎么选?从场景匹配到 POC 验证的完整评估框架
运维·自动化·自动化运维·嘉为蓝鲸