CircleCI 2.0工作流 - 部署无法正常工作

时间:2018-06-11 02:18:32

标签: continuous-integration circleci circleci-2.0 circleci-workflows

我正在尝试在CircleCI中为我的React项目设置工作流程。 我想要实现的是获得一个工作来构建这些东西,另一个是将主分支部署到Firebase托管。

这是我在几次配置后到目前为止所拥有的:

witmy: &witmy
  docker:
    - image: circleci/node:7.10

version: 2
jobs:
  build:
    <<: *witmy
    steps:
      - checkout
      - restore_cache:
          keys:
          - v1-dependencies-{{ checksum "package.json" }}
          - v1-dependencies-

      - run: yarn install

      - save_cache:
          paths:
            - node_modules
          key: v1-dependencies-{{ checksum "package.json" }}

      - run:
          name: Build app in production mode
          command: |
            yarn build

      - persist_to_workspace:
          root: .
  deploy:
    <<: *witmy
    steps:
      - attach_workspace:
          at: .

      - run:
          name: Deploy Master to Firebase
          command: ./node_modules/.bin/firebase deploy --token=MY_TOKEN

workflows:
  version: 2
  build-and-deploy:
    jobs:
      - build
      - deploy:
          requires:
            - build
          filters:
            branches:
              only: master

构建作业总是成功,但使用部署时出现此错误:

#!/bin/bash -eo pipefail 
./node_modules/.bin/firebase deploy --token=MYTOKEN 

/bin/bash: ./node_modules/.bin/firebase: No such file or directory 
Exited with code 1

所以,我的理解是部署作业没有在构建的同一个地方运行,对吗?

我不确定如何解决这个问题。我已经阅读了他们提供的一些例子并尝试了几件事,但它并没有奏效。我也阅读了文档,但我认为如何配置所有内容并不是很清楚...也许我太笨了。

我希望你们能帮助我解决这个问题。

干杯!!

已编辑使用工作区添加当前配置

我已经添加了工作区...但是仍然无法让它工作,经过一系列的尝试我得到了这个错误:

Persisting to Workspace 
The specified paths did not match any files in /home/circleci/project

当我想测试它时,提交并推送到CircleCI的每一次配置文件更改真的很痛苦......:/

谢谢!

1 个答案:

答案 0 :(得分:0)

免责声明:我是CircleCI开发者倡导者

每个作业都是自己运行的Docker容器(或VM)。所以这里的问题是你的部署工作中node_modules中没有任何内容。有两种方法可以解决这个问题:

  1. 动态安装Firebase以及您可能需要的任何其他内容,就像您在构建作业中一样。
  2. 利用CircleCI Workspaces将您的node_modules目录从构建作业转移到部署作业。
  3. 在我看来,选项2可能是你最好的选择,因为它更有效率。