iT邦幫忙

2024 iThome 鐵人賽

DAY 25
0

本章節「GitLab CI/CD」概要

Day 24: GitLab CI/CD 基本概念與工作流程
Day 25: GitLab Runners 配置與使用
Day 26: 使用 GitLab CI/CD 進行原始碼掃描及套件掃描
Day 27: 使用 GitLab CI/CD 進行自動化測試
Day 28: 如何在 GitLab CI/CD 中實現持續部署 (CD)
Day 29: GitLab CI/CD 與 Kubernetes 的集成實踐

因為免費方案之硬體需求關係,此章節會以GCP作為雲端平台來操作。

認識Gitlab Runner

GitLab Runner 是一個用於執行 GitLab CI/CD 流水線中任務的應用程序。它可以在不同的環境中運行,如本地機器、虛擬機、容器等。GitLab Runner 連接到 GitLab 服務器,接收並執行構建、測試和部署等作業。用戶可以根據需求選擇不同的執行方式(Shell、Docker、Kubernetes 等),並且可以通過配置不同的標籤來分配作業。它是 GitLab 持續集成/持續部署流程的核心組件。

部署Gitlab Runner

一樣先寫一個docker-compose.yml

version: '3.8'

services:
  gitlab-runner:
    image: gitlab/gitlab-runner:ubuntu-v16.2.0
    container_name: gitlab-runner
    restart: always
    volumes:
      - ./config:/etc/gitlab-runner  # GitLab Runner 配置文件存儲路徑
      - /var/run/docker.sock:/var/run/docker.sock  # 允許 Runner 使用 Docker
      - /usr/bin/docker:/usr/bin/docker  # 將宿主機 Docker 執行文件映射到容器
    entrypoint: ["/bin/bash", "-c", "chmod 666 /var/run/docker.sock && gitlab-runner run"]

如果要運行兩台就是寫作以下

version: '3.8'

services:
  gitlab-runner1:
    image: gitlab/gitlab-runner:ubuntu-v16.2.0
    container_name: gitlab-runner1
    restart: always
    volumes:
      - ./config1:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker
    entrypoint: ["/bin/bash", "-c", "chmod 666 /var/run/docker.sock && gitlab-runner run"]

  gitlab-runner2:
    image: gitlab/gitlab-runner:ubuntu-v16.2.0
    container_name: gitlab-runner2
    restart: always
    volumes:
      - ./config2:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker
    entrypoint: ["/bin/bash", "-c", "chmod 666 /var/run/docker.sock && gitlab-runner run"]

如果因為這樣過於麻煩,也可以單獨運行容器(本次示範用這個)

#拉取映像檔(做一次就好)
docker pull gitlab/gitlab-runner:ubuntu-v16.2.0
#運行gitlab-runner容器
docker run -itd --net=host --privileged=true --name gitlab-runner --restart always -v /srv/gitlab-runner/config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock  -v /usr/bin/docker:/usr/bin/docker gitlab/gitlab-runner:ubuntu-v16.2.0

網頁訪問昨天架設的gitlab
在「群組」的層級底下建立一台gitlab runner
路徑:Build > Runners > New group runner > 標籤命名(待會會用到) > Create

記下step1的指令及token

  • 回到gitlab runner容器內,進行註冊
gitlab-runner register

根據提示依據輸入gitlab位址、token、runner命名、類型(本次選shell)

https://ithelp.ithome.com.tw/upload/images/20240817/20168384aru1AlKXuL.jpg

此時再次回到自己架設的gitlab
剛才點擊的runner頁面,上面名為test的runner已經啟用

https://ithelp.ithome.com.tw/upload/images/20240817/20168384Ju6qBuThTu.jpg

怎麼加入CI流程?

GitLab CI 是 GitLab 的持續集成(CI)功能,用於自動化構建、測試和部署流程。通過 .gitlab-ci.yml 配置文件,定義工作流程和任務,GitLab Runner 執行這些任務。每次代碼提交或合併時,GitLab CI 會自動觸發流水線,運行定義的作業,確保代碼的質量和可靠性,並可自動部署到生產環境。

  • 建立一個新的分支,命名隨意

點擊「+」之後New Branch

  • 編寫.gitlab-ci.yml腳本

點擊「+」之後New File

https://ithelp.ithome.com.tw/upload/images/20240817/20168384Qdx93mui97.jpg

#開頭宣告階段,可以有多個階段
stages:
  - build

#編輯這個階段的區塊
build:
  stage: build
  #指定標籤為test這台runner來運行
  tags:
    - test
  #執行的內容為echo一段話
  script:
    - echo "Building the application..."
  #觸發條件為合併分支請求時
  only:
  - merge_requests

https://ithelp.ithome.com.tw/upload/images/20240817/2016838455IQDz8n2H.jpg

  • 合併分支(觸發CI)

Merge requests > New merge request

跑完之後會亮綠燈
跑完CI流程之後要記得點「merge」按鈕才會真正合併分支
若只是要跑CI流程而不合併的話可以直接「close merge request」

https://ithelp.ithome.com.tw/upload/images/20240817/20168384Ohj4OHNYZY.jpg

可以點擊進去查看runner的執行內容

https://ithelp.ithome.com.tw/upload/images/20240817/20168384YOYW1mmqUl.jpg

至此,已經確認了runner正常運行。


上一篇
Day 24: GitLab CI/CD 基本概念與工作流程
系列文
DevOps需要的技能樹...(應該)都點得到!25
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言