[root@k8s-master ~]# curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
[root@k8s-master ~]#
[root@k8s-master ~]# yum install gitlab-runner
[root@k8s-master ~]#
[root@k8s-master ~]# gitlab-runner -v
Version: 9.5.1
Git revision: 96b34cc
Git branch: 9-5-stable
GO version: go1.8.3
Built: Wed, 04 Oct 2017 16:26:27 +0000
OS/Arch: linux/amd64
[root@k8s-master ~]#
导航 > 管理区域(扳手图标) > Runners
[root@k8s-master ~]# gitlab-runner register
Running in system-mode.
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://git.dev-share.top/
Please enter the gitlab-ci token for this runner:
96JQ25HHmmC6n9Ez9Qzf
Please enter the gitlab-ci description for this runner:
[k8s-master]:
Please enter the gitlab-ci tags for this runner (comma separated):
tag-nodejs
Whether to run untagged builds [true/false]:
[false]: true
Whether to lock Runner to current project [true/false]:
[false]: true
Registering runner... succeeded runner=96JQ25HH
# 注意这个 选择要应用的模板
Please enter the executor: shell, kubernetes, parallels, ssh, virtualbox, docker+machine, docker-ssh+machine, docker, docker-ssh:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
[root@k8s-master ~]#
将 .gitlab-ci.yml
文件加入到项目的根目录,Runner它会去读取这里面的配置
需求:whois项目是一个使用Node.js开发的服务器用来查询域名的,因此必须需要有node.js环境才能运行
# 创建一个名为pages的任务
pages:
# 要执行的脚本
script:
# 初始化Node.js项目的依赖
- cnpm i
# 执行脚本
- sudo /home/gitlab-runner/kubectl-get-pods.sh
# 告诉 Runner 这个名为pages的任务,只在master分支上执行
only:
- master
# GitLab CI有三个默认阶段:构建(build)、测试(test)、部署(deploy)。
# 告诉 Runner 这个名为pages的任务,只在测试阶段执行
stage: deploy
# 告诉 Runner 我们应用哪个标签
tags:
- tag-nodejs
# 创建一个名为test的任务
test:
# 要执行的脚本
script:
- cnpm i
# 告诉 Runner 告诉它测试除master分支之外的其他分支的每次推送
except:
- master
# GitLab CI有三个默认阶段:构建(build)、测试(test)、部署(deploy)。
# 告诉 Runner 这个名为test的任务,只在测试阶段执行
stage: test
# 告诉 Runner 我们应用哪个标签。 如果不写会报错:(此作业被卡住,因为没有任何该项目指定标签的 runner 在线)
tags:
- tag-nodejs
前置条件:
# 在root用户下为 gitlab-runner用户做 sudo免密
[root@k8s-master ~]# visudo
# 改变 Defaults !visiblepw
Defaults visiblepw
# 追加 用户免密
gitlab-runner ALL=(ALL) NOPASSWD:ALL
# 在gitlab-runner用户下编写脚本
[gitlab-runner@k8s-master ~]$ pwd
/home/gitlab-runner
[gitlab-runner@k8s-master ~]$
# 编写测试脚本
[gitlab-runner@k8s-master ~]$ cat <<EOF > kubectl-get-pods.sh
#!/bin/bash
kubectl get pods -A -o wide
EOF
# 授权
[gitlab-runner@k8s-master ~]$ chmod -R 777 kubectl-get-pods.sh
[gitlab-runner@k8s-master ~]$ ll
total 8
drwxrwxr-x 3 gitlab-runner gitlab-runner 4096 Jun 5 16:10 builds
-rwxrwxrwx 1 gitlab-runner gitlab-runner 40 Jun 5 17:22 kubectl-get-pods.sh
[gitlab-runner@k8s-master ~]$
[root@k8s-master ~]# gitlab-runner status
gitlab-runner: Service is running!
[root@k8s-master ~]# gitlab-runner stop
[root@k8s-master ~]# gitlab-runner status
gitlab-runner: Service is not running.
[root@k8s-master ~]# gitlab-runner start
[root@k8s-master ~]# gitlab-runner status
gitlab-runner: Service is running!
[root@k8s-master ~]#
此作业被卡住,因为没有任何该项目指定标签的 runner 在线
这个原因就是在创建 .gitlab-ci.yml的时候没有给任务指定标签,或者指定的标签不存在而导致的