GitLab 配置
Docker 安装
# 拉取gitlab-ce源
docker pull gitlab/gitlab-ce:latest
# 运行
docker run \
-d \
--publish 40433:443 --publish 40080:80 --publish 40022:22 \
--name gitlab-ce \
--restart always \
-v /volume1/docker/gitlab-ce/config:/etc/gitlab \
-v /volume1/docker/gitlab-ce/logs:/var/log/gitlab \
-v /volume1/docker/gitlab-ce/data:/var/opt/gitlab \
-e GITLAB_ROOT_PASSWORD=Wsad.8246GITLAB \
gitlab/gitlab-ce
宿主机位置 | 容器位置 | 作用 |
---|---|---|
/volume1/docker/gitlab-ce/config | /etc/gitlab | 用于存储 GitLab 配置文件 |
/volume1/docker/gitlab-ce/logs | /var/log/gitlab | 用于存储日志 |
/volume1/docker/gitlab-ce/data | /var/opt/gitlab | 用于存储应用数据 |
GitLab 配置
修改 ssh 克隆地址
打开 /volume1/docker/gitlab-ce/config/gitlab.rb
修改 GitLab 配置
字段 | 举例 | 描述 |
---|---|---|
gitlab_rails[‘gitlab_ssh_host’] | 192.168.0.6 | ssh 克隆地址 |
gitlab_rails[‘gitlab_shell_ssh_port’] | 40022 | ssh 克隆端口 |
# 修改后重启
$ docker exec -it gitlab-ce bash
$ gitlab-ctl reconfigure
$ gitlab-ctl restart
修改 http 克隆地址
若要修改 http 克隆地址,需要修改文件 /var/opt/gitlab/gitlab-rails/etc/gitlab.yml
。
(当然也可以在挂载盘中修改 /volume1/docker/gitlab-ce/data/gitlab-rails/etc/gitlab.yml
)
注意:如果修改了 gitlab.rb
, 需要在 reconfigure
之后重新修改 gitlab.yml
因为修改 gitlab.rb
后 gitlab.yml
的内容会变化
# 修改后重启
$ docker exec -it gitlab-ce bash
$ vi /var/opt/gitlab/gitlab-rails/etc/gitlab.yml
gitlab:
## Web server settings (note: host is the FQDN, do not include http://)
host: 192.168.0.6
port: 40080
https: false
$ gitlab-ctl restart
最后
不要轻易尝试修改,试过出问题,可以参考 docker安装gitlab后的配置修改
Gitlab Runner 安装
gitlab-runner
版本要 <= gitlab-ce
的版本,可以在 amind 中查看。
推荐使用 交互方式
创建,可以查看创建过程的错误。(注册后,可以关闭容器)
注册
# 非交互式
$ docker run -itd --rm \
-v /volume1/docker/gitlab-runner/config:/etc/gitlab-runner \
gitlab/gitlab-runner:v15.2.1 \
register \
--non-interactive \
--executor "shell" \
--url "http://192.168.0.6:40080/" \
--registration-token "mbXzCrVhN3ry8AYM-SE8" \
--description "devops-runner" \
--tag-list "build,deploy" \
--run-untagged="true" \
--locked="false" \
--access-level="not_protected"
# 交互式
$ docker run --rm -t -i \
-v /volume1/docker/gitlab-runner/config:/etc/gitlab-runner \
gitlab/gitlab-runner:v15.2.1 register
# --输出内容如下--
Runtime platform arch=amd64 os=linux pid=6 revision=32fc1585 version=15.2.1
Running in system-mode.
Enter the GitLab instance URL (for example, https://gitlab.com/):
http://192.168.0.6:40080/
Enter the registration token:
mbXzCrVhN3ry8AYM-SE8
Enter a description for the runner:
[ff193cbdf4fc]: devops-gitlab-runner
Enter tags for the runner (comma-separated):
build
Enter optional maintenance note for the runner:
shell
Registering runner... succeeded runner=mbXzCrVh
Enter an executor: ssh, virtualbox, docker-ssh+machine, kubernetes, custom, docker, parallels, docker-ssh, shell, docker+machine:
运行
上一环节注册的所有 runner 信息都在 /volume1/docker/gitlab-runner/config/config.toml
下,可以手动删除、增加
(如果发现有很多不必要的 runner 可以进入文件删除后,重启容器)
$ docker run -d \
--restart always \
-v /volume1/docker/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
--name gitlab-runner \
gitlab/gitlab-runner:v15.2.1
进入 https://gitlab-ce.liruwei.cn/admin/runners
查看是否正常运行。
/var/run/docker.sock
本机 docker 通信的 socker 文件,mac 系统文件位置上网查找 增加这个挂载,主要用于 runner 中使用 docker 容器进行打包
增加 node 环境的 runner (docker 运行)
有时候我们需要用到其他环境打包项目,比如 React 需要 node,可以创建一个 Docker executor
的 runner。这里以 node 为例
# 进入 gitlab-runner
$ docker exec -it gitlab-runner bash
# 注册 node 环境的 docker executor runner
$ gitlab-runner register -n \
--url http://192.168.0.6:40080/ \
--registration-token mbXzCrVhN3ry8AYM-SE8 \
--executor "docker" \
--tag-list "node" \
--description "node:18.7.0" \
--docker-image "node:18.7.0"
再次打开 Gitlab 页面,就可以看到多出一个 runner。这里设置 --tag-list "node"
, ci 任务中设置 tag: -node
即可在这个 runner中执行,如下。
test:
stage: build
tags:
- node
gitlab-runner 中执行 ssh
如果 script
中需要用到 ssh
,需要进入 gitlab-runner
容器中创建密钥,利用 ssh-copy-id
上传到服务器。
由于 gitlab-runner
默认是使用 gitlab-runner 用户执行的,所以需要切换用户
$ docker exec -it gitlab-runner bash
$ su gitlab-runner
$ ssh-keygen -t rsa -C "469922730@qq.com"
$ ssh-copy-id -i ~/.ssh/id_rsa root@liruwei.cn
# 验证是否成功
$ ssh root@liruwei.cn
举例 pipeline
数据迁移
方法一:gitlab-rake
前提条件 GitLab 正常运行。使用 gitlab-rake
备份。在 /var/opt/gitlab/backups
目录下创建一个名称类似为 1530156812_2018_06_28_10.8.4_gitlab_backup.tar
的压缩包
# 进行备份
gitlab-rake gitlab:backup:create