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

news2025/7/23 6:38:57

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-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 访问令牌创建
  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.coloradmin.cn/o/2400697.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新松机械臂 2001端口服务的客户端例程

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

电脑网络重置,找不到原先自家的WIFI,手机还能正常连接并上网

问题排查&#xff1a;1、电脑感觉网络太慢&#xff0c;因此打算点击了网络重置 2、点击提示会删除网络&#xff0c;在五分钟后关机重启 3、从设备管理器设备的无线wifi属性-事件中发现删除记录 4、选择更新驱动程序 5、从列表中选取 6、更改回老驱动版本 备选方案&#…

期末复习(学习)之机器学习入门基础

上课没听过报道。欢迎补充交流&#xff01; 前言&#xff1a;老师画的重点其实可以完全不用看&#xff0c;我这里只是看了一眼书顺着书本敲一遍。 比较干货的部分&#xff0c;直接看学习通的内容就好。最重要的是把学习通的内容记好。 目录 老师划的重点&#xff1a;P50 结构…

网络各类型(BMA,NBMA,P2P)

网络类型—基于二层&#xff08;数据链路层&#xff09;使用的协议不同从而导致数据包封装方式不同&#xff0c;工作方式也有所区别&#xff0c;从而对网络本身进行分类 一、网络类型分类 2. 关键差异对比 1. HDLC&#xff08;高级数据链路控制协议&#xff09; 协议特点&…

【计算机网络】第3章:传输层—概述、多路复用与解复用、UDP

目录 一、概述和传输层服务 二、多路复用与解复用 三、无连接传输&#xff1a;UDP 四、总结 &#xff08;一&#xff09;多路复用与解复用 &#xff08;二&#xff09;UDP 一、概述和传输层服务 二、多路复用与解复用 三、无连接传输&#xff1a;UDP 四、总结 &#xff08…

神经符号AI的企业应用:结合符号推理与深度学习的混合智能

&#x1f4a1; 技术前沿&#xff1a; 神经符号AI代表了人工智能发展的新阶段&#xff0c;它将深度学习的模式识别能力与符号推理的逻辑分析能力有机结合&#xff0c;创造出更加智能、可解释且可靠的AI系统。这种混合智能技术正在重塑企业的智能化应用&#xff0c;从自动化决策到…

VSCode 中 C/C++ 安装、配置、使用全攻略:小白入门指南

引言 本文为Windows系统下安装配置与使用VSCode编写C/C代码的完整攻略&#xff0c;示例机器为Windows11。 通过本文的指导&#xff0c;你可以成功在Windows 机器上上使用VSCode进行C/C开发。 在文章开始之前&#xff0c;你可以先阅读下面这段话&#xff0c;以便于对步骤有个大…

重温经典算法——希尔排序

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 基本原理 希尔排序是插入排序的改进版&#xff0c;通过按增量分组并逐步缩小增量实现排序。时间复杂度取决于增量序列&#xff0c;平均约为 O(n log n) 到 O(n^(3/2))&…

CortexON:开源的多代理AI系统无缝自动化和简化日常任务

简介 CortexON是一个开源的多代理AI系统&#xff0c;灵感来自Manus和OpenAI DeepResearch等高级代理平台。CortexON旨在无缝自动化和简化日常任务&#xff0c;擅长执行复杂的工作流程&#xff0c;包括全面的研究任务、技术操作和复杂的业务流程自动化。 技术架构 CortexON的技…

海信IP810N-海思MV320芯片-安卓9-2+16G-免拆优盘卡刷固件包

海信IP810N-海思MV320芯片-安卓9-216G-免拆优盘卡刷固件包 线刷方法&#xff1a;&#xff08;新手参考借鉴一下&#xff09; 1.准备一个优盘&#xff0c;最佳是4G&#xff0c;卡刷强刷刷机&#xff0c;用一个usb2.0的8G以下U盘&#xff0c;fat32&#xff0c;2048块单分区格式化…

2025年6月4日收获

Authorization Authorization是一种通用的、标准化的权限控制和认证的通用框架&#xff0c;它能够使跨系统和跨域的身份验证和授权管理更容易&#xff0c;使不同应用程序之间能够更轻松地实现单点登录&#xff08;SSO&#xff09;、用户身份验证和授权控制等。 在前端使用 axi…

leetcode hot100 链表(二)

书接上回&#xff1a; leetcode hot100 链表&#xff08;一&#xff09;-CSDN博客 8.删除链表的倒数第N个结点 class Solution { public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* currhead;int len0;while(curr){currcurr->next;len;}int poslen-n…

6. MySQL基本查询

1. 表的增删改查 Create(创建), Retrieve(读取), Update(更新), Delete(删除) 2. Create & Insert 语法: insert [info] table_name () values () 2.1. 案例: 创建一个学生表 指定列单行插入, 如果values前省略, 则默认是全属性插入多行指定列插入, 中间分隔符为, 3. 插入替…

CMS32M65xx/67xx系列CoreMark跑分测试

CMS32M65xx/67xx系列CoreMark跑分测试 1、参考资料准备 1.1、STM32官方跑分链接 1.2、官网链接 官方移植文档&#xff0c;如下所示&#xff0c;点击红框处-移植文档: A new whitepaper and video explain how to port CoreMark-Pro to bare-metal 1.3、测试软件git下载链接 …

中国区域30m/15天植被覆盖度数据集(2010-2022)

时间分辨率&#xff1a;日空间分辨率&#xff1b;&#xff1a;10m - 100m共享方&#xff1a;式开放获取数据大小&#xff1a;2.98 TB数据时间范围&#xff1a;2010-01-01 — 2022-12-31元数据更新时间&#xff1a;2024-12-23 数据集摘要 高时空分辨率的植被覆盖度产品存在着广…

力扣HOT100之二分查找:74. 搜索二维矩阵

这道题直接a了&#xff0c;我们可以参考上一道题&#xff1a;35.搜索插入位置的思路&#xff0c;详情见我的上一篇博客。将每一行的第一个元素当作一个数组中的元素&#xff0c;然后对这个数组进行二分查找&#xff0c;如果直接找到了target&#xff0c;则直接返回true&#xf…

编程技能:格式化打印04,sprintf

专栏导航 本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏&#xff0c;故划分为两个专栏导航。读者可以自行选择前往哪个专栏。 &#xff08;一&#xff09;WIn32 专栏导航 上一篇&#xff1a;编程技能&#xff1a;格式化打印03&#xff0c;printf 回到目录…

R语言基础| 下载、安装

在此前的单细胞教程中&#xff0c;许多小伙伴都曾因为R语言基础不足而十分苦恼。R语言是一种开源的编程语言和软件环境&#xff0c;专门用于统计分析、图形表示和数据挖掘。它最初由Ross Ihaka和Robert Gentleman在1993年创建&#xff0c;旨在为统计学家和数据分析师提供一个广…

微软的新系统Windows12未来有哪些新特性

在今年即将到来的重大设计升级中,苹果计划对其全线操作系统统一按年份命名,作为另一巨头微软的win12还远吗?win11和win10是微软现在正在用的主流版本,win11系统发布于2021年6月24日,win10系统发布于2015年7月29日。预计win12尝鲜版可能在2025年下半年或明年。 尽管win12还…

在虚拟宇宙中低语——进程间通信,Linux命名管道的前世今生

文章目录 &#x1f30c; 序章&#x1f320; 一、命名管道的宿命与哲学1.1、创建及简单使用1.2、命名管道的工作原理1.3、命名管道与匿名管道的区别 2、命名管道的特点及特殊场景2.1、特点2.2、四种特殊场景 3、命名管道实操3.1、实现文件拷贝3.2、实现进程控制 小结 &#x1f3…