当前位置: 首页 > news >正文

【Github/Gitee Webhook触发自动部署-Jenkins】

Github/Gitee Webhook触发自动部署-Jenkins

Gitee Jenkins Docker Host 代码提交触发 Webhook 拉取代码到 WORKSPACE 解压 WAR 到 tomcat/new-app docker-compose build docker-compose up 健康检查 (HTTP GET /health) 返回 200 OK 标记部署成功 Gitee Jenkins Docker Host

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 访问令牌创建
  1. 登录 Gitee → 设置 → 私人令牌 - Gitee.com
  2. 创建 Token:
    • 权限:projectspull_requests
    • 备注:Jenkins自动部署
  3. jenkins设置 →全局凭据 (unrestricted) →添加「添加凭据」,Gitee API令牌
    • ID:(建议使用有意义的ID)
  4. 安装Gitee插件
    • Go to Manage Jenkins -> Manage Plugins -> Available
    • 转到“管理 Jenkins” -> “管理插件” -> “可用插件”
    • 正确筛选条件输入:Gitee
    • 在下面的可选列表中勾选 Gitee 安装
  5. 系统配置 →Gitee 配置 (测试通过)

在这里插入图片描述

2. Jenkins 项目配置
  • Gitee webhook 触发构建,需要在 Gitee webhook 中填写 URL: http://xxx:8080/gitee-project/test(test是项目名)
  • Gitee WebHook 密码 待会复制到Gitee WebHook 密码

在这里插入图片描述

在这里插入图片描述

3. Gitee Webhook 配置
  1. 仓库 → 管理 → WebHooks → 添加WebHook

  2. 参数设置:

    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 配置
  1. 仓库 → Settings → Webhooks → Add webhook
  2. 参数设置:
    • URL: 复制系统设置中的Github Hook URL
    • Secret (可选) : 与设置中保持一致

在这里插入图片描述

4.jenkins项目设置
  • 勾选GitHub hook trigger for GITScm polling

在这里插入图片描述

5.测试Webhook

点击Redeliver 查看请求发送情况

在这里插入图片描述

或者手动git push 自动触发构建

在这里插入图片描述

相关文章:

  • 实现MPC钱包
  • [蓝桥杯]拉马车
  • Qt程序添加调试输出窗口:CONFIG += console
  • 设计模式——简单工厂模式(创建型)
  • 免费且好用的PDF水印添加工具
  • Namespace 命名空间的使用
  • PDFGear——完全免费且功能强大的PDF处理软件
  • AI与智能驾驶的关系和原理:技术融合与未来展望-优雅草卓伊凡一、AI大模型基础原理与智能驾驶
  • 经济法-7-上市公司首次发行、配股增发条件
  • org.junit.runners.model.InvalidTestClassError:此类问题的解决
  • 在 ABP VNext 中集成 Serilog:打造可观测、结构化日志系统
  • Python实现P-PSO优化算法优化循环神经网络LSTM回归模型项目实战
  • 【EF Core】 EF Core 批量操作的进化之路——从传统变更跟踪到无跟踪更新
  • 用 Spring Boot 静态资源映射 vs 用 Nginx 提供静态文件服务总结
  • .net Avalonia 在centos部署
  • AR测量工具:精准测量,多功能集成
  • 寒假学习笔记【匠心制作,图文并茂】——1.20拓扑、强连通分量、缩点
  • 深入解析 Dotnet-Boxed.Framework:提升 .NET 开发效率的利器
  • LiquiGen流体导入UE
  • Windows上用FFmpeg推流及拉流的流程概览
  • qq在线网站代码生成/网站创建的流程是什么
  • 政府网站建设团队/湖南靠谱关键词优化
  • 燕郊医院网站建设/原创代写文章平台
  • 昆明双鼎网站制作/二十条优化措施全文
  • 已有网站怎么修改/网址收录查询
  • 网站推广方式方法/网络营销策划案怎么写