【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 自動觸發構建

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/907677.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/907677.shtml
英文地址,請注明出處:http://en.pswp.cn/news/907677.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言數據結構-鏈式棧

頭文件&#xff1a;stack.h #ifndef __STACK_H__ #define __STACK_H__ #include <stdio.h> #include <stdlib.h> typedef int DataType; /* 鏈式棧節點類型 */ typedef struct staNode { DataType data; struct staNode *pNext; }StackNode; /* 鏈式棧…

M4Pro安裝ELK(ElasticSearch+LogStash+Kibana)踩坑記錄

ElasticSearch安裝&#xff0c;啟動端口9200&#xff1a; docker pull elasticsearch:8.13.0 新增配置文件elasticsearch.yml&#xff1a; cd /opt/homebrew/etc/ mkdir elasticsearch_config cd elasticsearch_config vi elasticsearch.yml cluster.name: "nfturbo…

uni-app學習筆記十六-vue3頁面生命周期(三)

uni-app官方文檔頁面生命周期部分位于頁面 | uni-app官網。 本篇再介紹2個生命周期 1.onUnload&#xff1a;用于監聽頁面卸載。 當頁面被關閉時&#xff0c;即頁面的緩存被清掉時觸發加載onUnload函數。 例如:在demo6頁面點擊跳轉到demo4&#xff0c;在demo4頁面回退不了到d…

Java互聯網大廠面試:從Spring Boot到Kafka的技術深度探索

Java互聯網大廠面試&#xff1a;從Spring Boot到Kafka的技術深度探索 在某家互聯網大廠的面試中&#xff0c;面試官A是一位技術老兵&#xff0c;而被面試者謝飛機&#xff0c;號稱有豐富的Java開發經驗。以下是他們的面試情景&#xff1a; 場景&#xff1a;電商平臺的后端開發…

機器學習算法——KNN

一、KNN算法簡介 1.KNN思想 &#xff08;1&#xff09;K-近鄰算法 根據你的“鄰居”來推斷你是什么類別 KNN算法思想&#xff1a;如果一個樣本在特征空間&#xff08;訓練集&#xff09;中的k個最相似的樣本中的大多數屬于某一個類別。則該樣本也屬于這個類別 &#xff08…

如何評估CAN總線信號質量

CAN總線網絡的性能在很大程度上取決于其信號質量。信號質量差可能導致通信錯誤&#xff0c;進而引發系統故障、效率降低甚至安全隱患。因此&#xff0c;評估和確保CAN總線信號質量是維護系統健康和可靠性的關鍵。 在CAN總線網絡中&#xff0c;數據通過雙絞線上的差分信號傳輸。…

封裝一個小程序選擇器(可多選、單選、搜索)

組件 <template><view class"popup" v-show"show"><view class"bg" tap"cancelMultiple"></view><view class"selectMultiple"><view class"multipleBody"><view class&…

2.1HarmonyOS NEXT開發工具鏈進階:DevEco Studio深度實踐

HarmonyOS NEXT開發工具鏈進階&#xff1a;DevEco Studio深度實踐 在HarmonyOS NEXT全棧自研的技術體系下&#xff0c;DevEco Studio作為一站式開發平臺&#xff0c;通過深度整合分布式開發能力&#xff0c;為開發者提供了從代碼編寫到多端部署的全流程支持。本章節將圍繞多設…

LLMs之Tool:Workflow Use的簡介、特點、安裝和使用方法、以及案例應用

LLMs之Tool&#xff1a;Workflow Use的簡介、特點、安裝和使用方法、以及案例應用 目錄 Workflow Use的簡介 1、Workflow Use的特點 2、Workflow Use的愿景和路線圖 Workflow Use的安裝和使用方法 1、安裝 2、使用方法 查看所有命令 從 Python 中使用&#xff1a; 啟動…

二分法算法技巧-思維提升

背景&#xff1a; 在寫力扣題目“搜素插入位置 ”時&#xff0c;發現二分法的一個細節點&#xff0c;打算記錄下來&#xff0c;先看一張圖&#xff1a; 我們知道&#xff0c;排序數組&#xff0c;更高效的是二分查找法~~~而二分法就是切割中間&#xff0c;定義left是最開始的&…

Python 訓練營打卡 Day 40

訓練和測試的規范寫法 一、黑白圖片的規范寫法&#xff0c;以MNIST數據集為例 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms # 用于加載MNIST數據集 from torch.utils.data import DataLoader # 用于創建…

數據結構之棧:原理與常用方法

1. 棧的定義 Stack是Vector的一個子類&#xff0c;它實現標準的后進先出堆棧。Stack只定義了創建空堆棧的默認構造方法。&#xff08;實際上是實現了List接口&#xff0c;因為Vector是List的子類&#xff09;。 Stack() // 創建一個空棧 2. 棧的基本操作 // 壓棧操作 publi…

鴻蒙OSUniApp 開發支持圖片和視頻的多媒體展示組件#三方框架 #Uniapp

使用 UniApp 開發支持圖片和視頻的多媒體展示組件 前言 在現代移動應用中&#xff0c;圖片和視頻已成為內容展示的主流形式。一個優秀的多媒體展示組件不僅能提升用戶體驗&#xff0c;還能增強產品的互動性和視覺沖擊力。隨著鴻蒙&#xff08;HarmonyOS&#xff09;生態的不斷…

STM32CubeMX,arm-none-eabi-gcc簡單試用

在windows下&#xff0c;為stm32系列單片機編程&#xff0c;keil有了免費的試用版&#xff0c;有很多開發板示例&#xff0c;給學習單片機編程帶來很大的方便。 STM32CubeMX提供了stm32單片機的功能設置&#xff0c;在輸出方式上給出了幾種方式&#xff0c;有mdk&#xff08;k…

灌水論壇系統總體設計文檔

一、實驗題目 灌水論壇系統 二、實驗目的 旨在通過一個相對完整且功能豐富的Web應用實例&#xff0c;全面地實踐和鞏固Web開發所需的各項核心技術和工程方法&#xff0c;從而提升其綜合應用能力和解決實際開發問題的能力。它不僅僅是完成一個軟件&#xff0c;更是一個學習、…

Android 13中 配置簽名文件與內置相應的Apk

目錄 1.問題場景 2.實現思路 3.將測試代碼做成APK并配置簽名 4.將apk內置到系統當中的方法 1.問題場景 在展訊平臺中Android13的源碼已知的情況下&#xff0c;客戶寫了一個測試類用于調用系統中的一些接口來檢驗一些功能。為了方便調試排查問題我首先的思路是將客戶寫的測試…

HarmonyOS 5 應用開發導讀:從入門到實踐

一、HarmonyOS 5 概述 HarmonyOS 5 是華為推出的新一代分布式操作系統&#xff0c;其核心設計理念是"一次開發&#xff0c;多端部署"。與傳統的移動操作系統不同&#xff0c;HarmonyOS 5 提供了更強大的跨設備協同能力&#xff0c;支持手機、平板、智能穿戴、智慧屏…

C語言創意編程:用趣味實例玩轉基礎語法(4)

文章目錄 0. 前言1. &#x1f308; 彩虹文字生成器1.1 程序效果展示1.2 完整代碼解析1.3 關鍵技術詳解1.3.1 Windows控制臺API1.3.2 顏色編碼1.3.3 安全輸入1.3.4 跨平臺考慮 2. &#x1f3b5; 簡易音樂播放器2.1 程序效果展示2.2 完整代碼解析2.3 關鍵技術詳解2.3.1 Windows B…

【專題】神經網絡期末復習資料(題庫)

神經網絡期末復習資料&#xff08;題庫&#xff09; 鏈接&#xff1a;https://blog.csdn.net/Pqf18064375973/article/details/148332887?sharetypeblogdetail&sharerId148332887&sharereferPC&sharesourcePqf18064375973&sharefrommp_from_link 【測試】 Th…

Python訓練營打卡 Day41

簡單CNN 知識回顧 數據增強卷積神經網絡定義的寫法batch歸一化&#xff1a;調整一個批次的分布&#xff0c;常用與圖像數據特征圖&#xff1a;只有卷積操作輸出的才叫特征圖調度器&#xff1a;直接修改基礎學習率 卷積操作常見流程如下&#xff1a; 1. 輸入 → 卷積層 → Batch…