GitLab CI/CD實現項目自動化部署

1 GitLab CI/CD介紹

  • GitLab CI/CD 是 GitLab 中集成的一套用于軟件開發的持續集成(Continuous Integration)、持續交付(Continuous Delivery)和持續部署(Continuous Deployment)工具。這套系統允許開發團隊自動化軟件交付流程,從代碼變更的檢測、構建、測試到最終部署到生產環境的整個過程。

  • 持續集成(CI)

    • 每次代碼推送至版本控制系統(如GitLab倉庫),系統自動進行構建和測試。這確保了代碼變更能夠快速集成到主分支,同時發現并修復集成錯誤。
  • 持續交付(CD)

    • 在持續集成的基礎上,進一步自動化將已驗證的代碼變更交付到一個預生產或生產準備就緒的環境中。這個階段可能包括更復雜的測試套件、性能測試等,確保軟件隨時可以部署到生產環境,但實際部署可能需要人工審批。
  • 持續部署(CD)

    • 在持續交付的基礎上,將交付過程完全自動化,無需人工干預即可將通過所有測試的代碼直接部署到生產環境。這意味著每次代碼變更經過測試后都能快速安全地到達用戶手中。

2 GitLab CI/CD 與 GitLab Runner

  • GitLab CI/CD 是一套集成在GitLab平臺中的服務,負責管理軟件開發生命周期中的構建、測試和部署等流程。它通過讀取項目中的 .gitlab-ci.yml 配置文件來定義各種任務(Jobs)和流程(Pipelines),從而實現持續集成和持續部署的目標。

  • GitLab Runner 則是實現這些CI/CD流程的實際工作者或執行引擎。它是單獨部署的一個程序,可以安裝在不同的操作系統(如Linux、macOS、Windows)上,并與GitLab實例進行注冊和綁定。一旦有新的提交觸發了GitLab CI/CD流程,GitLab會調度已注冊的Runner來執行.gitlab-ci.yml中定義的任務。

  • 簡單來說,GitLab CI/CD是計劃者和協調者,負責定義何時以及如何執行任務,而GitLab Runner則是具體執行這些任務的實體。Runner可以是共享的(服務于多個項目)或者專屬的(僅為單一項目服務),并且可以根據項目需求配置不同的執行環境(例如使用Docker容器來隔離構建環境)。

3 GitLab Runner

  • 官網介紹

3.1 安裝

  • 以Centos為例
  • gitlab-runner安裝包下載,在Package欄搜索gitlab-runner,可以下載這個版本 el/7/x86_64/gitlab-runner-16.6.0-1.x86_64.rpm
  • 安裝命令如下
  •   # 安裝sudo rpm -ivh gitlab-runner-16.6.0-1.x86_64.rpm	# 查看是否安裝成功gitlab-runner -h
    

3.2 注冊

  • 注冊前需要先從gitlab服務器獲取token。
  • 在主頁面的Projects中找到 Configure GitLab
    • 在這里插入圖片描述
  • 找到CI/CD中的Runners
    • 在這里插入圖片描述
  • 找到token保存下來
    • 在這里插入圖片描述
  • 注冊
    •   # 注冊runnersudo gitlab-runner register
      
    • 注冊過程中需要填入一些信息,Token就是上面復制的那個,具體如下
    • 在這里插入圖片描述
    • 注冊完刷新gitlab頁面,可以看到有一個Runner實例。
    • 如果找不到這個界面,可以這樣訪問 http://192.168.206.137/admin/runners
    • 在這里插入圖片描述
  • 點擊編輯
  • 在這里插入圖片描述
  • 勾選Run untagged jobs,然后保存。
  • 在這里插入圖片描述

3.3 編寫流水線腳本

  • 首先在gitlab中創建一個項目,然后新建一個文件
  • 在這里插入圖片描述
  • 文件名為 .gitlab-ci.yml,腳本內容就寫一個最簡單的測試腳本。
  • 在這里插入圖片描述
  • 腳本內容如下
  •   build:stage: buildscript:- echo "start build"test:stage: testscript:- echo "start test"deploy:stage: deployscript: - echo "start deploy"
    
  • 保存提交后會自動觸發CI/CD流程,在Build中找到Pipelines。
  • 在這里插入圖片描述
  • 可以看到步驟全部通過
  • 在這里插入圖片描述
  • 點擊Passed可以看到詳細流程
  • 在這里插入圖片描述
  • 點擊build,就是build的執行過程
  • 在這里插入圖片描述
  • 至此,GitLab-CI/CD 自動化部署的流程就通了。可以把 .gitlab-ci.yml 腳本中的內容修改為實際要執行的命令,這樣每一次提交代碼后,就會自動觸發編譯、測試、發布步驟。

4 項目演示

  • 比較簡單的自動化部署流程為:編譯、測試、打包和發布。本項目就主要演示下如何實現自動化的編譯、測試和發布。
  • 現在創建一個項目,文件結構如下
    • ├── .gitlab-ci.yml
      ├── main.cpp
      ├── README.md
      └── test.sh
  • .gitlab-ci.yml 內容如下
    •   # 編譯build:stage: buildscript:- echo "start build"- g++ main.cpp -o gitlabcicd_test# 指定生成的可執行程序存放目錄為當前目錄artifacts:paths:- gitlabcicd_test# 測試test:stage: testscript:- echo "start test"- chmod 0777 test.sh# 測試- ./test.sh# 發布deploy:stage: deployscript: - echo "start deploy"# 模擬發布流程- cp gitlabcicd_test package1
      
  • mian.cpp 中輸出一個打印。
  • test.sh 中運行生成的可執行程序。
  • 工程寫完后,push到gitlab倉庫中,會自動觸發cicd流程。
  • 在項目中找到 Build,點擊Pipelines。
    • 在這里插入圖片描述
  • 可以看到,自動化編譯、測試、發布流程成功了
    • 在這里插入圖片描述
    • 在這里插入圖片描述
  • 點擊一個進去,在控制臺會有詳細打印
    • 在這里插入圖片描述
  • 進到GitLab Runner服務器對應目錄下,可以看到自動化編譯、測試、發布已經完成。
    • 在這里插入圖片描述

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

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

相關文章

vue里實現點擊按鈕回到頁面頂部功能,博客必備!

效果 步驟 1-標簽結構 動態綁定樣式style&#xff0c;監聽點擊事件&#xff0c;后續控制opacity透明度。和滾動距離 <div class"toTop" :style"dynamicStyles" click"toTop"><!--<i class"fa fa-arrow-up"></i>…

Django ORM中的F 對象

F 對象非常強大&#xff0c;可以在查詢和更新操作中進行復雜的字段間運算。 假設我們有一個包含商品信息的模型 Product&#xff1a; from django.db import modelsclass Product(models.Model):name models.CharField(max_length100)price models.DecimalField(max_digits…

MySQL向自增列插入0失敗問題

問題 在一次上線時&#xff0c;發現通過腳本添加的狀態表中&#xff0c;待提交的狀態不正確&#xff0c;本來應該是0&#xff0c;線上是101。 原因 默認情況下&#xff0c;MySQL對應自增列&#xff0c;認為0和null等價&#xff08;因為mysql認為0不是最佳實踐不推薦使用&…

超簡單的通配證書簽發工具,免費,無需安裝任何插件到本地

常見的acme.sh 或者 lego等工具需要配置&#xff0c;安裝不靈活&#xff0c;續簽需要配置計劃任務&#xff0c;簽發單域名證書或者通配證書需要不同的指令和配置&#xff0c;繁瑣&#xff0c;如果自己程序想要對接簽發證書的api有的不支持&#xff0c;有的用起來繁瑣。 最近發…

[手機Linux PostmarketOS]三, Alpine Linux命令使用

Alpine Linux 一些常用的指令&#xff1a; 添加國內源下載鏈接&#xff1a; 編譯以下文件&#xff0c;添加鏈接進去&#xff1a; sudo vi /etc/apk/repositories##清華源&#xff1a; https://mirror.tuna.tsinghua.edu.cn/alpine/latest-stable/main https://mirror.tuna.tsi…

【VIVADO SDK調試遇到DataAbortHandler】

問題 SDK調試遇到DataAbortHandler問題。 運行后不顯示結果&#xff0c;debug模式下發現進入DataAbortHandler異常函數。程序中存在大數組。 原因:SDK默認的堆棧為1024bytes,需要將堆棧調大。 修改方法&#xff1a; 解決:對application中src下的lscript.ld雙擊&#xff0c;…

android 添加一個水平線

在Android中&#xff0c;添加一個水平線通常可以通過幾種方式實現&#xff0c;最常見的是使用View組件或者自定義的Drawable。下面是一個簡單的例子&#xff0c;展示如何在布局文件中添加一個水平線&#xff1a; 使用View組件 在你的布局XML文件中&#xff0c;你可以添加一個…

Linux 程序卡死的特殊處理

一、前言 Linux環境。 我們在日常編寫的程序中&#xff0c;可能會出現一些細節問題&#xff0c;導致程序卡死&#xff0c;即程序沒法正常運行&#xff0c;界面卡住&#xff0c;也不會閃退... 當這種問題出現在客戶現場&#xff0c;那就是大問題了。。。 當我們暫時還無法排…

Python如何調用C++

ctypes 有以下優點: Python內建&#xff0c;不需要單獨安裝Python可以直接調用C/C 動態鏈接庫(.dll 或 .so)在Python一側&#xff0c;不需要了解 c/c dll 內部的工作方式提供了 C/C 數據類型與Python類型的相互映射&#xff0c;以及轉換&#xff0c;包括指針類型。 在使用cty…

如何定量選擇孔銷基準?-DTAS來幫你!

在當今快速發展的工程領域&#xff0c;公差仿真的作用日漸重要&#xff0c;在公差仿真中&#xff0c;基準體系的選擇對于最終結果更是至關重要。基準體系不同可能導致仿真過程中的參數計算、誤差分析以及最終的工程設計都有所不同。基準體系作為評估和比較的參照&#xff0c;直…

Suricata引擎二次開發之命中規則定位

二開背景 suricata是一款高性能的開源網絡入侵檢測防御引擎&#xff0c;旨在檢測、預防和應對網絡中的惡意活動和攻擊。suricata引擎使用多線程技術&#xff0c;能夠快速、準確地分析網絡流量并識別潛在的安全威脅&#xff0c;是眾多IDS和IPS廠商的底層規則檢測模塊。 前段時間…

強制升級最新系統,微軟全面淘汰Win10和部分11用戶

說出來可能不信&#xff0c;距離 Windows 11 正式發布已過去整整三年時間&#xff0c;按理說現在怎么也得人均 Win 11 水平了吧&#xff1f; 然而事實卻是&#xff0c;三年時間過去 Win 11 占有率僅僅突破到 29%&#xff0c;也就跳起來摸 Win 10 屁股的程度。 2024 年 6 月 Wi…

【Linux】磁盤性能壓測-FIO工具

一、FIO工具介紹 fio&#xff08;Flexible I/O Tester&#xff09;是一個用于評估計算機系統中 I/O 性能的強大工具。 官網&#xff1a;fio - fio - Flexible IO Tester 注意事項&#xff01; 1、不要指定文件系統名稱&#xff08;如/dev/mapper/centos-root)&#xff0c;避…

react啟用mobx @decorators裝飾器語法

react如果沒有經過配置&#xff0c;直接使用decorators裝飾器語法會報錯&#xff1a; Support for the experimental syntax ‘decorators’ isn’t currently enabled 因為react默認是不支持裝飾器語法&#xff0c;需要做一些配置來啟用裝飾器語法。 step1: 在 tsconfig.js…

【學術會議征稿】第三屆能源互聯網及電力系統國際學術會議(ICEIPS 2024)

第三屆能源互聯網及電力系統國際學術會議&#xff08;ICEIPS 2024&#xff09; 2024 3rd International Conference on Energy Internet and Power Systems 能源互聯網是實現新一代電力系統智能互動、開放共享的重要支撐技術之一&#xff0c;也是提升能源調度效率&#xff0…

SQL 存儲過程

SQL&#xff08;Structured Query Language&#xff09;的存儲過程&#xff08;Stored Procedure&#xff09;是一組為了完成特定功能的SQL語句集&#xff0c;它經編譯后存儲在數據庫中&#xff0c;用戶通過指定存儲過程的名字并給它傳遞參數&#xff08;如果有的話&#xff09…

Jetson-AGX-Orin 非docker環境源碼編譯安裝CyberRT

Jetson-AGX-Orin 非docker環境源碼編譯安裝CyberRT 1、安裝依賴 sudo apt update sudo apt-get install g gdb gcc cmake sudo apt install libpoco-dev uuid-dev libncurses5-dev python3-dev python3-pip python3 -m pip install protobuf3.14.02、下載CyberRT源碼 git cl…

【代碼隨想錄算法訓練Day65】卡碼網47.參加科學大會、卡碼網94. 城市間貨物運輸 I

Day65 圖論第九天 卡碼網47.參加科學大會 #include <iostream> #include <vector> #include <list> #include <queue> #include <climits> using namespace std; // 小頂堆 class mycomparison { public:bool operator()(const pair<int, …

Android Studio gradle下載失敗?!

Android Studio安裝后第一個工程&#xff0c;往往要下載gradle&#xff0c;而gradle的下載有的時候很慢&#xff0c;可以將下載好的gradle-x.x.x-all.zip放到指定目錄下&#xff1a; Windows下路徑&#xff1a; C:\Users\你的用戶名\.gradle\wrapper\dist\gradle-x.x.x-all\**…

python+pygame實現五子棋人機對戰之三

上回講過&#xff1a; pythonpygame實現五子棋人機對戰之一 pythonpygame實現五子棋人機對戰之二 界面已經有了&#xff0c;并且可以支持鼠標操作選擇菜單和人機對戰開始下棋了&#xff0c;那電腦是如何應手落子呢&#xff1f;以下內容是通用的類&#xff0c;全部放在utils.…