GitLab CI配置中include的local与template有什么区别
GitLab CI
include 配置中local与template类型的差异 二者核心区别是引用的配置文件来源完全不同,具体差异如下:
- 文件来源差异
local类型引用的是当前项目自身仓库内存储的自定义CI配置文件,填写的路径是相对于仓库根目录的相对路径。示例里的unit-tests.gitlab-ci.yml、smoke-tests.gitlab-ci.yml就是项目开发者自己写了存在仓库里的单元测试、冒烟测试配置,你可以直接在仓库里编辑修改这些文件,只有当前项目(以及fork了该项目的仓库)能访问到这些文件。template类型引用的是GitLab平台内置、官方维护的通用CI模板,这些文件根本不存在于你自己的项目仓库里,是随GitLab版本预装在平台公共模板库中的,所有接入该GitLab实例的项目都能直接引用,你没法直接修改模板的源文件,只能在自己项目的CI配置里覆写模板里定义的job、变量、执行规则等内容。
- 路径解析规则差异
local类型的路径会严格匹配仓库内的实际文件结构,路径写错会直接报CI配置校验失败,支持引用任意子目录下的配置,比如local: ./ci/configs/build.yml就是合法写法。template类型的路径固定匹配GitLab内置模板库的目录结构,比如常用的template: Jobs/SAST.gitlab-ci.yml就是官方自带的静态应用安全扫描模板,不需要你在本地仓库存对应文件,引用后就能直接把扫描规则加到自己的流水线里。
示例里的配置是很典型的用法:先引入官方提供的通用默认CI规则作为基础配置,再叠加项目自己维护的两类测试配置,快速拼出完整的CI流水线,不用从零开始写所有规则。
内容的提问来源于stack exchange,提问作者Ambroise Rabier
相关产品推荐
相关产品推荐

