Github/Gitee Webhook触发自动部署-Jenkins
1、创建项目
1.jenkins-安装
- jenkins执行docker compose
- 这里介绍方式一: 安装Docker-cli, 并挂载Docker 套接字
创建自定义 Jenkins 镜像
nano Dockerfile
# Dockerfile.jenkins
FROM jenkins/jenkins:2.504.2-lts-jdk21USER root# 创建并配置APT源(华为云源)
RUN echo "deb http://repo.huaweicloud.com/debian bookworm main" > /etc/apt/sources.list && \echo "deb http://repo.huaweicloud.com/debian bookworm-updates main" >> /etc/apt/sources.list && \echo "deb http://repo.huaweicloud.com/debian-security bookworm-security main" >> /etc/apt/sources.list# 安装 Docker CLI 和 Compose V2
RUN apt-get update && \apt-get install -y ca-certificates curl gnupg && \install -m 0755 -d /etc/apt/keyrings && \curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg && \chmod a+r /etc/apt/keyrings/docker.gpg && \echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null && \apt-get update && \apt-get install -y docker-ce-cli docker-compose-plugin# 创建 Compose 别名
RUN ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/local/bin/docker-composeUSER jenkins
构建镜像
docker build -t myjenkins-dockercil .
启动Jenkins
nano docker-compose.yaml
services:jenkins:image: myjenkins-dockercil # 通过官方镜像jenkins/jenkins:2.504.2-lts-jdk21构建container_name: jenkins-blueoceanuser: rootrestart: on-failureports:- "8080:8080"- "50000:50000"volumes:- jenkins-data:/var/jenkins_home- /var/run/docker.sock:/var/run/docker.sock- /etc/docker/certs.d:/etc/docker/certs.d:ro- /etc/jenkins/secrets/ry-env:/etc/jenkins/secrets/ry-env- /var/run/docker.sock:/var/run/docker.sock# 按需取消注释# - /etc/ansible/hosts:/etc/ansible/hosts:ro# - ~/.ssh/id_rsa:/root/.ssh/id_rsa# - ~/.ssh/known_hosts:/root/.ssh/known_hosts:roenvironment:# 确保使用正确的PATH# 华为云区域设置TZ: "Asia/Shanghai"DOCKER_HOST: "unix:///var/run/docker.sock"deploy:resources:limits:cpus: "1.0"memory: 1Gvolumes:jenkins-data:
启动Jenkins
docker compose up -d#登录密码在日志中查看
docker compose logs -f#登录成功后安装对应插件: Gitee、Github等
2.创建流水线任务
配置仓库地址等内容
-
准备文件Jenkinsfile 等文件, 并
push
到你的Gitee/Github -
本文测试代码获取: rytest - Gitee.com
- 注意此测试用的分支是huawei
git clone -b huawei https://gitee.com/xbd_zc/rytest.git
-
准备
.env
文件# 创建安全目录 sudo mkdir -p /etc/jenkins/secrets sudo nano /etc/jenkins/secrets/ry-env# 数据库配置 MYSQL_ROOT_PASSWORD=ry$1234 MYSQL_DATABASE=ry MYSQL_USER=xbdzc MYSQL_PASSWORD=123456# Tomcat 连接配置 MYSQL_HOST=ry-mysql DB_USER=xbdzc DB_PASSWORD=123456
-
Jenkinsfile
pipeline {agent anyenvironment {PROJECT_DIR = "${WORKSPACE}"WAR_FILE = "tomcat9/war/ruoyi-admin-docker.war"}stages {stage('准备环境') {steps {// 从安全存储位置复制.envsh 'cp /etc/jenkins/secrets/ry-env .env'// 设置严格权限sh 'chmod 600 .env'}}stage('准备应用') {steps {// 清空部署目录sh 'rm -rf tomcat9/new-app/*'// 解压WAR到部署目录sh "unzip -q ${WAR_FILE} -d tomcat9/new-app/"}}stage('部署更新') {steps {dir(PROJECT_DIR) {// 滚动更新Tomcatsh 'docker compose build && docker compose up -d'// 健康检查timeout(time: 1, unit: 'MINUTES') {waitUntil {script { // Wrap Groovy code in a script blockdef status = sh(script: "curl -sI -o /dev/null -w '%{http_code}' http://localhost:8080/login",returnStdout: true).trim()echo "Health check status: ${status}"status == "200" // Last expression is the return value}}}}}}}
}
2、Gitee 配置
1. Gitee 访问令牌创建
- 登录 Gitee → 设置 → 私人令牌 - Gitee.com
- 创建 Token:
- 权限:
projects
、pull_requests
- 备注:Jenkins自动部署
- 权限:
- jenkins设置 →全局凭据 (unrestricted) →添加「添加凭据」,Gitee API令牌
- ID:(建议使用有意义的ID)
- 安装Gitee插件
- Go to Manage Jenkins -> Manage Plugins -> Available
- 转到“管理 Jenkins” -> “管理插件” -> “可用插件”
- 正确筛选条件输入:Gitee
- 在下面的可选列表中勾选 Gitee 安装
- 系统配置 →Gitee 配置 (测试通过)
2. Jenkins 项目配置
- Gitee webhook 触发构建,需要在 Gitee webhook 中填写 URL: http://xxx:8080/gitee-project/test(test是项目名)
- Gitee WebHook 密码 待会复制到Gitee WebHook 密码
3. Gitee Webhook 配置
-
仓库 → 管理 → WebHooks → 添加WebHook
-
参数设置:
URL: http://<你的Jenkins域名>/gitee-project/xx Gitee WebHook密码: jenkins上的 WebHook密码一致 触发事件: Push事件
4.推送测试
git push
自动触发构建
3、GitHub 配置
1. 创建GitHub 登录密码凭据
jenkins设置 →全局凭据 (unrestricted) →添加「添加凭据」,
- 类型 :
Username with password
- 用户名: zhangsan 如仓库地址: https://github.com/zhangsan/xxx.git
- 密码: Github登录密码
2.jenkins设置hook url
系统管理–>系统配置–>Github
- 复制此地址
- 共享 Secret (可选)
3. GitHub Webhook 配置
- 仓库 → Settings → Webhooks → Add webhook
- 参数设置:
- URL: 复制系统设置中的Github
Hook URL
- Secret (可选) : 与设置中保持一致
- URL: 复制系统设置中的Github
4.jenkins项目设置
- 勾选
GitHub hook trigger for GITScm polling
5.测试Webhook
点击Redeliver
查看请求发送情况
或者手动git push 自动触发构建