GitLab Runner 搭建指南:打造流暢的 CI/CD 工作流程

更新於 發佈於 閱讀時間約 11 分鐘

在上一篇文章中,我們完成了Gitlab的安裝,但為了未來的CI/CD的作業,接下來就要進行Gitlab runner的建置,我們需要透過runner來執行與部署任務。

工作流程的實際操作

官方對於gitlab runner的定義如下:

GitLab Runner is an application that works with GitLab CI/CD to run jobs in a pipeline

本篇將說明的以下部分:

  1. 部署Gitlab runner
  2. 向Gitlab進行註冊
  3. 簡單的CI/CD測試
  4. 結論

1. 部署Gitlab runner

安裝的方式很多,為了配合之前的文章,本篇同樣採用Docker-compose的方式來進行部署。

同一台主機安裝時,須注意:

  • Docker runner如果使用Docker Executor,需要使用指定的網路
  • 如果Gitlab Hostname使用localhost,註冊runner時,要特別指定clone_url
  • 如果不是使用80 Port,建議用官方做法
  • 注意Docker network,不然可能連不到GitLab
#--------------------------------------------------------
# S1-1. 修改原先的docker-compose, 加入runner
#--------------------------------------------------------
[root]# vim docker-compose.yaml
version: '3.6'
services:
gitlab:
image: gitlab/gitlab-ce:latest
container_name: gitlab
restart: always
hostname: 'gitlab.test.example.poc'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.test.example.poc:8929'
gitlab_rails['gitlab_shell_ssh_port'] = 2424
ports:
- '8929:8929'
- '8443:8443'
- '2424:2424'
volumes:
- '$GITLAB_HOME/config:/etc/gitlab'
- '$GITLAB_HOME/logs:/var/log/gitlab'
- '$GITLAB_HOME/data:/var/opt/gitlab'
- '/var/run/docker.sock:/var/run/docker.sock'
shm_size: '256m'
gitlab-runner:
image: gitlab/gitlab-runner:latest
container_name: gitlab-runner
restart: always
networks:
- devops-net
volumes:
- '/var/run/docker.sock:/var/run/docker.sock'
- '$GITLAB_HOME/gitlab-runner:/etc/gitlab-runner'

[root]# docker-compose up -d
[root]# docker ps
[root]# docker logs -f gitlab-runner
ERROR: Failed to load config stat /etc/gitlab-runner/config.toml
=> 需要進行註冊,取得token
#---------------------------------------------------
# S1-2. 登入Web
#---------------------------------------------------
http://gitlab.test.example.poc:8929
=> 修改初始密碼 (root/P@ssw0rd)
#---------------------------------------------------
# S1-3. 建立Group
#---------------------------------------------------
首頁 => "+" (Create group) => Name: testgroup
raw-image

2.向Gitlab進行註冊

#---------------------------------------------------
# S2-1. 取得給runner使用的token
#---------------------------------------------------
Build => Runners => 記住token
TOKEN: GR1348941ZRdhocL1zyrdBaL1WUyC
raw-image
#---------------------------------------------------
# S2-5. 註冊
#---------------------------------------------------
[root]# docker exec -it gitlab-runner gitlab-runner register
Enter the GitLab instance URL (for example, https://gitlab.com/): http://gitlab.test.example.poc:8929
Enter the registration token: GR1348941ZRdhocL1zyrdBaL1WUyC
Enter a description for the runner: test
Enter tags for the runner (comma-separated): test
Enter optional maintenance note for the runner: test
Enter an executor: custom: docker
Enter the default Docker image: python:3.9.13
raw-image
#---------------------------------------------------
# S2-6. 確認
#---------------------------------------------------
首頁 => 團隊 => Build => Runners => 看到Runner資訊
raw-image

3.簡單的CI/CD測試

#---------------------------------------------------
# S3-1. Create project
#---------------------------------------------------
Project => Create blank project => name: test-cicd => create
raw-image
#---------------------------------------------------
# S3-2. Create new file
#---------------------------------------------------
"+" => New File => 輸入以下內容 => commit change
stages:
- Welcome_test_cicd

Job_Hello_world:
tags:
- test
stage: Welcome_test_cicd
image: python:3.9.13
script:
- python3 -V

※ 說明:
tags:定義將使用的GitLab-Runner所帶有的標籤。
stage:定義這個任務將在哪個階段執行。
image:定義將使用哪一個docker映像檔建立容器並執行任務。(此項為Docker Executor才需要宣告。)
script:定義要執行的指令。
raw-image
raw-image
#---------------------------------------------------
# S3-3. Verify pipeline
#---------------------------------------------------
Build => Pipelines => (click)Passed
raw-image
raw-image
raw-image

4.結論

以上我們就完成了以Gitlab為基礎的概念完成了最簡單的Pipeline的測試,並且也實際操作了在Gitlab UI進行的Pipeline設定與執行。

一般實務上,許多Kubernetes的工程師在管理工作範圍內,也可能會牽涉到Pipeline的維護,所以建議學習上至少要掌握一種以上的Pipeline工具,可以更全面的滿足實務上的需求,而不是只能專注在基礎架構上的維護。


※ References:

avatar-img
15會員
40內容數
記錄IT社畜的自我學習筆記,如同專題名稱,主要是怕自已忘記自已做過什麼、學到什麼。索性就分享我自已在學習Kubernetes這條路上的各種測試、學習心得。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
超健忘閒人的沙龍 的其他內容
上一篇說明了如何在Kubernetes上建立基本的MySQL standalone,並加入phpmyadmin(PMA)來進行圖形化的管理,本篇就再進階一步,實作MySQL replication架構(master-salve),並進行驗證是否成功。
本文記錄如何在Kubernetes環境下,部署Standalone架構的MySQL Database,並透過phpmyadmin進行管理。這篇文章將分成MySQL部署在K8S內的優勢、部署MySQL DB standalone、部署PhpMyAdmin (PMA)、結論四個部分進行說明與實作的流程。
本篇文章將教你如何在Kubernetes cluster內部署一個MongoDB,包括取得Manifests、建立Volume、部署實務、基本操作和結論。透過操作演示,讓你瞭解在實務上如何成功建立MongoDB,並進行基本操作。
本文將介紹Gitlab與GitHub的差異,以及在本地環境部署Gitlab的流程與實作。文章內容包括版本管理系統的選擇,Gitlab的基本功能,以及使用Docker進行部署的詳細步驟。
本文介紹了在K8S Cluster出現問題時,透過ETCD的備份來還原Cluster的方法。包括ETCD的資料類型、備份、還原以及相關建議,並提出了自動進行ETCD備份作業和備份存放位置的重要性。
本文將探討Kubernetes內部DNS解析的相關流程,並介紹如何利用DNS來找到服務。透過瞭解DNS的工作原理,可以讓應用服務的問題處理更有效率,並提供基本測試與結論。
上一篇說明了如何在Kubernetes上建立基本的MySQL standalone,並加入phpmyadmin(PMA)來進行圖形化的管理,本篇就再進階一步,實作MySQL replication架構(master-salve),並進行驗證是否成功。
本文記錄如何在Kubernetes環境下,部署Standalone架構的MySQL Database,並透過phpmyadmin進行管理。這篇文章將分成MySQL部署在K8S內的優勢、部署MySQL DB standalone、部署PhpMyAdmin (PMA)、結論四個部分進行說明與實作的流程。
本篇文章將教你如何在Kubernetes cluster內部署一個MongoDB,包括取得Manifests、建立Volume、部署實務、基本操作和結論。透過操作演示,讓你瞭解在實務上如何成功建立MongoDB,並進行基本操作。
本文將介紹Gitlab與GitHub的差異,以及在本地環境部署Gitlab的流程與實作。文章內容包括版本管理系統的選擇,Gitlab的基本功能,以及使用Docker進行部署的詳細步驟。
本文介紹了在K8S Cluster出現問題時,透過ETCD的備份來還原Cluster的方法。包括ETCD的資料類型、備份、還原以及相關建議,並提出了自動進行ETCD備份作業和備份存放位置的重要性。
本文將探討Kubernetes內部DNS解析的相關流程,並介紹如何利用DNS來找到服務。透過瞭解DNS的工作原理,可以讓應用服務的問題處理更有效率,並提供基本測試與結論。
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Windows : 下載Git (git-scm.com)並按照指示安裝。 安裝完成後,你可以通過運行以下命令來確認安裝是否成功: git --version 初次設定GIT 接下來就是按照初次設定git,會需要配置你的用戶名和電子郵件地址,這些信息將被記錄在您提交的每個變更中。 git
1. Outline Takeaway Setting up Git and verifying installation Configuring your Git username and email Initializing a new Git repository Stagin
CI 持續整合 CI目的是建立自動化專案打包。 CD 持續發表 將打包完成的專案,自動發布。
Thumbnail
GitLab為程式碼管理倉庫,且從8.0開始提供CI/CD。 安裝 更新套件索引 sudo apt update 安裝postfix sudo apt install ca-certifi​cates curl openssh-server postfix 切換目錄 cd /t
※ 需要做版本備份時: git init:初始化此資料夾,由git 開始追蹤版本控制。 git add:將檔案加入到暫存區。 git commit:把暫存區的內容提交到儲存庫。 git status:查看目前所有檔案的狀態。 git log:查看過去所有commit的記錄。 ※ 需要做修
Thumbnail
在本篇文章中,將會設定 Cloud Run,以便每當將程式修改並推送到 GitHub 時,它都會使用 Cloud Build 自動構建和部署應用程序的最新版本。
※ 簡短說明Git 和 Git Flow 是什麼?如何應用? Git 是什麼? Git是一個分散式版本控制軟體,能夠紀錄檔案的狀態變化,以及協調多個開發者之間的工作。它允許團隊成員協作編輯和管理項目的代碼庫,並且能夠追蹤文件的歷史變更、恢復到以前的版本、合併不同版本的代碼,以及解決代碼衝突等。
Thumbnail
在 Ubuntu 22.04 上使用 GitLab,請依照下列步驟操作。首先,使用nano文字編輯器開啟「gitlab.rb」檔案並尋找存取GitLab的URL: sudo nano /etc/gitlab/gitlab.rb 到下面的連結以使用 Ubuntu 22.04 上的 GitL
Thumbnail
GitLab 是一個 DevOps、基於 Web 的免費開源平台 Git 儲存庫,為開發人員提供了所有必要的功能。它是一個用於開發 DevOps 應用程式的一體式平台。 GitLab 允許您執行原始碼管理、監控、安全性和專案規劃任務。 Update system packages: sudo
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Windows : 下載Git (git-scm.com)並按照指示安裝。 安裝完成後,你可以通過運行以下命令來確認安裝是否成功: git --version 初次設定GIT 接下來就是按照初次設定git,會需要配置你的用戶名和電子郵件地址,這些信息將被記錄在您提交的每個變更中。 git
1. Outline Takeaway Setting up Git and verifying installation Configuring your Git username and email Initializing a new Git repository Stagin
CI 持續整合 CI目的是建立自動化專案打包。 CD 持續發表 將打包完成的專案,自動發布。
Thumbnail
GitLab為程式碼管理倉庫,且從8.0開始提供CI/CD。 安裝 更新套件索引 sudo apt update 安裝postfix sudo apt install ca-certifi​cates curl openssh-server postfix 切換目錄 cd /t
※ 需要做版本備份時: git init:初始化此資料夾,由git 開始追蹤版本控制。 git add:將檔案加入到暫存區。 git commit:把暫存區的內容提交到儲存庫。 git status:查看目前所有檔案的狀態。 git log:查看過去所有commit的記錄。 ※ 需要做修
Thumbnail
在本篇文章中,將會設定 Cloud Run,以便每當將程式修改並推送到 GitHub 時,它都會使用 Cloud Build 自動構建和部署應用程序的最新版本。
※ 簡短說明Git 和 Git Flow 是什麼?如何應用? Git 是什麼? Git是一個分散式版本控制軟體,能夠紀錄檔案的狀態變化,以及協調多個開發者之間的工作。它允許團隊成員協作編輯和管理項目的代碼庫,並且能夠追蹤文件的歷史變更、恢復到以前的版本、合併不同版本的代碼,以及解決代碼衝突等。
Thumbnail
在 Ubuntu 22.04 上使用 GitLab,請依照下列步驟操作。首先,使用nano文字編輯器開啟「gitlab.rb」檔案並尋找存取GitLab的URL: sudo nano /etc/gitlab/gitlab.rb 到下面的連結以使用 Ubuntu 22.04 上的 GitL
Thumbnail
GitLab 是一個 DevOps、基於 Web 的免費開源平台 Git 儲存庫,為開發人員提供了所有必要的功能。它是一個用於開發 DevOps 應用程式的一體式平台。 GitLab 允許您執行原始碼管理、監控、安全性和專案規劃任務。 Update system packages: sudo