一、安装前准备
- 为了加速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;