Github/Gitee Webhook觸發自動部署-Jenkins
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 訪問令牌創建
- 登錄 Gitee → 設置 → 私人令牌 - Gitee.com
- 創建 Token:
- 權限:
projects
、pull_requests
- 備注:Jenkins自動部署
- 權限:
- jenkins設置 →全局憑據 (unrestricted) →添加「添加憑據」,Gitee API令牌
- ID:(建議使用有意義的ID)
- 安裝Gitee插件
- Go to Manage Jenkins -> Manage Plugins -> Available
- 轉到“管理 Jenkins” -> “管理插件” -> “可用插件”
- 正確篩選條件輸入:Gitee
- 在下面的可選列表中勾選 Gitee 安裝
- 系統配置 →Gitee 配置 (測試通過)
2. Jenkins 項目配置
- Gitee webhook 觸發構建,需要在 Gitee webhook 中填寫 URL: http://xxx:8080/gitee-project/test(test是項目名)
- Gitee WebHook 密碼 待會復制到Gitee WebHook 密碼
3. Gitee Webhook 配置
-
倉庫 → 管理 → WebHooks → 添加WebHook
-
參數設置:
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 配置
- 倉庫 → Settings → Webhooks → Add webhook
- 參數設置:
- URL: 復制系統設置中的Github
Hook URL
- Secret (可選) : 與設置中保持一致
- URL: 復制系統設置中的Github
4.jenkins項目設置
- 勾選
GitHub hook trigger for GITScm polling
5.測試Webhook
點擊Redeliver
查看請求發送情況
或者手動git push 自動觸發構建