GitLab CI Runner标签复用问题:如何统一配置多阶段共享标签?
GitLab CI 统一复用Runner标签的解决方案
你之前把tags放在before_script里是无效的,因为tags是GitLab CI job的顶层配置属性,不属于before_script的范畴,所以不会被识别。
可以通过以下两种方式实现标签的统一配置与复用:
方法一:使用全局默认配置(default)
在CI配置的顶层添加default块,定义全局通用的tags,所有未单独指定tags的job都会自动继承这个配置:
default: tags: - $RUNNER_LABEL stages: - testE - testE2 test1: stage: testE when: manual script: - chmod +x gradlew - ./gradlew runE2Etests test2: stage: testE2 when: manual script: - chmod +x gradlew - ./gradlew runE2Etests
方法二:使用模板复用(extends)
如果你的两个job还有其他重复配置(比如script、when),可以定义一个模板job,让具体job通过extends继承,进一步简化配置:
stages: - testE - testE2 # 定义模板(以点开头,不会被单独执行) .e2e_test_template: tags: - $RUNNER_LABEL when: manual script: - chmod +x gradlew - ./gradlew runE2Etests test1: stage: testE extends: .e2e_test_template test2: stage: testE2 extends: .e2e_test_template
两种方法的区别:
- 全局默认配置适合所有job都需要相同标签的场景;
- 模板复用更灵活,适合仅部分job需要统一配置的场景,还能复用其他重复字段。
内容的提问来源于stack exchange,提问作者Sakeb Akhtar
相关产品推荐
相关产品推荐

