极狐 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
极狐 GitLab Runner 的安装使用方式也很灵活,可以通过安装包安装,也可以用 docker 来运行,甚至都支持 Kubernetes。本轮手把手教程会分享这几个种方式的花式玩法。首先来看看用安装包在 Ubuntu 系统上安装并极狐 GitLab Runner 的方式。
01 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
复制代码
02 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 如上图红色方框所示,接着就可以用 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 状态:
03 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 is 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 还可以在其他操作系统上安装使用,也可以用容器的方式使用。我们将在后续的文章中陆续介绍。
评论