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

3 回答 3

3

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

这是无效的:

steps:
  <<: *defaults
  - run:

as <<: 用于合并地图元素,而不是序列

如果你这样做:

 step_values: &step_values
   - run ...
steps:
  - *defaults
  - *step_values

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

于 2018-08-02T14:18:46.397 回答
2

目前不可能。不幸的是,唯一的解决方案是重复整个列表。许多用户都在请求相同的功能

于 2021-03-26T11:23:04.880 回答
0

看起来您的 YAML 编写不正确。您可以随时从http://www.yamllint.com/等开源网站检查 YAML 的结构验证。

在检查 yaml 文件时,在第 22 行你做错了。正如 Srikanth 所解释的,您尝试做的是合并两个序列。即默认的所有元素都合并到步骤中。目前 YAML 不支持。

只有你可以合并地图和嵌套序列 如果你这样做:

 step_values: &step_values
   - run ...
-----------------------------------------------
    steps:
      - *defaults
      - *step_values

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

于 2021-04-16T06:52:31.190 回答