关于极狐GitLab Runner
极狐GitLab Runner 是极狐GitLab 的重要组件,是实现 CI/CD 的“瑞士军刀”,具有安装简单、使用灵活的特点,支持多种 CPU 架构、多种 Linux 发行版以及 多种 OS。
-
支持的 CPU 架构有:x86, AMD64, ARM64, ARM, s390x, ppc64le
-
支持的 Linux 发行版有:CentOS, Debian, Ubuntu, RHEL, Fedora, Mint
-
支持如下的 OS:Linux, Windows, macOS, FreeBSD
Runner 的安装
Runner 的安装非常简单,只要找到对应操作系统的安装包进行安装即可。本文以 ubuntu 20.04
为例来说明。
可以在极狐GitLab Runner 官网下载最新版本,也可以在这儿下载其他版本。可以用下面命令下载针对 ubuntu 20.04
的安装包:
$ curl -LJO "https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_amd64.deb"
$ ls -ltr
-rw-rw-r-- 1 root root 438976174 Nov 24 13:58 gitlab-runner_amd64.deb
接着用如下命令进行安装即可:
$ dpkg -i gitlab-runner_amd64.deb
可以通过 --help
或 --version
来查看安装是否成功:
$ gitlab-runner --version
Version: 14.5.0
Git revision: f0a95a76
Git branch: 14-5-stable
GO version: go1.13.8
Built: 2021-11-21T16:54:22+0000
OS/Arch: linux/amd64
Runner 的注册
Runner 安装完毕,在真正使用之前需要先进行注册。注册的目的是让 Runner 和极狐GitLab 实例建立链接通道,当极狐GitLab 实例中的项目有 CI/CD Pipeline 需要执行的时候,就会通过这个注册的 Runner 来执行。极狐GitLab Runner 的注册很简单,通过 gitlab-runner register
命令即可,根据不同阶段的输出输入极狐GitLab 实例的 URL
、Token
等,这些内容可以通过项目的 Setting –> CI/CD –> Runner 选项来获取,如下图所示:
上述极狐GitLab 实例的的地址是 https://jh-xiaomage.gitlab.cn
(通过 Omnibus 安装的,安装过程可以参考博客文章使用 Omnibus 安装极狐GitLab),token
是soeDCSvexosk2aHL_yJw
,接着就可以用 gitlab-runner register
来注册 Runner 了。
注册之前,可以先检查一下,是否已经安装了 Runner
$ gitlab-runner list
Runtime platform arch=amd64 os=linux pid=880297 revision=f0a95a76 version=14.5.0
Listing configured runners ConfigFile=/etc/gitlab-runner/config.toml
可以看到,当前没有可使用的 Runner,接下来开始注册
$ gitlab-runner register
Runtime platform arch=amd64 os=linux pid=884619 revision=f0a95a76 version=14.5.0
Running in system-mode.
Enter the GitLab instance URL (for example, https://gitlab.com/):
https://jh-xiaomage.gitlab.cn
Enter the registration token:
soeDCSvexosk2aHL_yJw
Enter a description for the runner:
[VM-0-6-ubuntu]: ubuntu-runner
Enter tags for the runner (comma-separated):
ubuntu,runner
Registering runner... succeeded runner=soeDCSve
Enter an executor: docker, parallels, shell, ssh, virtualbox, custom, docker-ssh, docker+machine, docker-ssh+machine, kubernetes:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
可以查看当前 Runner 的状态:
$ gitlab-runner status
Runtime platform arch=amd64 os=linux pid=901121 revision=f0a95a76 version=14.5.0
gitlab-runner: Service is running
现在就可以在极狐GitLab 实例的 Runner 界面上看到,新增了一个 Runner 且处于 active 状态:
Runner 的使用
Runner 主要用来完成 CI/CD Pipeline 的执行。可以在做 Demo 的 Project 中添加 .gitlab-ci.yml
文件,来构建一个 CI/CD Pipeline,Project 代码目录如下:
$ tree
.
├── devops.go
├── Dockerfile
└── README.md
devops.go
文件的内容如下:
package main
import (
"fmt"
"log"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello this xiaomage")
}
func main() {
http.HandleFunc("/jihu", handler)
log.Fatal(http.ListenAndServe(":9999", nil))
}
Dockerfile
的内容如下:
FROM golang:1.12.9-alpine3.9 as builder
WORKDIR /tmp
COPY devops.go /tmp
RUN go build devops.go
FROM alpine:latest
WORKDIR /usr/src/app/
COPY --from=builder /tmp/devops /usr/src/app/
CMD ["./devops"]
.gitlab-ci.yml
文件的内容如下:
stages:
- build
build:
image: docker:latest
stage: build
services:
- docker:20.10.7-dind
script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
- docker build -t $CI_REGISTRY_IMAGE:1.0.0 .
- docker push $CI_REGISTRY_IMAGE:1.0.0
接着触发 CI/CD,查看 Pipeline 构建结果
查看 Pipeline 构建日志
可以从红色方框看到,此次 CI/CD Pipeline 的构建使用了新安装的 Runner。
至此,已经完成了极狐GitLab Runner 在 Ubuntu
上的安装和使用。当然,极狐GitLab Runner 还可以在其他操作系统上安装使用,也可以用容器的方式使用。我们将在后续的文章中陆续介绍。