【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 复制代码
# 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

构建镜像

bash 复制代码
docker build -t myjenkins-dockercil .
启动Jenkins

nano docker-compose.yaml

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

bash 复制代码
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文件

    ini 复制代码
    # 创建安全目录
    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

groovy 复制代码
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 项目配置
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) →添加「添加凭据」,

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

相关推荐
小顿的企业观察12 分钟前
中企出海战略规划,正在从“走出去”转向“走进去”
大数据·运维·人工智能·产品运营·制造
数智化转型推荐官29 分钟前
2026统一身份管理系统五大发展趋势解读
java·运维·微服务
看菜鸡互33 分钟前
探索用 SlideML 让大模型生成 PPT 的实验方法
java·运维
一孤程33 分钟前
Airtest自动化测试第五篇:小程序与Web测试——跨平台自动化全覆盖
前端·自动化测试·小程序·自动化·测试·airtest
liguojun20253 小时前
篮球馆自动计时收费系统:从规则配置到自动结算的全流程拆解
java·大数据·运维·人工智能·物联网·1024程序员节
Promise微笑3 小时前
红外分辨率 160×120、320×240、384×288 与 640×480实战选型指南
大数据·运维·人工智能·物联网
云飞云共享云桌面4 小时前
单机建模卡顿运维繁琐!中小型机械制造厂云飞云 3D 云桌面落地
运维·服务器·网络·3d·自动化·电脑·负载均衡
zandy10115 小时前
体验家 XMPlus 批量操作与自动化工作流引擎:让大规模运营从手动执行走向规则驱动
大数据·运维·自动化
姚不倒5 小时前
从 A 记录到 CDN 切换:我的 DNS 认知跃迁之路
运维·cdn·dns
Sagittarius_A*6 小时前
Docker:渗透前置容器化核心基础
运维·安全·docker·容器