【Devops】GitLabCI实践

通过 docker 安装 gitlab

安装 gitlab,你起码需要一台 2c4g 的服务器,gitlab 依赖很多很重的组件,我的环境是一台 2c4g 的虚拟机

挂载三个目录:/etc/gitlab/var/log/gitlab/var/opt/gitlab

映射三个端口:443/https80/http22/ssh

443 端口如果不用到证书不需要挂载

1
2
3
4
5
docker run -d  -p 443:443 -p 80:80 -p 222:22 --name gitlab  \
  --restart always -v ~/data/gitlab/config:/etc/gitlab \
  -v ~/data/gitlab/logs:/var/log/gitlab \
  -v ~/data/gitlab/data:/var/opt/gitlab \
  gitlab/gitlab-ce

等待几分钟之后,通过网站访问 gitlab,用户名为 admin,密码挂载在/Users/cengdong/data/gitlab/config目录下

修改 gitlab 配置

编辑挂载的配置目录:/Users/cengdong/data/gitlab/config/gitlab.rb

gitlab 的配置项非常多,只修改一项就能满足基本需求:external_url 'http://192.168.184.9'

重启容器docker restart gitlab或者进入容器通过gitlab-ctl reconfigure命令使配置生效

通过 docker 安装 gitlab-runner

gitlab-runner 不建议与 gitlab 安装在同一台服务器上

挂载容器运行时以及配置文件

1
2
3
4
docker run -d --name gitlab-runner --restart always \
  -v ~/data/gitlab-runner/config:/etc/gitlab-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  gitlab/gitlab-runner

非交互式注册 runner

有三种类型的 runner:sharedgroupspecific

全局类型 runner 所有人都能用,组类型 runner 只有组内人能用,特殊 runner 只有当前项目能用

在不同地方的 settings->cicd 中可以查看不同的 token

runner 有很多类型的执行器,常用的有shelldockerk8s,通过--execuotr参数指定

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
docker run --rm -v ~/data/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register \
  --non-interactive\
  --executor "docker" \
  --docker-image alpine"latest \
  --url "http://192.168.184.9" \
  --registeration-token "your token" \
  --description "test \
  --tag-list "build" \
  --run-untagged="true" \
  --locked="false"

修改 gitlab-runner 配置

修改~/data/gitlab-runner/config/config.toml文件concurrent = 10

concurrent控制一个 stage 能最多同时执行多少个 job,默认为 1 的情况下如果一个 stage 有多个 job 无法并发执行

[runners.docker]项下面添加pull_policy = if-not-present,否则每次都需要拉取镜像

运行流水线

现在,你可以愉快的运行流水线了。通过创建或者导入项目,在项目的根目录下创建.gitlab-ci.yml文件

通过 pipeline 语法控制流水线的流程

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计