iT邦幫忙

2023 iThome 鐵人賽

DAY 23
0
DevOps

一步步學DevOps:30天入門計劃系列 第 23

Day 23 Gitlab CI/CD Pipeline 介紹

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20231008/20139800JkSd9xW5IP.jpg

GitLab CI/CD Pipeline 是一個持續整合和持續部署 (CI/CD) 工具,能夠自動化軟體開發、測試和部署流程。
GitLab Pipeline 基本上是一組執行程序的指令碼,由二個主要組件組成,第一個組件是Job,Job描述編譯、測試和部署過程中執行命令的程式碼,第二個組件是階段(Stages),階段(Stages)定義執行Job的順序,透過.gitlab-ci.yml的配置文件定義自動執行流程和指派任務內容,可以依據專案目的定義一個或多個 CI/CD 階段和任務,達到建立、測試、部署和監控的自動化流程。

以下是實作 GitLab CI/CD Pipeline 的步驟:

  1. 設定 GitLab 專案,在 GitLab 上建立一個專案,將代碼上傳至該專案的儲存庫。

  2. 建立 .gitlab-ci.yml 檔案:在專案的根目錄中建立一個 .gitlab-ci.yml 的 YAML 檔案,在 .gitlab-ci.yml 中,定義一個或多個 CI/CD 階段,每個階段包含一個或多個任務。。

在Gitlab專案頁面左邊選單Build下的子選單Pipeline editor,點選Configure pipeline,即可進入建立Pipeline editor頁面,這裡有.gitlab-ci.yml 檔案基本的骨架模板,可以使用它快速建立.gitlab-ci.yml。

https://ithelp.ithome.com.tw/upload/images/20231008/20139800yjkjFDULRM.png

  1. 提交並觸發 CI/CD Pipeline:將 .gitlab-ci.yml 檔案提交到你的 GitLab 專案。當代碼提交到 GitLab 時,GitLab 將自動偵測 .gitlab-ci.yml,並觸發 CI/CD Pipeline。
    https://ithelp.ithome.com.tw/upload/images/20231008/20139800XQW0PhFRvc.png

  2. 查看 CI/CD Pipeline:可以在 GitLab 的專案頁面左邊選單Build的下拉選單中查看 Pipeline和 Job的運行情況,包括任務的成功或失敗狀態、執行日誌等信息。
    https://ithelp.ithome.com.tw/upload/images/20231008/20139800U9o1erYtfg.png

https://ithelp.ithome.com.tw/upload/images/20231008/201398000k7N046fjO.png

  • 點選Status可以查看個別Job的運行狀況,例如查詢Failed的錯誤訊息,進行修正

https://ithelp.ithome.com.tw/upload/images/20231008/20139800idKUCstF92.png

  1. 自訂任務和流程:根據你的專案需求,可以自訂任務,例如建置 Docker 容器、執行測試、部署到不同的環境等。

  2. 整合其他工具:GitLab CI/CD Pipeline 支援整合各種工具和服務,例如容器管理平台(如 Kubernetes)、通知服務、部署到雲端等。

  3. 自動化部署到生產環境:在完成測試和驗證後,你可以自動化部署你的應用程序到生產環境,以確保持續且安全的交付。

.gitlab-ci.yml 中的元素說明:

  • 階段(stages):stages 定義 CI/CD 流程的不同階段,每個階段包含一組任務(Job),按照順序執行。通常包括 build(建置)、test(測試)、deploy(部署)等階段,可以根據專案的需要自行定義階段名稱。
stages:
  - build
  - test
  - deploy
  • 任務(Job):Job 定義了每個階段中要執行的任務。每個任務可以獨立執行之外,也可以在其他任務完成之前before_script或之後after_script才執行。
job_name:                 #job_name 是Job的名稱
  stage: build            #stage 定義了該Job屬於哪個階段
  script:                 # script 包含了Job要執行的指令
    - echo "Building the application"
    
  • 定義 Job 的執行條件(when):可以將 when 設置為 manual,表示這個 Job 只有在手動觸發時才會執行。其他的值包括 on_success(只有在前一個 Job 成功時執行)、on_failure(只有在前一個 Job 失敗時執行。
test-job:
  stage: test
  script:
    - echo "Running tests..."
  when: manual  # 只有在手動觸發時執行這個 Job

  • script:定義Job的實際執行的命令內容。
script:
  - echo "Building the application"
  - npm install
  - npm build
  • Before Script、After Script:在 Job 開始前和結束後執行特定的指令。
build-job:
  stage: build
  before_script:
    - echo "Setting up environment"
  script:
    - echo "Building the application"
  after_script:
    - echo "Cleaning up"
  • 變數(Variables):在Job中可以設置變數,用於傳遞配置信息和數據。
variables:
  DATABASE_URL: "postgres://user:password@host/db"
  
  • 環境變數(environments)
deploy-job:
  stage: deploy
  script:
    - echo "Deploying to production..."
  environment:
    name: production
    url: https://example.com
    
   #定義了一個名為 "production" 的環境,並指定 URL

  • Dependencies:可以使用 dependencies 指定一個Job依賴於其他作業的完成。以確保Job按照正確的順序執行。
test-job:
  stage: test
  script:
    - echo "Running tests"
  dependencies:
    - build
    
   #在執行test之前,必須先完成 build 任務,確保在進行測試之前,建置過程已經完成。
  • 限制條件(Only 和 Except):only 和 except 這些條件用於限制何時執行Job。
    only 指定只有在滿足條件時才執行,而 except 指定只有在不滿足條件時才執行。
deploy-job:
  stage: deploy
  script:
    - echo "Deploying the application"
  only:
    - master    
    #deploy-job只會在分支為 "master" 時執行

上一篇
Day 22 git push Gitlab(簡單小範例)
下一篇
Day 24 GitLab Runner
系列文
一步步學DevOps:30天入門計劃30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言