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 CI/CD 流水線中任務的應用程序。它可以在不同的環境中運行,如本地機器、虛擬機、容器等。GitLab Runner 連接到 GitLab 服務器,接收並執行構建、測試和部署等作業。用戶可以根據需求選擇不同的執行方式(Shell、Docker、Kubernetes 等),並且可以通過配置不同的標籤來分配作業。它是 GitLab 持續集成/持續部署流程的核心組件。
一樣先寫一個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 register
根據提示依據輸入gitlab位址、token、runner命名、類型(本次選shell)
此時再次回到自己架設的gitlab
剛才點擊的runner頁面,上面名為test的runner已經啟用
GitLab CI 是 GitLab 的持續集成(CI)功能,用於自動化構建、測試和部署流程。通過 .gitlab-ci.yml 配置文件,定義工作流程和任務,GitLab Runner 執行這些任務。每次代碼提交或合併時,GitLab CI 會自動觸發流水線,運行定義的作業,確保代碼的質量和可靠性,並可自動部署到生產環境。
點擊「+」之後New Branch
點擊「+」之後New File
#開頭宣告階段,可以有多個階段
stages:
- build
#編輯這個階段的區塊
build:
stage: build
#指定標籤為test這台runner來運行
tags:
- test
#執行的內容為echo一段話
script:
- echo "Building the application..."
#觸發條件為合併分支請求時
only:
- merge_requests
Merge requests > New merge request
跑完之後會亮綠燈
跑完CI流程之後要記得點「merge」按鈕才會真正合併分支
若只是要跑CI流程而不合併的話可以直接「close merge request」
可以點擊進去查看runner的執行內容
至此,已經確認了runner正常運行。