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

时间:2019-10-03 12:38:09

标签: git continuous-integration gitlab yaml 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

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

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

3 个答案:

答案 0 :(得分:1)

您的yml中可能存在某种BOM表或其他无效字符,这些字符不可见。 尝试使用其他编辑器对其进行验证以进行检查。如果未找到任何内容,请尝试删除该文件,然后使用另一种方法重新创建它。

答案 1 :(得分:1)

注意: 答案不是针对这种情况的,但由于我错过了此GitLab behaviour, from the official documentation,因此可能值得一提。

(如果愿意,请编辑或评论)

我的案子

我有一个主要的gitlab-ci.yaml include定义了模板的定义。

gitlab-ci-template

.deploy_to_cloud:
  stage: deploy
  script:
    - echo Deployed

gitlab-ci

include: repo.url/gitlab-ci-template

stages:
  - deploy

deploy:
  extends: .deploy_to_cloud

问题

复制粘贴并将所有内容合并到一个gitlab-ci.yml文件中

gitlab-ci

stages:
  - deploy_to_cloud

.deploy_to_cloud:
  stage: deploy
  script:
    - echo Deployed

我开始得到一个

工作配置应至少包含一个可见工作

并注意不再创建任何作业;只需将一些代码移到另一个位置即可。

问题是因为我忘记重命名所有舞台定义了!

解决方案

有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

答案 2 :(得分:0)

就我而言,是文件开头的一个空格。我删除它,广告现在有效。

enter image description here