CI/CD
<p>CI/CD
基本概念
gitlab-runner
CI的job是由gitlab-runner去执行的,类似jenkins。runner不断轮训是否有需要进行的任务。</p>
<p>CI脚本
ci脚本为项目根目录 .gitlab-ci.yml 文件
详情见文档</p>
<p>示例:
stages:</p>
<ul>
<li>build
job 1:
stage: build
when: manual
script:
<ul>
<li>mvn clean package</li>
<li>dateTag=<code>date +"%Y%m%d%H%M"</code></li>
<li>docker build -t hub.ecs.com:6999/app:$dateTag .</li>
<li>docker push hub.ecs.com:6999/app:$dateTag
常用配置
stages:
最外层配置。构建步骤,不写时为下方的三步。</li>
</ul></li>
</ul>
<p>stages:</p>
<ul>
<li>build</li>
<li>test</li>
<li>deploy
意思为,
并行执行所有步骤为 build 的任务
所有步骤为 build 的任务执行之后且全部成功时,开始并行执行步骤为 test 的任务
所有步骤为 test 的任务执行之后且全部成功时,开始并行执行步骤为 deploy 的任务
没有特殊情况时,任意步骤失败时,将不会执行后续步骤的任务</li>
</ul>
<p>备注: 特殊情况为任务中的 when 配置,会使任务可以在前置失败后执行</p>
<p>job:
最外层配置。任务,名称可以自己定义,不可重复</p>
<p>stage:
任务中的配置。该任务对应的步骤,必须为 stages 中已经定义好的步骤。不写时默认为 test 步骤</p>
<p>script:
任务中的配置。任务的执行内容脚本,每个任务必须含有的配置。任务的其他配置均为可选项。
可能需要在脚本外层增加引号,强制转换成字符串,否则有些符号会产生yml的语法意义导致脚本出错。
尤其注意下列符号。</p>
<p>:, {, }, [, ], ,, &, *, #, ?, |, -, <, >, =, !, %, @, `
before_script 和 after_script
最外层配置。在每个任务执行前后均会执行的内容。</p>
<p>新项目添加CI
目前可以使用的runner</p>
<p>项目组公共的runner(找田仁飞配置)
自己注册的项目私有的runner(自己手动注册后可用)
在gitlab-runner中注册项目
运行命令
gitlab-runner register
根据提示输入 url、token、runner name、tag、runner type(type一般为shell)
回到项目中查看新增的runner,可能需要编辑钩选Run untagged jobs选项
备注:</p>
<p>查看原有 gitlab-runner 的启动命令,如果有指定配置文件路径,注册时也需要指定相同的配置文件,否则会使用默认配置文件路径。注册后对应的配置文件会新增配置,确保该配置文件对应的runner已经启动,否则会显示没有连接
root用户启动的runner配置文件默认路径为 /etc/gitlab-runner/config.toml
非root用户启动的runner配置文件路径默认为 ~/.gitlab-runner/config.toml
目前在 132.46.110.79 上部署了gitlab-runner。也可以在其他主机额外部署
命令位置:
/app/soft/gitlab/gitlab-runner register
目前的 workspace:
/app/soft/gitlab-runner/workspaces
常见问题
注册runner用的信息以及runner在哪里查看
进入项目 -> Settings -> CI / CD
expand 右侧 Runners 部分</p>
<p>pipelines 的任务一直在 pending
可能原因:</p>
<p>新增的 runner 没有钩选Run untagged jobs选项,导致无法执行没有在ci脚本中标记tag的任务。(解决方法:到项目中查看runner,编辑钩选Run untagged jobs选项)
runner 轮训任务没有到该任务,或者所有 runner 都在运行,没有空闲的 runner。(解决方法:等到runner pick到你的任务就会开始执行了)
希望ci手动执行,而不是每次push后执行
在ci脚本对应的任务中添加when: manual,添加后,pipeline页面会出现手动执行的按钮</p>