yaml:未找到预期的密钥

Phi*_* YS 8 yaml circleci circleci-workflows circleci-2.0

  • 解析配置文件时出错: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
Run Code Online (Sandbox Code Playgroud)

sri*_*ttu 3

您要做的就是尝试合并两个序列。即默认的所有元素都合并到步骤中。YAML 规范不支持哪个。只有您可以合并映射和嵌套序列。

这是无效的:

steps:
  <<: *defaults
  - run:
Run Code Online (Sandbox Code Playgroud)

as <<:用于合并映射元素,而不是序列

如果你这样做:

 step_values: &step_values
   - run ...
Run Code Online (Sandbox Code Playgroud)
steps:
  - *defaults
  - *step_values
Run Code Online (Sandbox Code Playgroud)

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