Docker 部署 Jenkins 并与 Gitee 联动

环境准备
- Linux 服务器、docker
- Gitee 仓库
Docker 部署 Jenkins
拉取 LTS 长期支持版本(JDK 17):
docker pull jenkins/jenkins:lts-jdk17创建持久化数据卷并启动容器:
# 创建数据卷docker volume create jenkins-data
# 启动容器docker run -d \ --name jenkins \ --restart always \ -p 8080:8080 \ -p 50000:50000 \ -v jenkins-data:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ -u root \ jenkins/jenkins:lts-jdk178080 是 Web 界面端口,50000 是 Agent 通信端口。挂载 docker.sock 是为了让 Jenkins 容器内可以直接操作宿主机的 Docker。
获取初始管理员密码
首次访问 http://<服务器IP>:8080 需要输入初始密码。
本次部署使用宿主机8080端口,在云服务器管理平台开放防火墙规则。
方式一(推荐,容器内读取):
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword方式二(如果你绑定了宿主机目录):
cat /data/jenkins_home/secrets/initialAdminPassword安装插件
访问 Jenkins 后,按引导完成初始化。插件选择页面勾选以下插件:
| 插件 | 用途 |
|---|---|
| Gitee | 对接 Gitee 代码仓库 |
| Docker Pipeline | 流水线中使用 Docker |
如果初始化时漏装了,可以后续在 系统管理 → 插件管理 → 可选插件 中搜索安装。
获取 Gitee 私人令牌
私人令牌仅生成时显示一次,请妥善保存。
- Gitee 右上角头像 → 设置
- 左侧菜单 → 私人令牌
- 点击 生成新令牌,勾选以下权限:
repo— 仓库读写hook— Webhook 管理
- 复制生成的令牌字符串
配置 Gitee 凭证
为了让 Jenkins 能够拉取 Gitee 私有仓库,需要添加访问凭证。
- 进入 系统管理 → Manage Credentials
- 选择 全局 域名,点击 添加凭据
- 按以下配置填写:
| 字段 | 值 |
|---|---|
| 类型 | Username with password |
| 用户名 | Gitee 登录账号(如 wu-wenkai-kk) |
| 密码 | Gitee 私人令牌(Token,非登录密码) |
| ID | 自定义标识,如 gitee-token-wwk |
创建流水线并配置 Webhook
1. 新建流水线任务
Jenkins 首页 → 新建任务 → 输入名称 → 选择 流水线 → 确定。
2. 配置 Gitee 触发
在任务配置页面的 构建触发器 区域:
- 勾选 Gitee webhook 触发构建
- 勾选 推送代码(Push Event)
- 点击 生成 按钮,复制 Webhook 密码
此时页面会给出 Webhook 地址,格式如下:
http://120.55.164.194:8080/gitee-project/<任务名>3. 配置 Gitee Webhook
在 Gitee 仓库中:
- 进入 管理 → Webhooks
- 填写 Jenkins 生成的 Webhook 地址
- 填入 Webhook 密码作为 签名密钥
- 勾选触发事件(Push 即可)
- 点击添加
Jenkins 的 Webhook 地址必须是 Gitee 能访问到的公网地址。如果 Jenkins 部署在内网,建议使用内网穿透工具(如 frp)暴露服务。
验证
完成以上步骤后,向 Gitee 仓库推送一次代码,观察 Jenkins 是否自动触发构建。
git add .git commit -m "test: 测试 Jenkins 自动构建"git push
如果一切正常,Jenkins 界面将自动出现一次新的构建记录。 测试用户:user 密码:wwktest123
小结
至此,你已完成了 Docker 部署 Jenkins + Gitee Webhook 联动,实现了代码推送即自动构建的基础 CI 流水线。后续可根据需要扩展流水线步骤,加入自动化测试、镜像构建、通知等环节。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!













