yaml:找不到预期的密钥

时间:2018-08-02 10:49:31

标签: yaml circleci circleci-2.0 circleci-workflows

  
      
  • 解析配置文件时出错: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

3 个答案:

答案 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

您最终会得到嵌套序列,这不是您想要的。