GitLab Pipeline作业不可见,手动触发提示无可见作业报错求助
GitLab流水线报错:
Unable to create pipeline: jobs config should contain at least one visible job 相关配置文件
主配置文件 .gitlab-ci.yml
stages: - Trigger deploy: stage: Trigger trigger: strategy: depend include: - local: ci/deploy.gitlab-ci.yml variables: ENVIRONMENT: "MyEnvironment" rules: - if: '$CI_PIPELINE_SOURCE == "web"' when: on_success - when: never
子配置文件 ci/deploy.gitlab-ci.yml
include: - local: ci/templates/terraform.gitlab-ci.yml
Terraform模板 ci/templates/terraform.gitlab-ci.yml
include: - template: Terraform/Base.gitlab-ci.yml variables: TF_ROOT: ./terraform TF_STATE_NAME: $ENVIRONMENT # some more TF_VAR_XXX variables stages: - Test - Infra - Cleanup validate: extends: .terraform:validate stage: Test plan: extends: .terraform:build stage: Infra environment: name: $ENVIRONMENT action: prepare apply: extends: .terraform:deploy stage: Infra needs: - plan dependencies: - plan environment: name: $ENVIRONMENT url: https://$DOMAIN_NAME action: start variables: TF_AUTO_DEPLOY: 1 rules: - when: on_success destroy: extends: .terraform:destroy stage: Cleanup needs: - apply environment: name: $ENVIRONMENT action: stop rules: - when: manual
问题描述
通过Web界面手动触发流水线时,出现错误:
Unable to create pipeline: jobs config should contain at least one visible job
同组内配置类似的项目可正常运行,需排查作业未正确加载的原因。
排查步骤及解决方案
修正主作业规则的触发条件
主流水线的deploy作业使用when: on_success,但该作业无前置任务,部分GitLab版本中会导致规则不满足。将其改为when: always,确保满足条件时直接运行:rules: - if: '$CI_PIPELINE_SOURCE == "web"' when: always - when: never验证Include文件路径正确性
- 确认
ci/deploy.gitlab-ci.yml和ci/templates/terraform.gitlab-ci.yml在仓库中真实存在,路径大小写与配置完全一致(GitLab对路径大小写敏感)。 - 尝试将路径改为根目录相对路径,比如
./ci/deploy.gitlab-ci.yml,避免路径解析歧义。
- 确认
跳过中间层配置直接测试
暂时跳过ci/deploy.gitlab-ci.yml,直接在主流水线中引入Terraform模板,验证子流水线作业是否能正常加载:deploy: stage: Trigger trigger: strategy: depend include: - local: ci/templates/terraform.gitlab-ci.yml # 其余配置不变如果此方式能正常创建流水线,说明中间层
ci/deploy.gitlab-ci.yml存在问题(如文件缺失、语法错误)。检查GitLab版本兼容性
确认当前GitLab版本支持trigger.include.local语法(需GitLab 13.10及以上版本),对比同组正常项目的GitLab版本是否一致。旧版本不支持本地文件触发子流水线,会导致作业无法加载。验证Terraform基础模板的有效性
确认Terraform/Base.gitlab-ci.yml官方模板中存在.terraform:validate、.terraform:build等被继承的作业。若GitLab版本过旧,模板作业的命名或结构可能有变化,需对应调整子流水线的extends字段。
内容的提问来源于stack exchange,提问作者Hervé
相关产品推荐
相关产品推荐

