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-jdk21
USER 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-compose
USER 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-blueocean
user: root
restart: on-failure
ports:
- "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:ro
environment:
# 确保使用正确的PATH
# 华为云区域设置
TZ: "Asia/Shanghai"
DOCKER_HOST: "unix:///var/run/docker.sock"
deploy:
resources:
limits:
cpus: "1.0"
memory: 1G
volumes:
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 any
environment {
PROJECT_DIR = "${WORKSPACE}"
WAR_FILE = "tomcat9/war/ruoyi-admin-docker.war"
}
stages {
stage('准备环境') {
steps {
// 从安全存储位置复制.env
sh '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) {
// 滚动更新Tomcat
sh 'docker compose build && docker compose up -d'
// 健康检查
timeout(time: 1, unit: 'MINUTES') {
waitUntil {
script { // Wrap Groovy code in a script block
def 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 自动触发构建