Gitlab CI:作业配置应至少包含一项可见作业

1 git continuous-integration yaml gitlab gitlab-ci

我已经开始在 Gitlab CI 上构建我的 .gitlab-ci.yml 所以我用这样的简单阶段创建了它

image: node:alpine

variables:
  PUBLIC_URL: /my-app

cache:
  paths:
    - node_modules

stages:
  - build
  - deploy

install_dependencies:
  stage: build
  script:
    - npm install
  artifacts:
    paths:
      - node_modules/

deploy_to_cloud:
  stage: deploy
  script:
    - echo Deployed
Run Code Online (Sandbox Code Playgroud)

但作业失败并回复:在您的 .gitlab-ci.yml 中发现错误:

“作业配置应至少包含一项可见的作业”

Kam*_*her 11

注意: 答案并不是针对这种情况的,但可能值得一提,因为我从官方文档中错过了这个 GitLab 行为

(如果您这样做,请编辑或评论)

我的情况

我有一个主要gitlab-ci.yamlinclude模板定义。

gitlab-ci-模板

.deploy_to_cloud:
  stage: deploy
  script:
    - echo Deployed
Run Code Online (Sandbox Code Playgroud)

gitlab-ci

include: repo.url/gitlab-ci-template

stages:
  - deploy

deploy:
  extends: .deploy_to_cloud
Run Code Online (Sandbox Code Playgroud)

问题

复制粘贴并全部合并到一个gitlab-ci.yml文件中后

gitlab-ci

stages:
  - deploy_to_cloud

.deploy_to_cloud:
  stage: deploy
  script:
    - echo Deployed
Run Code Online (Sandbox Code Playgroud)

我开始得到一个

作业配置应至少包含一项可见作业

并注意到不再创造任何就业机会;只需将一些代码移动到另一个地方即可。

问题是因为我忘记重命名所有阶段定义!

解决方案

Gitlab-CI 命名规则如下:

阶段定义名称不得以前导点开头;否则它将被隐藏,并且不会为该阶段创建任何工作!

一旦注意到它就完全有意义了,因为 Linux 文件的行为方式是相同的。

在我的例子中,删除阶段定义名称中的第一个点使 Gitlab 再次看到作业。

gitlab-ci

stages:
  - deploy_to_cloud

deploy_to_cloud:   # notice the removed dot at the beginning
  stage: deploy
  script:
    - echo Deployed
Run Code Online (Sandbox Code Playgroud)


小智 10

您的 yml 中可能存在某种不可见的 BOM 或其他无效字符。尝试用另一个编辑器验证它以检查它。如果您什么也没找到,请尝试删除该文件并使用另一种方法重新创建它。