gitlab+jenkins

文章目錄

  • 架構
    • gitlab和jenkins安裝
    • jenkins配置
    • gitlab配置
    • jenkins與gitlab聯動
  • 參考

架構

在這里插入圖片描述

gitlab和jenkins安裝

部署docker
在這里插入圖片描述

部署jenkins
在這里插入圖片描述

在這里插入圖片描述

啟動jenkins
在這里插入圖片描述
用戶:admin,對應的密碼如下
在這里插入圖片描述

點擊安裝自定義推薦的插件
在這里插入圖片描述
安裝gitlab插件
在這里插入圖片描述

jenkins配置

在這里插入圖片描述
在這里插入圖片描述
配置pipline腳本

/* ==========================================================Jenkinsfile – 一鍵部署 cyberpunk-games 靜態站點功能:安裝/更新 Nginx → 部署站點配置 → 克隆/更新 Git 倉庫 → 重載 Nginx========================================================== */pipeline {/* 任意可用的 Jenkins agent */agent any/* ------------------------------------------------------定義全局環境變量,后續所有 stage 均可直接使用------------------------------------------------------ */environment {// Git 倉庫地址(根據實際修改)GIT_REPO_URL      = 'http://10.99.1.104:180/root/website'// 代碼拉取到本地的目錄GIT_CLONE_DIR     = '/var/www/cyberpunk-games'// 目標部署服務器(根據實際修改)SSH_HOST          = '127.0.0.1'// 憑據 ID(在 Jenkins 憑據庫中已配置的用戶名/密碼)CRED_ID           = '52db79b8-af8d-4102-96aa-ba9aa4295801'}/* ------------------------------------------------------Pipeline 各階段------------------------------------------------------ */stages {/* --------------------------------------------------Stage 1:安裝 Nginx(僅需一次即可)-------------------------------------------------- */stage('Install Nginx') {steps {script {// 使用 Jenkins 憑據,將用戶名、密碼注入環境變量withCredentials([usernamePassword(credentialsId: "${CRED_ID}",usernameVariable: 'SSH_USER',passwordVariable: 'SSH_PASSWORD')]) {sh """# 通過 sshpass 免交互安裝sshpass -p '${SSH_PASSWORD}' \ssh -o StrictHostKeyChecking=no ${SSH_USER}@${SSH_HOST} \'sudo dnf install -y nginx'"""}}}}/* --------------------------------------------------Stage 2:生成并部署 Nginx 站點配置-------------------------------------------------- */stage('Deploy Nginx Configuration') {steps {script {// 1. 定義 Nginx 虛擬主機配置def nginxConfig = """
server {listen       80;server_name  yourdomain.com;   // TODO: 改成真實域名或 IProot  /var/www/cyberpunk-games;index index.html;location / {try_files \\$uri \\$uri/ =404;}# 可選:啟用 gzip 壓縮gzip              on;gzip_types        text/plain application/javascript text/css application/xml text/xml;gzip_min_length   1000;
}
"""// 2. 將配置寫到臨時文件writeFile file: '/tmp/cyberpunk-games.conf', text: nginxConfig// 3. 拷貝到目標服務器withCredentials([usernamePassword(credentialsId: "${CRED_ID}",usernameVariable: 'SSH_USER',passwordVariable: 'SSH_PASSWORD')]) {sh """sshpass -p '${SSH_PASSWORD}' \scp /tmp/cyberpunk-games.conf \${SSH_USER}@${SSH_HOST}:/etc/nginx/conf.d/cyberpunk-games.conf"""}}}}/* --------------------------------------------------Stage 3:克隆或更新 Git 倉庫-------------------------------------------------- */stage('Clone or Update Git Repository') {steps {script {withCredentials([usernamePassword(credentialsId: "${CRED_ID}",usernameVariable: 'SSH_USER',passwordVariable: 'SSH_PASSWORD')]) {sh """sshpass -p '${SSH_PASSWORD}' \ssh -o StrictHostKeyChecking=no ${SSH_USER}@${SSH_HOST} \'if [ ! -d "${GIT_CLONE_DIR}/.git" ]; then \git clone ${GIT_REPO_URL} ${GIT_CLONE_DIR}; \else \cd ${GIT_CLONE_DIR} && git pull origin main; \fi'"""}}}}/* --------------------------------------------------Stage 4:重載 Nginx 使配置生效-------------------------------------------------- */stage('Restart Nginx') {steps {script {withCredentials([usernamePassword(credentialsId: "${CRED_ID}",usernameVariable: 'SSH_USER',passwordVariable: 'SSH_PASSWORD')]) {sh """sshpass -p '${SSH_PASSWORD}' \ssh -o StrictHostKeyChecking=no ${SSH_USER}@${SSH_HOST} \'sudo systemctl reload nginx'"""}}}}}/* ------------------------------------------------------構建后操作(可選)------------------------------------------------------ */post {always {echo 'Pipeline 執行結束'}success {echo '所有階段執行成功!'}failure {echo '有階段失敗,請檢查日志'}}
}

創建憑據
在這里插入圖片描述

進入到已經創建的任務中
在這里插入圖片描述
修改里面的pipline 腳本中的credential id
在這里插入圖片描述

gitlab配置

在這里插入圖片描述

在這里插入圖片描述
創建webs倉庫
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

clone代碼
在這里插入圖片描述

提交代碼

在這里插入圖片描述

jenkins與gitlab聯動

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

打開gitlab,配置webhook
在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

打開jenkins,修改pipeline腳本
在這里插入圖片描述
手動構建測試
在這里插入圖片描述

gitlab修改觸發
在這里插入圖片描述
gitlab手動觸發jenkins
在這里插入圖片描述

參考

  • 【實戰Jenkins+Gitlab全自動化】一鍵提交代碼即自動部署|Jenkins自動化部署|Gitlab|DevOPS|SRE|QA

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

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

相關文章

Redis字符串操作指南:從入門到實戰應用

Redis作為一款高性能的鍵值存儲數據庫,其字符串(String)類型是最基礎也最常用的數據類型。它不僅能存儲簡單的文本信息,還能應對數字計算、二進制數據等多種場景,靈活且高效。接下來,我們就全方位剖析Redis…

SQLite 數據庫字段類型-詳細說明,數據類型詳細說明。

SQLite 數據類型 SQLite字段類型詳細說明,包含存儲類、親和類型、布爾類型、日期時間類型的存儲方式、取值范圍及核心特性。 創建 SQLite3 表時可使用的各種數據類型名稱,同時也介紹了相應的親和類型。 一、核心存儲類(Storage Classes&am…

Node.js特訓專欄-實戰進階:17.會話管理與安全存儲

?? 歡迎來到 Node.js 實戰專欄!在這里,每一行代碼都是解鎖高性能應用的鑰匙,讓我們一起開啟 Node.js 的奇妙開發之旅! Node.js 特訓專欄主頁 專欄內容規劃詳情 會話管理與安全存儲:從原理到實戰的Web安全實踐 在Web應用中,會話(Session)是維持用戶狀態的核心機制—…

【橘子分布式】gRPC(編程篇-中)

一、簡介 我們之前已經完成了對于api模塊的開發,也就是已經生成了基礎的類和對應的接口,現在我們需要完成的是client和server端的開發。其實如同thrift一樣,現在要做的就是實現我們之前定義的service里面的hello方法,里面寫我們的…

Spring Boot 項目中數據同步之binlog和MQ

在 Spring Boot 項目中,“監聽 binlog” 和 “業務代碼中集成 MQ” 是實現數據同步、事件驅動的兩種主流方法。 簡單來說,這個選擇可以概括為: 監聽 Binlog (如使用 Canal):像一個數據庫的貼身秘書,它忠實地記錄數據庫…

MySQL 寫入性能優化全攻略(附 GitHub 面試題項目鏈接)

面試中你可能會遇到這樣的問題: 💬 “假設你的接口一天收到百萬級請求,MySQL 撐得住嗎?你會怎么優化寫入性能?” 剛開始我也懵過,后來不斷復盤與總結,現在我可以用結構化方式給出一個相對完整的…

用Dynamic chunk去干掉tokenizer?

一般你們下AR模型的時候,都有這個,也就是tokenzier,tokenizer是干啥的,其實就是你的分詞字典不光有specal的token對應的還有實際的對應的分詞對應的代碼,比如:也有tokenzier沒顯示的,比如&#…

Linux系統日志管理入門:journalctl命令完全指南

Linux系統日志管理入門:journalctl命令完全指南前言一、journalctl介紹二、基礎使用:快速上手1. 查看全部日志2. 查看本次啟動的日志3. 按時間篩選日志4. 按服務(單元)過濾日志三、常用參數與場景四、實戰案例:解決實際…

神經網絡的基本骨架——nn.Module的使用(torch.nn庫)

在 PyTorch 中,nn.Module 是所有神經網絡模塊的基類,用于構建和組織深度學習模型。它提供了一系列工具和功能,使模型的定義、訓練和部署更加高效和靈活。nn Neural Network(神經網絡)核心作用:模塊化設計&…

靜態住宅IP和節點有什么區別?哪種更適合你的需求?

在跨境電商、社媒運營等業務中,“靜態住宅IP”和“節點”常被混淆使用,但兩者代表網絡架構中不同層級的資源。選錯可能導致賬號風控、業務效率低下。IPdodo將在本篇文章中,從本質、業務場景到選擇策略,為您一文道清兩者之間的區別…

AI編程工具對比:Cursor、GitHub Copilot與Claude Code

文章目錄AI編程工具對比:Cursor、GitHub Copilot與Claude Code一、產品定位與核心架構1.1 Cursor:AI原生IDE的代表1.2 GitHub Copilot:代碼補全的行業標桿1.3 Claude Code:終端Agent的革新者二、核心功能深度對比2.1 代碼生成與理…

車載傳統ECU---MCU軟件架構設計指南

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

SCSAI工業智能體的核心特征

一個覆蓋工業全場景、由多個垂直領域智能體構成的開放生態平臺。每個智能體都是具備獨立能力的 “數字單元”,同時又能通過平臺實現互聯、協作與進化。一、工業智能體平臺的核心定位本質:工業領域的 “智能體操作系統 應用市場”,為各類工業…

Java大視界:Java大數據在智能醫療電子健康檔案數據挖掘與健康服務創新>

> 本文通過完整代碼示例,揭秘如何用Java大數據技術挖掘電子健康檔案價值,實現疾病預測、個性化健康管理等創新服務。 ### 一、智能醫療時代的數據金礦 電子健康檔案(EHR)作為醫療數字化的核心載體,包含海量患者全生命周期健康數據。據統計,全球醫療數據量正以每年…

家庭KTV v1.1.9 | 曲庫豐富,無限制免費K歌

家庭KTV是一款專門為家庭娛樂設計的K歌軟件,旨在讓用戶在家中也能享受到與KTV相同的高質量K歌體驗。該應用擁有豐富的歌曲庫,包括經典老歌和當下流行熱曲等多種類型,滿足不同年齡段用戶的需求。家庭KTV支持多種點歌方式,如按照歌手…

vscode 一直連不上遠程,網絡是通的,ssh 也能直接登錄遠程

vscode 一直連不上遠程,網絡是通的,ssh 也能直接登錄遠程,但vscode 死活連不上 解決辦法: 取消勾選remote.SSH.useExecServer 打開 VS Code 設置(Ctrl, → 搜索 useExecServer) 取消對應的勾選即可

前端面試專欄-工程化:28.團隊協作與版本控制(Git)

🔥 歡迎來到前端面試通關指南專欄!從js精講到框架到實戰,漸進系統化學習,堅持解鎖新技能,祝你輕松拿下心儀offer。 前端面試通關指南專欄主頁 前端面試專欄規劃詳情 項目實戰與工程化模塊-團隊協作與版本控制&#xff…

無標記點動捕:如何突破傳統娛樂邊界,打造沉浸式交互體驗

你能想象在游戲交互中,你的動作和表情可以不用佩戴任何設備就實時映射在虛擬角色上嗎?在傳統娛樂中,用戶體驗常被設備束縛——手柄、傳感器、標記點讓用戶無法徹底投入。而無標記點動捕技術作為一種將用戶肢體轉化為虛擬世界的“自然控制器”…

C#監聽txt文檔獲取新數據

目錄前言一、監聽txt文檔增加數據二、其他功能1. 設置開機自啟動2. 禁止控制臺窗口關閉按鈕3. 阻止Ctrl C中斷4. 防止程序退出(無限循環)總結前言 之前有個需求就是監聽文件夾中最新的txt文檔獲取最新數據,還有其他功能,比如&am…

程序員管理與AIStarter開發:如何避免需求Bug,提升項目效率

大家好,我是熊哥!今天聊聊程序員管理和AIStarter開發中的經驗教訓。創業公司項目常因需求不清出Bug,比如“管理員刪管理員”這種低級錯誤,引發用戶不滿。熊哥親測:程序員管理關鍵在于明確需求!通過整理需求…