一、安装前准备
- 为了加速docker镜像的下载速度,建议大家搜索阿里云docker镜像加速来进行相关配置
- 确保安装了docker-compose
- 创建gitlab主目录和gitlab-runner主目录
$ mkdir -p gitlab/{config,data,logs} $ mkdir -p gitlab-runner/config
二、创建gitlab-compose.yml文件如下
version: '3'
networks:
default:
driver: bridge
services:
gitlab:
image: 'gitlab/gitlab-ce'
restart: unless-stopped
hostname: 'gitlab'
container_name: gitlab
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://IP或者域名:HTTP端口/'
gitlab_rails['time_zone'] = 'Asia/Shanghai'
ports:
- '对外HTTP端口:80'
- '对外HTTPS端口:443'
- '对外SSH端口:22'
volumes:
- /path/to/gitlab/config:/etc/gitlab
- /path/to/gitlab/logs:/var/log/gitlab
- /path/to/gitlab/data:/var/opt/gitlab
gitlab-runner:
image: 'gitlab/gitlab-runner'
container_name: gitlab-runner
hostname: 'gitlab-runner'
depends_on:
- gitlab
restart: always
volumes:
- /path/to/gitlab-runner/config:/etc/gitlab-runner
- /var/run/docker.sock:/var/run/docker.sock
- 为了避免和宿主机的其他服务端口冲突,e,g: 这里设置对应gitlab http服务的宿主机的端口为8080, gitlab https服务的宿主机的端口为8443, gitlab ssh服务的宿主机的端口为8022,大家可以按照自己的要求做相应调整
- 每个服务设置了唯一的主机名,方便后续gitlab-runner能通过主机名访问到gitlab服务
- 请将/path/to替换成实际我们在准备时候的实际路径
- 如果在external_url中指定了端口号,那么在gitlab容器内的http服务的端口也会设置为对应一样的端口号,所以在docker中map端口的时候对外端口和external_url中的端口设置要一致
第一次安装gitlab, 默认的root用户密码保存在容器里面的/etc/gitlab/initial_root_password
中
三、启动docker容器并打印日志
docker-compose -f /path/to/gitlab-compose.yml up -d
docker logs -f gitlab
四、进入gitlab-runner容器并注册gitlab-runner
docker exec -it gitlab-runner bash
root@gitlab-runner:/# gitlab-runner register
- 执行上面命令后按提示输入gitlab的settings/CI/CD页面中runner下面的"registration token"
- 如果计划运行在docker模式,设置tag的时候建议每个runner的tag能标识它所使用的helper image
五、运行在docker模式下的gitlab-runner配置
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "dev-gitlab-runner"
url = "http://10.2.5.24:5080/"
token = "sgDgWNx8eoG_7fuHx8ym"
executor = "docker"
#clone_url="http://10.2.5.24:5080/"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
image = "node:latest"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
pull_policy="if-not-present"
- image最好和runner的tag匹配,这样在写.gitlab-ci.yml的时候就可以指定通过tag选择对应的runner去运行
FAQ
-
如果在安装gitlab的时候碰到删除了某些文件导致gitlab数据库内的数据和文件系统上的不一致,导致可能很多问题,例如进入settings->’CI/CD’页面的时候出现500错误,可以尝试按下面链接去解决问题:
https://docs.gitlab.com/ee/raketasks/backup_restore.html#when-the-secrets-file-is-lost
-
在push代码的时候出现
error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413
, 当你用http模式push代码的时候你的web服务器对client端post数据的默认大小太小会导致该错误抛出, 请修改对应的http post大小配置,e,g: 对nginx来说,在nginx.conf中的http
位置加入如下配置client_max_body_size 50m;