Gitlab-ce镜像
在设置其他内容之前,配置一个新的环境变量$GITLAB_HOME,指向配置、日志和数据文件将驻留的目录。
设置环境变量
export GITLAB_HOME=/srv/gitlab
GitLab容器使用主机挂载的卷来存储持久数据:
安装
拉取镜像
docker pull gitlab/gitlab-ce:latest
您可以对这些目录进行微调以满足您的需求。设置了GITLAB_HOME变量后,你就可以运行图像了
sudo docker run --detach \
--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
这将启动一个GitLab容器,并发布访问SSH、HTTP和HTTPS所需的端口。所有GitLab数据将存储在$GITLAB_HOME的子目录中。容器将在系统重新启动后会自动重新启动。
初始化过程可能耗时较长。你可以查看日志跟踪这个过程:
sudo docker logs -f gitlab
在启动一个容器之后,你可以访问http://192.168.131.130。 在Docker容器开始响应查询之前可能需要一段时间。当您第一次访问GitLab时,您将被要求设置管理员密码。修改后,您可以使用root用户名和设置的密码登录
配置
这个容器使用官方的通用GitLab包,所有的配置/etc/gitLab/gitLab.rb中。进入docker容器。
docker exec -it gitlab /bin/bash
一旦你打开/etc/gitlab/gitlab.rb。确保将external_url设置为指向一个有效的URL。在完成您想要的更改之后,您需要重新启动容器,以便重新配置GitLab
在一个公共IP地址上运行GitLab
你可以让Docker使用你的IP地址,并通过修改——publish标志将所有的通信转发给GitLab容器。
sudo docker run --detach \
--hostname gitlab.example.com \
--publish 198.51.100.1:443:443 \
--publish 198.51.100.1:80:80 \
--publish 198.51.100.1:22:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
然后可以通过http://198.51.100.1/和https://198.51.100.1/访问GitLab实例。
在不同的端口上暴露GitLab
如果你想更改端口,你需要在docker run命令中添加一个单独的——publish指令。
1.要公开主机的端口8929上的web接口,以及端口2289上的SSH服务,使用以下docker run命令:
sudo docker run --detach \
--hostname gitlab.example.com \
--publish 8929:8929 --publish 2289:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
2.进入容器
sudo docker exec -it gitlab /bin/bash
3.打开 /etc/gitlab/gitlab.rb 设置 external_url:
设置为HTTPS时创建runner需要使用证书。为了方便,推荐使用http。如果想使用HTTPS,在创建runners时请查看注意事项
# For HTTP
external_url "http://gitlab.example.com:8929"
or
# For HTTPS (notice the https)
external_url "https://gitlab.example.com:8929"
这个URL中指定的端口必须与Docker发布给主机的端口匹配。
4.设置 gitlab_shell_ssh_port:
gitlab_rails['gitlab_shell_ssh_port'] = 2289
5.重启GitLab:
gitlab-ctl reconfigure
按照上面的示例,您将能够从web浏览器使用8929端口访问GitLab,并使用2289端口下的SSH推送docker-compose。
Gitlab-Runner
启动gitlab-runner容器
docker pull gitlab/gitlab-runner:latest
要在Docker容器中运行gitlab-runner,您需要确保在容器重新启动时配置不会丢失。为此,有两个选项
-
使用本地系统卷挂载来启动Runner容器
使用本地系统作为挂载到gitlab-runner容器中的配置卷。这个卷用于配置文件和其他资源。
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 -
使用Docker卷来启动Runner容器
-
创建docker卷
docker volume create gitlab-runner-config -
使用刚创建的卷启动GitLab运行器容器:
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
-
安装可信的SSL服务器证书
如果您的GitLab CI服务器使用自签名SSL证书,那么您应该确保GitLab CI服务器证书受到GitLab runner容器的信任,以便它们能够相互通信。
gitlab/gitlab-runner映像配置为在/etc/gitlab-runner/certs/ca.crt中查找受信任的SSL证书。
使用docker注册gitlab-runner
这里展示创建指定项目的runner。前提我们已经创建好一个project。
下面的步骤描述了启动一个gitlab-runner容器来注册runners。注册完成后,生成的配置被写入所选的配置卷(/srv/gitlab-runner/config),并将由运行程序使用该配置卷加载。
-
根据挂载类型执行register命令:
-
本地系统卷挂载
docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register -
docker卷挂载
docker run --rm -it -v gitlab-runner-config:/etc/gitlab-runner gitlab/gitlab-runner:latest register
-
-
输入您的GitLab实例URL(也称为gitLab-ci协调器URL)。
-
输入您获得的令牌来注册runner。
-
输入runner的描述。稍后可以在GitLab用户界面中更改这个值。
-
输入与runner相关的标记,以逗号分隔。稍后可以在GitLab用户界面中更改这个值。
-
提供runner executor。对于大多数用例,输入docker。
-
如果你输入docker作为你的执行器,你需要为没有
.gitlab-ci.yml的项目提供默认的镜像(ruby:latest)。
也可以预先指定参数
gitlab-runner register \
--non-interactive \
--url "https://192.168.131.130:8929/" \
--registration-token "xNzRQx8v3z66EtPo-K_P" \
--executor "docker" \
--docker-image maven:latest \
--description "runner " \
--tag-list "run" \
--run-untagged \
--locked="false"
注册完成后可以在setting->CI/CD->Runners->Expand 查看注册的运行器
为了避免出错,需要勾选运行器的 Run untagged jobs
注意事项
cannot validate certificate
这是由于我们在/etc/gitlab/gitlab.rb 设置 external_url为HTTPS协议。请求时需要添加证书。
-
进入gitlab容器,查找证书。证书路径:
/etc/gitlab/ssl -
使用
docker cp复制证书到gitlab容器。-
可以存放在某个路径,gitlab-runner register时通过--tls-ca-file指定证书路径
-
存放在/etc/gitlab-runner/certs/ 路径下。重启后就无须指定证书路径了
- 如果使用-volume映射gitlab的配置文件,可以直接存放到宿主机对应的目录下。
-
Post gitlab.zjy.com:8929/api/v4/runn…: dial tcp 129.226.170.70:8929: connect: connection refused
进入 /etc 修改hosts文件
echo "192.168.131.130 gitlab.zjy.com" >> hosts