Jenkins
概述
Jenkins 是一个开源的自动化服务器,广泛用于持续集成(CI)和持续交付(CD)过程。它能够帮助开发团队自动化构建、测试和部署软件,从而提高开发效率和软件质量。
核心能力:
- 持续集成:代码提交后自动触发构建和测试
- 持续交付/部署:自动化部署至测试或生产环境
- 插件生态:支持 1800+ 插件,可与 Git、Maven、Docker、Kubernetes 等工具集成
- 流水线即代码:通过 Jenkinsfile 定义完整构建流程
部署准备
1. 系统要求
| 项目 | 最低配置 | 推荐配置 |
|---|---|---|
| CPU | 1 核 | 2 核+ |
| 内存 | 1 GB | 2 GB+ |
| 硬盘 | 10 GB | 20 GB+ |
2. 创建 Docker Compose 编排文件
docker-compose.yaml:
services:
jenkins:
image: jenkins/jenkins:2.478-jdk17
container_name: jenkins
restart: always
user: root
environment:
- TZ=Asia/Shanghai
ports:
- "8080:8080"
volumes:
- ./jenkins/data:/var/jenkins_home
deploy:
resources:
limits:
cpus: "1"
memory: "2G"3. 参数说明
| 参数 | 说明 |
|---|---|
user: root |
以 root 用户运行,避免容器内权限不足 |
./jenkins/data |
本地挂载目录,用于持久化 Jenkins 数据 |
启动服务
docker compose up -d查看启动日志:
docker logs jenkins -f --tail=50验证访问
curl http://127.0.0.1:8080在浏览器中打开 http://<服务器IP>:8080 即可访问 Jenkins。
初始配置
1. 获取初始管理员密码
Jenkins 首次启动后会生成一个初始管理员密码,查看方式如下:
docker logs jenkins 2>&1 | grep -A 10 "Jenkins initial setup is required"或在容器内直接查看:
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword输出示例:a371e758bc1f44f4960a5f53358f1070
2. 解锁 Jenkins
- 在浏览器访问
http://<服务器IP>:8080 - 输入上述获取的初始密码
- 点击「继续」
3. 安装推荐插件
选择「安装推荐的插件」,Jenkins 将自动安装常用插件(Git、Pipeline、Docker 等),过程约 5-10 分钟。
4. 创建管理员用户
按提示创建管理员账户,用于后续登录 Jenkins。
5. 完成配置
点击「保存并完成」,即可进入 Jenkins 主界面。
常用管理命令
| 操作 | 命令 |
|---|---|
| 启动 Jenkins | docker compose up -d |
| 停止 Jenkins | docker compose stop |
| 重启 Jenkins | docker compose restart |
| 查看状态 | docker compose ps |
| 查看日志 | docker logs jenkins -f --tail=100 |
| 进入容器 | docker exec -it jenkins /bin/bash |
常用 Jenkins 命令(容器内)
进入容器后,可使用以下命令管理 Jenkins:
# 查看 Jenkins 版本
cat /var/jenkins_home/jenkins.install.UpgradeWizard.state
# 重启 Jenkins(在 Jenkins 界面中也可操作)
# 访问 http://<IP>:8080/restart
# 查看 Jenkins 系统信息
java -jar /usr/share/jenkins/jenkins.war --version常见问题
Q:启动后浏览器访问 502 或连接被拒绝?
- 确认容器是否正常运行:
docker ps | grep jenkins- 查看启动日志排查错误:
docker logs jenkins --tail=50- 检查端口 8080 是否被其他服务占用:
netstat -tlnp | grep 8080Q:忘记管理员密码怎么办?
停止 Jenkins,修改配置启用安全跳过:
docker stop jenkins
# 编辑 jenkins 数据目录下的 config.xml
vim ./jenkins/data/config.xml找到 <useSecurity>true</useSecurity> 改为 false,重启 Jenkins 后无需密码登录,重置密码后改回配置。
Q:插件安装失败或网络超时?
- 修改 Jenkins 插件源为国内镜像:
docker exec jenkins sed -i 's#https://updates.jenkins.io/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' /var/jenkins_home/updates/default.json- 重启 Jenkins 后重新尝试安装插件。
Q:容器内无法使用 Docker 命令?
如需在 Jenkins 容器内执行 Docker 命令,可使用以下方式:
方式一:挂载 Docker Socket
volumes:
- ./jenkins/data:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker方式二:使用 Jenkins 官方 Docker 镜像
image: jenkins/jenkins:2.478-jdk17注意:方式一存在安全风险,生产环境需谨慎使用。
Q:如何备份 Jenkins 数据?
备份 ./jenkins/data 目录即可:
# 停止 Jenkins 后备份
docker compose down
tar -czf jenkins_backup.tar.gz ./jenkins/data
docker compose up -d恢复时解压到 ./jenkins/data 目录并重启。
快速配置 Pipeline 示例
创建一个简单的 Pipeline 任务:
- 点击「新建任务」→ 输入名称 → 选择「流水线」
- 在流水线脚本中输入:
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
}
}
stage('Test') {
steps {
echo 'Testing...'
}
}
stage('Deploy') {
steps {
echo 'Deploying...'
}
}
}
}- 点击「保存」并「立即构建」