首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CircleCI保持步长

CircleCI保持步长
EN

Stack Overflow用户
提问于 2020-05-06 20:46:32
回答 1查看 792关注 0票数 0

我试图在CircleCI的config.yml文件中添加一个等待作业,但是我无法使它工作,而且我很确定这是一个非常简单的错误(我只是看不到它!)

当使用本地运行以下命令的CircleCI CLI验证它时

circleci config validate

我得到以下错误

Error: Job 'hold' requires 'build-and-test-service', which is the name of 0 other jobs in workflow 'build-deploy'

这是一个config.yml (请注意,它是针对一个Serverless框架应用程序的-这应该不会有任何区别)

代码语言:javascript
复制
version: 2.1
jobs:
  build-and-test-service:
    docker:
      - image: timbru31/java-node
    parameters:
      service_path:
        type: string
    steps:
      - checkout
      - serverless/setup:
          app-name: serverless-framework-orb
          org-name: circleci
      - restore_cache:
          keys:
            - dependencies-cache-{{ checksum "v2/shared/package-lock.json" }}-{{ checksum "package-lock.json" }}-{{ checksum "<< parameters.service_path >>/package-lock.json" }}
            - dependencies-cache
      - run:
          name: Install dependencies
          command: |
            npm install
            cd v2/shared
            npm install
            cd ../../<< parameters.service_path >>
            npm install
      - run:
          name: Test service
          command: |
            cd << parameters.service_path >>
            npm run test:ci
      - store_artifacts:
          path: << parameters.service_path >>/test-results/jest
          prefix: tests
      - store_artifacts:
          path: << parameters.service_path >>/coverage
          prefix: coverage
      - store_test_results:
          path: << parameters.service_path >>/test-results
  deploy:
    docker:
      - image: circleci/node:lts
    parameters:
      service_path:
        type: string
      stage_name:
        type: string
      region:
        type: string
    steps:
      - run:
          name: Deploy application
          command: |
            cd << parameters.service_path >>
            serverless deploy --verbose --stage << parameters.stage_name >> --region << parameters.region >>
      - save_cache:
          paths:
            - node_modules
            - << parameters.service_path >>/node_modules
          key: dependencies-cache-{{ checksum "package-lock.json" }}-{{ checksum "<< parameters.service_path >>/package-lock.json" }}
orbs:
  serverless: circleci/serverless-framework@1.0.1
workflows:
  version: 2
  build-deploy:
    jobs:
      # non-master branches deploys to stage named by the branch
      - build-and-test-service:
          name: Build and test campaign
          service_path: v2/campaign
          filters:
            branches:
              only: develop
      - hold:
          name: hold
          type: approval
          requires:
            - build-and-test-service
      - deploy:
          service_path: v2/campaign
          stage_name: dev
          region: eu-west-2
          requires:
            - hold

很明显,错误与hold步骤有关(在配置的底部附近)无法找到位于其上方的build-and-test-service,但是build-and-test-service确实存在,因此在这一点上遇到了困难。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-07 15:59:47

对任何阅读的人来说,我都明白为什么它不起作用了。

实际上,我在requires键下使用了不正确的属性引用:

代码语言:javascript
复制
workflows:
  version: 2
  build-deploy:
    jobs:
      # non-master branches deploys to stage named by the branch
      - build-and-test-service:
          name: Build and test campaign
          service_path: v2/campaign
          filters:
            branches:
              only: develop
      - hold:
          name: hold
          type: approval
          requires:
            - build-and-test-service

在本例中,正确的属性引用应该是上一步的name,即Build and test campaign,因此我只是将该名称更改为build-and-test-service

我发现CircleCI文档对此并不十分清楚,但可能是因为它们围绕手动批准的示例指出,requires属性应该指向作业的根键,例如build-and-test-service

我想我在阅读错误时也应该更加警惕,因为它也提到了name

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61645082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档