GitLab CI/CD 之 註冊 Gitlab-Runner 與 tags 使用

2023/11/23閱讀時間約 10 分鐘
raw-image

前言

上次我們已經架好 Gitlab 與 Gitlab-Runner 主機,今天我們要教大家如何使用 Gitlab-Runner 註冊一個 Runner,並使用 tags 這個 script,使用我們的 runner 運作

上版 CI_CD_DEMO 專案

我們先將之前的 CI_CD_DEMO 專案 push 到我們自己架設的 Gitlab 主機

raw-image

查看專案註冊 CI/CD token

我們先去查看我們要註冊的這個 CI/CD token 是什麼,待會註冊 Runner 會用到

raw-image

進入 Gitlab-Runner Container 裡面

首先查看我們 gitlab-runner container id

docker container ls

會得到以下有在運行的 container

CONTAINER ID   IMAGE                         COMMAND                  CREATED      STATUS                   PORTS                                                                                                         NAMES
3119f6d0c660 gitlab/gitlab-ce:latest "/assets/wrapper" 8 days ago Up 6 minutes (healthy) 0.0.0.0:22->22/tcp, :::22->22/tcp, 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp gitlab-ce
4cb49c53cf78 gitlab/gitlab-runner:latest "/usr/bin/dumb-init …" 8 days ago Up 6 minutes gitlab_runner

再來進到先進到 gitlab-runner container 的 bash 裡面

docker exec -it 4cb49c53cf78 bash

註冊 Docker Runner

我們先註冊一個 Runner,是 Docker Executor,指令如下,輸入後會有一些資訊要我們設定

gitlab-runner register

在這裡輸入我們的註冊 domain,就是我們自架的那台 gitlab 主機網址

Runtime platform                                    arch=amd64 os=linux pid=24 revision=853330f9 version=16.5.0
Running in system-mode.

Enter the GitLab instance URL (for example, https://gitlab.com/):
http://192.168.18.35

下一個是詢問你這個專案,要註冊的 Token 是什麼,就輸入我們剛剛設定->CI/CD->Runner 裡的 Token。

Enter the registration token:
GR1348941SzmW4wsKQyCzKanS1zKw

在下一個是你註冊的這個 Runner 給個描述,看各位怎麼描述,這邊要註冊 docker executor,就有如以下描述

Enter a description for the runner:
[4cb49c53cf78]: CI_CD_DEMO docker runner

在下一個是輸入給個 runner 標籤,待會我們會用到這個標籤名子

Enter tags for the runner (comma-separated):
docker

在下一個其實可以不需要理他,不太重要

Enter optional maintenance note for the runner:

在下一個是問你要用哪一個 Executor,這裡打上 docker

WARNING: Support for registration tokens and runner parameters in the 'register' command has been deprecated in GitLab Runner 15.6 and will be replaced with support for authentication tokens. For more information, see https://docs.gitlab.com/ee/ci/runners/new_creation_workflow
Registering runner... succeeded runner=GR1348941SzmW4wsK
Enter an executor: docker-windows, parallels, shell, docker-autoscaler, custom, docker, docker+machine, instance, kubernetes, ssh, virtualbox:
docker

最後一個是問,當你這個 Runner 啟用的時候,預設先抓哪一個 image,這裡我們輸入 node:20.9.0-alpine

Enter the default Docker image (for example, ruby:2.7):
node:20.9.0-alpine

註冊 Shell Runner

再來註冊一個 Runner,是 Shell Executor,指令如下,輸入後會有一些資訊要我們設定

gitlab-runner register

下一個是詢問你這個專案,要註冊的 Token 是什麼,跟剛剛一樣輸入我們 CI/CD 專案 Token

Enter the registration token:
GR1348941SzmW4wsKQyCzKanS1zKw

在下一個是你註冊的這個 Runner 給個描述,看各位怎麼描述,這邊要註冊 shell executor,就有如以下描述

Enter a description for the runner:
[4cb49c53cf78]: CI_CD_DEMO shell runner

在下一個是輸入給個 runner 標籤,待會我們會用到這個標籤名子

Enter tags for the runner (comma-separated):
shell

在下一個其實可以不需要理他,不太重要

Enter optional maintenance note for the runner:

在下一個是問你要用哪一個 Executor,這裡打上 shell

WARNING: Support for registration tokens and runner parameters in the 'register' command has been deprecated in GitLab Runner 15.6 and will be replaced with support for authentication tokens. For more information, see https://docs.gitlab.com/ee/ci/runners/new_creation_workflow
Registering runner... succeeded runner=GR1348941SzmW4wsK
Enter an executor: ssh, virtualbox, docker+machine, kubernetes, custom, docker-windows, shell, docker-autoscaler, instance, docker, parallels:
shell

經過一番設定後,你會看到有兩個 runner

raw-image

Tags 作用

tags 作用就是將我們的工作分派給不同的 Runner 以及 Executor 分派工作,達到分散處理。

Tags 定義規則

在我們工作定義寫上 tags,然後定義我們剛剛設定好的 Runner 之 tags 名稱

test-build:
stage: testing
tags:
- shell
before_script:
- ls -al
script:
- echo '測試打包'
only:
- main
- develop

練習時間

接下來我們玩玩看這些 Runner 運作,有如以下腳本

stages:
- testing

test-build:
stage: testing
tags:
- shell
script:
- docker ps -a
only:
- main
- develop

run-unit-test:
stage: testing
tags:
- docker
image: node:20.9.0-alpine
script:
- node -v
- npm -v
- yarn -v
only:
- main
- develop

來看一下 test-build 運作

raw-image

在看一下 run-unit-test 運作

raw-image




10會員
48內容數
d3.js 圖形
留言0
查看全部
發表第一個留言支持創作者!