GitLab代码提交或推送触发CI pipeline,需要满足以下2点条件:
仓库根目录下存在有
.gitlab-ci.yml
文件该项目有可用的
GitLab Runner
这样,仓库每收到一次push,runner都会自动启动pipeline,结果显示在项目的pipeline页面。
一、.gitlab-ci.yml
文件
.gitlab-ci.yml
是什么
.gitlab-ci.yml
文件告诉GitLab runner要做什么事情,默认三个stage:build
,test
,deploy
。不必3个都用,没有job的节点会被忽略。
.gitlab-ci.yml
有版本控制,因此各个分支或fork可以使用自己的pipelines和job。
创建一个.gitlab-ci.yml
注意:YAML
文件对缩进有强校验,请使用空格,不要使用tabs。
before_script:
- apt-get update -qq && apt-get install -y -qq sqlite3 libsqlite3-dev nodejs
- ruby -v
- which ruby
- gem install bundler --no-ri --no-rdoc
- bundle install --jobs $(nproc) "${FLAGS[@]}"
rspec:
script:
- bundle exec rspec
rubocop:
script:
- bundle exec rubocop
推送到远程仓库:
git add .gitlab-ci.yml
git commit -m "add .gitlab-ci.yml"
git push origin master
二、GitLab Runner
Runner负责执行.gitlab-ci.yml
文件中定义的job,可以是虚拟机、vps、裸机、docker容器或容器集群。GitLab和Runner之间通过API接口通信,因此唯一要求是Runner机器网络可通。
项目的Settings-->CI/CD-->Runners页面可以查看到是否有可用的Runner。
安装与配置
主要几个步骤:
1)安装
参考文档 https://docs.gitlab.com/runner/install/
2)注册,区分Shared Runner
和Specific Runner
-
Shared Runner
:公共的所有项目都可用的runner,需要admin用户拿到gitlab全局的token -
Specific Runner
:专为某个项目服务的runner,需要拿到项目的注册token
参考https://docs.gitlab.com/runner/register/
3)启动runner服务
runner注册之后是需要启动的,命令sudo gitlab-runner run
,否则你的pipeline将一直处于pending状态。
4)测试一下
引用一篇文章,讲解的非常清楚,供参考:https://www.cnblogs.com/cnundefined/p/7095368.html