添加官方仓库
Add the GitLab official repository to your servers package manager.
curl -L [https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh](https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh) | sudo bash
Install the GitLab Runner service.
sudo yum install gitlab-runner
Test that the GitLab Runner is running
sudo service gitlab-runner status
在 GNU/Linux 系统上注册 Runner:
<pre>$ gitlab-runner register</pre>
# 输入 GitLab 实例 URL::[查看地址setting 》CI/CD 》 Runners settings ]
<pre>Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
https://gitlab.oneitfarm.com/</pre>
# 输入获取到的用于注册 Runner 的 token:[查看地址setting 》CI/CD 》 Runners settings ]
<pre>Please enter the gitlab-ci token for this runner
xxx</pre>
# 输入该 Runner 的描述,稍后也可通过 GitLab's UI 修改:
<pre>Please enter the gitlab-ci description for this runner
[hostame] xxx</pre>
# [给该 Runner 指派 tags](https://docs.gitlab.com.cn/ce/ci/runners/#using-tags), 稍后也可以在 GitLab's UI 修改: 【tags需要定义,不同的job可以通过tag跑不同的runner】
<pre>Please enter the gitlab-ci tags for this runner (comma separated):
IDG-mamidian</pre>
#选择 Runner 是否接收[未指定 tags](https://docs.gitlab.com.cn/ce/ci/runners/#using-tags) 的任务(默认值:false), 稍后可以在 GitLab's UI 修改:
<pre>Whether to run untagged jobs [true/false]:
[false]: false</pre>
# 选择是否为当前项目锁定该 Runner, 之后也可以在 GitLab's UI 修改。 该功能通常用于被指定为某个项目的 Runner (默认值:true):
<pre>Whether to lock Runner to current project [true/false]:
[true]: true</pre>
# 选择 [Runner executor](https://docs.gitlab.com.cn/runner/executors/README.html):
<pre>Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
shell</pre>
# 如果你选择 Docker 作为你的 executor,注册程序会让你设置一个默认的镜像, 作用于 .gitlab-ci.yml 中未指定镜像的项目:
<pre>Please enter the Docker image (eg. ruby:2.1):
alpine:latest</pre>
# 注册成功后可在项目页面 》settings 》CI/CD 》Runner setting下看到相关配置,并可一修改runner配置
注意:Tags必填且要唯一
注意,如果是特定项目给个人使用就用Specific Runners ,只有管理员才可以创建共享runner。
GitLab CI 中的基本概念
Runner
配合 GitLab 执行 CI 任务,是实际执行 CI 任务的进程,并将执行结果返回给 GitLab。一般一个项目分配一个 Runner,但也可以多个项目共享一个 Runner。
Executor
执行器,有多种选择,如:docker、shell 等,决定 Runner 以什么环境执行作业,一个 Runner 对应一个 Executor。
Pipline
流水线,流水线代表项目 CI/CD 的整个流程,分为多个阶段(在 .gitlab-ci.yml 中自己规定)。
Stage
阶段,一个 Pipline 对应多个阶段。
Job
CI/CD 中最小的执行单元,一个 Stage 对应多个 Jobs。
实例:
# 流水线分为测试阶段和构建阶段
stages:
- test
- build
# 测试作业
test_job:
stage: test
image: golang:1.14.2
tags:
- demo-project-runner
services:
# 执行测试时依赖 MySQL 服务
- name: mysql:8.0.17
# golang 容器中可与 mysql 容器通信的别名(内部会 DNS 解析)
alias: mysql
command: ['--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']
# 指定作业级变量,会作为环境变量传入 golang 和 mysql 容器
variables:
MYSQL_HOST: mysql
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: test
# 执行脚本前的工作,设置 goproxy 加快依赖下载速度
before_script:
- go env -w GO111MODULE=on
- go env -w GOPROXY=https://goproxy.cn,direct
# 执行代码检查和单元测试
script:
- go vet ./...
- go test -v -race ./...
# 构建作业
build_job:
stage: build
image: docker:latest
# services:
# - docker:dind
# variables:
# DOCKER_DRIVER: overlay2
# DOCKER_TLS_CERTDIR: ''
script:
# 可将一些变量放在 GitLab 项目设置里,防止密码被包含在代码中
- docker build -t goapp:latest .
- docker login -u $DOCKER_REGISTRY_USERNAME -p $DOCKER_REGISTRY_PASSWORD $DOCKER_REGISTRY_ADDR
- docker tag goapp:latest ${DOCKER_REGISTRY_ADDR}/xvrzhao/goapp:latest
- docker push ${DOCKER_REGISTRY_ADDR}/xvrzhao/goapp:latest
tags:
- demo-project-runner
# 指定 master 分支的提交才会触发该作业
only:
- master
参考:
通过 GitLab Runner 实现 CI/CD 工作流(上)
网友评论