我们的项目通过Gitlab-Runner来支持CI/CD。gitlab-ci.yml是用来管理Runner任务的配置文件,用于定义Runner在各个阶段所需要执行的具体任务。
举例,以下gitlab-ci.yml定义了master分支代码提交,以及打tag后分别触发的不同任务:
before_script:
- docker login -u$ROBOT_NAME -p$ROBOT_PASS http://dhub.xx.cn
stages:
- build
- push
build:
stage: build
variables:
CI_DEBUG_TRACE: "false"
script:
# - export IMAGE_TAG= "dhub.xx.cn/bash/jre8:`echo $CI_COMMIT_REF_NAME`| grep 's/^v//g'"
- docker build -t dhub.xx.cn/base/jre8:demo .
only:
- master
tags:
- shell
push:
stage: push
variables:
CI_DEBUG_TRACE: "false"
script:
- docker build -t "dhub.xx.cn/base/jre8:`echo $CI_COMMIT_TAG | sed 's/release\-v//g'`" .
- docker push "dhub.xx.cn/base/jre8:`echo $CI_COMMIT_TAG | sed 's/release\-v//g'`"
only:
- /release\-v.*/
tags:
- shell
开发在master上提交代码时,将自动触发build任务,如果build失败,将自动通知开发进行问题修复
开发在master上打tag,且tag符合格式,譬如 release-v1.2.3时,将自动触发push任务,进行docker镜像构建,并将镜像自动推送到镜像仓库
更多git-ci.yml的内容,可参考:
非官方的中文翻译:https://segmentfault.com/a/1190000010442764
官方英文文档:https://docs.gitlab.com/ce/ci/quick_start/README.html
评论已关闭