我已经开始在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中发现错误:
“作业配置应至少包含一个可见作业”
发布于 2019-10-03 13:00:19
您的yml中可能存在某种类型的BOM或其他不可见的无效字符。尝试使用另一个编辑器验证它,以检查这一点。如果什么也没有找到,请尝试删除该文件,然后使用另一种方法重新创建它。
发布于 2020-10-07 13:57:36
注意:对于这种情况,答案并不是特定的,但可能需要提一下,因为我错过了这个GitLab behaviour, from the official documentation。
(如果您有,请编辑或评论)
我的案例
我有一个从模板中include
d定义的主gitlab-ci.yaml
。
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
发布于 2021-06-07 18:34:18
在我的例子中,是文件开头的一个空格。我把它删除了,现在工作了。
https://stackoverflow.com/questions/58219290
复制相似问题