Open
Description
背景
前段时间在调研持续集成的框架,在本地部署过一套环境,在此记录一下
安装本地环境
Gitlab
安装Gitlab
docker run -d \
--hostname gitlab.basebit.ai \
--publish 443:443 --publish 80:80 --publish 24:22 \
--name docker-gitlab \
--restart always \
--volume ~/workspace/docker/gitlab/config:/etc/gitlab \
--volume ~/workspace/docker/gitlab/logs:/var/log/gitlab \
--volume ~/workspace/docker/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
修改本机host文件
# vi /etc/hosts
# 加入指定自定义域名
127.0.0.1 gitlab.basebit.ai
测试本机设置是否成功
ssh -T git@gitlab.basebit.ai
使用24端口具体碰到到问题参见:gitlab docker
Gitlab Runner
安装Gitlab Runner
docker run -d --name docker-gitlab-runner --restart always \
--link docker-gitlab:gitlab.basebit.ai \
-v ~/workspace/docker/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/local/bin/docker:/usr/bin/docker \
gitlab/gitlab-runner:latest
注: linux和macOs的不同处
# linux
-v /usr/bin/docker:/usr/bin/docker
# macOs
-v /usr/local/bin/docker:/usr/bin/docker
注册Runner
-
进入gitlab runner容器
docker exec -it docker-gitlab-runner /bin/bash
-
在容器内执行注册命令
sudo gitlab-runner register -n \ --url http://gitlab.basebit.ai/ \ --registration-token xxxxxxxxxxxxxx \ --executor docker \ --description "Runner Description" \ --docker-image "docker:latest" \ --docker-volumes /var/run/docker.sock:/var/run/docker.sock \ --docker-extra-hosts "gitlab.basebit.ai:172.17.0.2"
Specific Runners和Shared Runners的区别
runner | desc |
---|---|
Specific Runners | 指定运行某一个Gitlab CI 的项目 |
Shared Runners | 运行所有的 CI 项目(只有管理员权限可配置Shared Runners) |
碰到的问题
GitLab与Runners通过API进行通信, 所以只要Runners能访问网络就能与GitLab通信
由于使用的是本地域名,如果在注册runner中未设置过host,碰到连接失败问题参见如下
Gitlab-CI: Failed to connect to gitlab.basebit.ai port 80: Connection refused
项目加入CI/CD
- 需在仓库根目录创建一个.gitlab-ci.yml 文件
- 并为该项目指派一个Runner
- 以上2步完成后,每次push的commit或者Merge Request代码到Git仓库, Runner就会自动运行pipeline,开始自动化集成。
样例参考: gitlab ci nodejs