- 解析配置文件时出错:yaml:第22行:找不到预期的密钥
- 找不到名为
build
的作业在配置文件的jobs:
部分中运行。
我遇到了这些错误,但是我对yaml真的很陌生,所以我找不到真正的原因为什么它不起作用。有任何想法吗?有人说它可能有多余的空间或其他东西,但我找不到它。
yaml文件
defaults: &defaults:
- checkout
- restore_cache:
keys:
- v1-dependencies-{{ checksum "package.json" }}
- v1-dependencies-
- run: npm install
- save_cache:
paths:
- node_modules
key: v1-dependencies-{{ checksum "package.json" }}
version: 2
jobs:
build:
docker:
- image: circleci/node:10.3.0
working_directory: ~/repo
steps:
<<: *defaults // << here
- run: npm run test
- run: npm run build
deploy:
docker:
- image: circleci/node:10.3.0
working_directory: ~/repo
steps:
<<: *defaults
- run:
name: Deploy app scripts to AWS S3
command: npm run update-app
workflows:
version: 2
build-deploy:
jobs:
- build
- deploy:
requires:
- build
filters:
branches:
only: master
答案 0 :(得分:1)
您要尝试的是尝试合并两个序列。也就是说,所有默认元素都将合并为步骤。 YAML规范不支持该功能。只有您可以合并图和嵌套序列。
这是无效的:
steps: <<: *defaults - run:
as <<:是用于合并图元素,而不是序列
如果您这样做:
step_values: &step_values
- run ...
steps: - *defaults - *step_values
您最终将获得嵌套序列,这不是您想要的。
答案 1 :(得分:1)
暂时不可能。不幸的是,唯一的解决方案是重复整个列表。 Many users are requesting the same feature。
答案 2 :(得分:0)
看起来您的 YAML 没有正确编写。您可以随时从开源网站(例如 http://www.yamllint.com/)查看 YAML 的结构验证。
在检查 yaml 文件时,您在第 22 行做错了。正如 Srikanth 所解释的,您要做的是合并两个序列。即所有默认元素都合并到步骤中。目前 YAML 不支持。
只有你可以合并映射和嵌套序列 如果你这样做:
step_values: &step_values
- run ...
-----------------------------------------------
steps:
- *defaults
- *step_values
您最终会得到嵌套序列,这不是您想要的。