GitLab CI / CD管道配置参考 .gitlab-ci.yml文件定义字段(gitlab和github区别)
2887
2022-05-30
简介
本篇文章介绍三个关键词,用于指定runner的tags,使用镜像来构建运行作业,以及规定合适触发作业的when关键词。这些都是非常使用的基础关键词。对于我们编写流水线非常有帮助。
下面为大家详细介绍。
指定runner tags
tags是用于指定作业运行的runner,开发者在注册runner时,会指定runner的tag,这是一个逗号分割的列表,在注册后开发者也可以在Gitlab上进行修改。
假如一个runner的tag为[Sona, Galio],那么如果作业要使用该runner运行脚本的话可以这样写
GarenJob: script: echo 'The only limit to our realization of tomorrow will be our doubts of today.' tags: - Sona - Galio
如果runner有二个tag,你可以指定一个tag,也可以指定2个。如果指定一个,并且该tag在多个runner中都存在,那么作业会在二个runner随机调度到其中一个。为了确保指定到固定的runner,建议在注册runner时使用不同的tag,并且在作业下指定tag时,列出runner的所有tag。
在作业上tags并不是必填项,如果一个作业没有配置tags那么该作业回去寻找该项目下,所有可以使用的runner,并且runner配置为不必指定tag也可以调用。
镜像image
如果你的流水线要使用Docker镜像来运行,或提供基础服务,那么使用关键词image将变的很简单。
以下是一个使用image的例子
InstallJob: image: node:latest script: npm install
上面的例子就是使用nodejs的官方镜像node来进行项目构建的。注意image在shell执行器下是不生效的。即使主机上已经安装了Docker。
image的值可以是一个完整的镜像地址,如registry.example.com/my/image:latest。
image除了指定镜像名外,还可以重置镜像的入口即 entrypoint
重置镜像入口该配置对于一些二进制文件镜像非常有用,比如 bitnami/kubectl 可以参考一下我的这篇文章
使用GitLab CI/CD部署应用到Kubernetes集群的方案
deploy_k8s: image: name: bitnami/kubectl entrypoint: [""] script: - kubectl version
如果你要使用一个私有仓库的镜像,那么首先需要配置Docker授权,可以使用静态授权,即账号密码登录私有库,
也可以使用Docker的秘钥。
一般情况下使用的镜像都是公开的,但也并不排除有需要使用私有镜像的情况。这里介绍一下如何使用私有镜像。
使用下面命令生成秘钥
echo -n "my_username:my_password" | base64
my_username 与my_password都是登录私有镜像库的账号和密码。
执行后会生成一个base64的字符串。
然后创建一个变量DOCKER_AUTH_CONFIG
DOCKER_AUTH_CONFIG变量的值为
{ "auths": { "<私有镜像的域名>": { "auth": "上面生成的base64的字符串" } } }
然后就可以放心大胆地使用私有镜像了。
还有一种方式是直接在GitLab Runner的配置文件里这样写
environment = ["DOCKER_AUTH_CONFIG={\"auths\":{\"registry.example.com:5000\":{\"auth\":\"bXlfdXNlcm5hbWU6bXlfcGFzc3dvcmQ=\"}}}"]
更多方式可以查看这个文档
运行条件when
关键词when是用于配置满足何种条件下作业才会运行。
一共有6个值
on_success (默认): 当前一阶段的所有作业运行成功后,才会运行该作业
manual: 手动触发作业
always: 不管前面作业的状态如何,都会运行
on_failure: 当前面有一个作业运行失败才会运行该作业
delayed:延迟运行该作业
never: 绝不运行该作业
使用案例
stages: - build - cleanup_build - test - deploy - cleanup build_job: stage: build script: - make build cleanup_build_job: stage: cleanup_build script: - cleanup build when failed when: on_failure test_job: stage: test script: - make test deploy_job: stage: deploy script: - make deploy when: manual cleanup_job: stage: cleanup script: - cleanup after jobs when: always
当build_job 失败后,cleanup_build_job 作业将会运行
在流水线结束时总是执行cleanup_job 作业,无论前面的作业是成功或失败
要想执行deploy_job 作业,必须在GitLab UI上点击运行才可以,因为它是一个手动运行作业。
参考资料
https://docs.gitlab.com/ee/ci/yaml/#image
https://docs.gitlab.com/ee/ci/docker/using_docker_images.html
https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#override-the-entrypoint-of-an-image
DevOps Git
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。