自建 gitlab 和 gitlab-runner
说明
本例均以
docker进行安装系统环境
1
2
3
4
5
6
7
8uname -a
Linux code 5.4.0-159-generic #176-Ubuntu SMP Mon Aug 14 12:04:20 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04 LTS
Release: 20.04
Codename: focaldocker 与 docker-compose
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31docker version
Client: Docker Engine - Community
Version: 23.0.1
API version: 1.42
Go version: go1.19.5
Git commit: a5ee5b1
Built: Thu Feb 9 19:46:56 2023
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 23.0.1
API version: 1.42 (minimum version 1.12)
Go version: go1.19.5
Git commit: bc3805a
Built: Thu Feb 9 19:46:56 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.18
GitCommit: 2456e983eb9e37e47538f59ea18f2043c9a73640
runc:
Version: 1.1.4
GitCommit: v1.1.4-0-g5fd4c4d
docker-init:
Version: 0.19.0
GitCommit: de40ad0
docker compose version
Docker Compose version v2.16.0
gitlab
设定环境变量,在
~/.bashrc中加入export GITLAB_HOME=/srv/gitlab,并生效source ~/.bashrc,详见Set up the volumes location创建
docker-compose.yml文件,内容如下1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20# gitlab/gitlab-ee:latest 版本信息
# "gitlab/gitlab-ee@sha256:82e5d49574964bc0a5b8942ac2b92ac7f3618832d6eb24fc9c33a41d889b8d83"
version: '3.6'
services:
web:
image: 'gitlab/gitlab-ee:latest'
restart: always
hostname: '192.168.1.1' # 填本机IP或域名,localhost不行
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://192.168.1.1:8929'
gitlab_rails['gitlab_shell_ssh_port'] = 2224
ports:
- '8929:8929'
- '2224:22'
volumes:
- '$GITLAB_HOME/config:/etc/gitlab'
- '$GITLAB_HOME/logs:/var/log/gitlab'
- '$GITLAB_HOME/data:/var/opt/gitlab'
shm_size: '256m'启动,
docker compose up获得初始账密,24小时即过期
1
2root
docker exec -it [启动容器名] grep 'Password:' /etc/gitlab/initial_root_password
gitlab-runner
在网页端创建
runner,并获取runner authentication token,填写tag即可
创建成功后,如下


启动
gitlab-runner容器,启动后,查看日志如下,报错是因为没有config.toml文件,创建runner后,即消失1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16gitlab/gitlab-runner:latest 版本信息
"gitlab/gitlab-runner@sha256:b846b7dec4f10fbe576709e4c74cbf2859c5a01267e7992b36d6643f52f6154d"
Option 1: Use local system volume mounts to start the Runner container
示例采取方案
docker run -d --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
Option 2: Use Docker volumes to start the Runner container
docker volume create gitlab-runner-config
docker run -d --name gitlab-runner --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v gitlab-runner-config:/etc/gitlab-runner \
gitlab/gitlab-runner:latest
注册
runner,内容会被记录在/srv/gitlab-runner/config/config.toml中,executor选择参见Executors1
2注意 /srv/gitlab-runner/config:/etc/gitlab-runner 为第一步配置路径
docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register
成功后,如下

测试
ci功能1
2
3
4
5
6
7
8
9
10
11# .gitlab-ci.yml
stages:
- compile
compile:
stage: compile
tags:
- first-gitlab-runner
script:
- echo "hello, world"
- echo "this is my gitlab runner test"
删除现有
runner1
2
3
4
5
6
7查看列表
docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner list
取消注册
docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner unregister --name [name]
以下命令实测不能删除
docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner unregister --url [url] --token [token]
问题及解决
ERROR: Unregistering runner from GitLab client error status=only http or https scheme supported- 命令使用错误,
unregister需要指定--url
- 命令使用错误,
参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 cv-programmer!




