1

我正在尝试在 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对配置文件的每一次更改都是一件非常痛苦的事情......:/

谢谢!

4

1 回答 1

0

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

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

  1. 就像在构建工作中一样,即时安装 Firebase 和您可能需要的任何其他东西。
  2. 利用CircleCI Workspaces将您的node_modules目录从构建作业转移到部署作业。

在我看来,选项 2 可能是您最好的选择,因为它更有效。

于 2018-06-11T17:39:26.933 回答