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

article/2025/6/19 22:29:27

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 自动触发构建

在这里插入图片描述


http://www.hkcw.cn/article/exgixZUCLH.shtml

相关文章

华为OD机试真题——最小的调整次数/特异性双端队列(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

2025 A卷 100分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录+全流程解析/备考攻略/经验分享 华为OD机试真题《最小的调整次数/特异性双端…

建筑兔零基础人工智能自学记录101|Transformer(1)-14

Transformer 谷歌提出&#xff0c;一组编码-解码器 可以同时处理&#xff0c;通过位置编码来处理单词 实质是token词语接龙&#xff08;只是有不同的概率&#xff09; token对应向量 Transformer简述 文生图就需要用到transformer黑箱 token 内部层次 中间主要是embedding…

网线水晶头接法与8根线芯作用解析

网线的正确接法至关重要&#xff0c;它直接影响网络的稳定性与传输速度。而了解每根线的作用&#xff0c;更是深入掌握网络布线知识的关键。常见的网线为非屏蔽双绞线&#xff08;UTP&#xff09;&#xff0c;内部包含 8 根不同颜色的线芯&#xff0c;两两相互缠绕&#xff0c;…

【GESP真题解析】第 2 集 GESP 三级样题卷编程题 1:逛商场

大家好,我是莫小特。 这篇文章给大家分享 GESP 三级样题卷编程题第 1 题:逛商场。 题目链接 洛谷链接:B3848 逛商场 一、完成输入 根据输入格式描述,输入一共有三行,第一行为整数 N,数据范围: 1 ≤ N ≤ 100 1 \le N \le 100 1≤N≤100,使用 int 类型。 第二行为 N …

Nacos实战——动态 IP 黑名单过滤

1、需求分析 一些恶意用户&#xff08;‏可能是黑客、爬虫、DDoS ؜攻击者&#xff09;可能频繁请求服务器资​源&#xff0c;导致资源占用过高。针对这种问题&#xff0c;可以通过IP‏ 封禁&#xff0c;可以有效拉؜黑攻击者&#xff0c;防止资源​被滥用&#xff0c;保障合法…

基于Web的濒危野生动物保护信息管理系统设计(源码+定制+开发)濒危野生动物监测与保护平台开发 面向公众参与的野生动物保护与预警信息系统

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

流媒体协议分析:流媒体传输的基石

在流媒体传输过程中&#xff0c;协议的选择至关重要&#xff0c;它决定了数据如何封装、传输和解析&#xff0c;直接影响着视频的播放质量和用户体验。本文将深入分析几种常见的流媒体传输协议&#xff0c;探讨它们的特点、应用场景及优缺点。 协议分类概述 流媒体传输协议根据…

通过mqtt 发布温湿度

参考 用HAL库改写江科大的stm32入门例子-补充DHT11_江科大stm32安装hal库-CSDN博客 老夫上课的时候 &#xff0c;这部份讲的比较多 &#xff0c;出发点是 安利 “单总线”的具体使用。 这里无非是引入dht11 库&#xff0c; 使用前初始化 然后通话dht11库的方法 读取数据 &…

ApiHug 1.3.9 支持 Spring 3.5.0 + Plugin 0.7.4 内置小插件升级!儿童节快乐!!!

有用内置小插件 - ApiHug小插件&#xff0c;大用途https://apihug.github.io/zhCN-docs/how/005_helpful_inner_plugin SDK: [1.3.9-RELEASE] - 2025-06-01 Move the router auto-processing to an internal plugin for enhanced flexibility.Translate the OAS to json sch…

CTFHub-RCE 命令注入-无过滤

观察源代码 判断是Windows还是Linux 源代码中有 ping -c 4 说明是Linux 查看有哪些文件 127.0.0.1|ls 发现除了index.php文件外&#xff0c;还存在一个可疑的文件 打开flag文件 我们尝试打开这个文件 127.0.0.1|cat 19492844826916.php 可是发现 文本内容显示不出来&…

Mysql库的操作和表的操作

Mysql库和表的操作 库的操作1.查看数据库列表2.创建数据库3.使用数据库4.查看当前在那个数据库中5.显示数据库的创建语句6.修改数据库7.删除数据库8.备份和恢复数据库9.查看数据的连接情况(简单来说就是查看有多少人使用你的数据库) 表的操作1.创建表2.查看表结构3.修改表本身(…

Excel如何分开查看工作表方便数据撰写

首先我这里有2class和3class两个工作表 接下来我们点击视图 按照顺序分别点击新建窗口和全部重排 ### 然后就是这样 接下来就OK了

C++23 已弃用特性

文章目录 1. std::aligned_storage 与 std::aligned_union1.1 特性介绍1.2 被弃用的原因1.3 替代方案 2. std::numeric_limits::has_denorm2.1 特性介绍2.2 被弃用的原因 3. 总结 C23 已弃用特性包括&#xff1a;std::aligned_storage、std::aligned_union 与 std::numeric_lim…

MySQL事务和索引原理

目录 1. MySQL事务原理 1.1. 事务的基本概念 1.2. 事务隔离的实现机制 1.3. 事务的启动方式 2. 索引的原理 2.1. 索引的作用 2.2. 索引常用模型及适用场景 2.3. InnoDB中的索引结构 2.4. 索引维护 2.5. 覆盖索引 2.6. 联合索引和最左缀原则 2.7. 索引下推 1. MySQL事…

第十一章 Java基础-继承

文章目录 1.继承来源2.继承特点3.子类能继承父类中哪些内容1.继承来源 是为了解决代码的重复冗余。

【11408学习记录】考研英语写作提分秘籍:2013真题邀请信精讲+万能模板套用技巧

邀请信 英语写作2013年考研英语&#xff08;一&#xff09;真题小作文题目分析写作思路第一段&#xff1a;第二段&#xff1a;锦囊妙句1&#xff1a;锦囊妙句2&#xff1a;锦囊妙句3&#xff1a;锦囊妙句5&#xff1a;锦囊妙句6&#xff1a;锦囊妙句9&#xff1a;锦囊妙句14&am…

汽车电子笔记之:有关汽车电子AUTOSAR的一些名词解释

目录 1、概述 2、基础概念 2.1、SPEM 2.2、SPEC 2.3、SIP包 2.4、SLP 2.5、HLP 2.6 、AUTOSAR方法论 2.6.1、ECU Extruct 2.6.2、ECU Configuration Values&#xff08;EcuC&#xff09; 2.6.3、Software Component Deion 2.6.4、Measurement and Calibration S…

ASP.NET Core OData 实践——Lesson8增删改查原始类型Property(C#)

大纲 支持的接口主要模型设计控制器设计数据源查询(GET)查询基础类型的原始类型属性查询基类类型Entity的基础类型属性的值查询基类类型Entity的派生类型属性的原始值 查询派生类型Entity的基础类型属性查询派生类型Entity的属性值查询派生类型Entity的派生类型属性的原始值 新…

PCIE之Lane Reserval通道out of oder调换顺序

参考&#xff1a;测量小百科 | PCIe通道位置翻转(Lane Reversal)技术 参考&#xff1a;PCIe学习笔记&#xff08;3&#xff09;链路初始化和训练_pcie 有序集 lane-CSDN博客 案例上都是按照x4或者x8交叉&#xff0c;对于x2也是有办法交叉的&#xff0c;如果4lane的顺序并不是…

LXQt修改开始菜单高亮

开始菜单红色高亮很难看 mkdir -p ~/.local/share/lxqt/palettes/ mkdir -p ~/.local/share/lxqt/themes/ cp /usr/share/lxqt/palettes/Dark ~/.local/share/lxqt/palettes/Darker cp -p /usr/share/lxqt/themes/dark ~/.local/share/lxqt/themes/darker lxqt-panel.qss L…