Не могу найти package.json в каталоге в сборке CircleCI - PullRequest
1 голос
/ 20 апреля 2019

У меня есть репо, содержащее два подпроекта .Просто для полноты проекта внешнего интерфейса и проекта облачной функции Firebase (оба используют отдельный package.jsons).Теперь для этого проекта я хочу начать две работы одновременно.Но я не могу выполнить настройку с CircleCI.У меня нет никакой конфигурации кеша.

структура проекта

-creepy-stories
  -.circleci
  -cloud-functions
    -functions
     package.json
  -frontend
   package.json

config.yml

version: 2.1
jobs:
  cloud-functions:
    docker:
      - image: circleci/node:10.8.0

    working_directory: ~/creepy-stories/cloud-functions/functions

    steps:
      - checkout
      - run: npm install
      - run: npm run lint
      - run: npm run build

  frontend:
    docker:
      - image: circleci/node:10.8.0

    working_directory: ~/creepy-stories/frontend
    steps:
      - checkout
      - run: npm install
      - run: npm run lint
      - run: npm run build
      - run: npm run test:coverage

workflows:
  version: 2
  cloud-functions_and_frontend:
    jobs:
      - cloud-functions
      - frontend

Так что теперь моя, я думаю, моя проблема заключается в том, что среда не можетнайдите мой файл package.json.Выводимая ошибка выглядит следующим образом:

npm run lint

#!/bin/bash -eo pipefail
npm run lint
npm ERR! path /home/circleci/creepy-stories/frontend/package.json
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall open
npm ERR! enoent ENOENT: no such file or directory, open '/home/circleci/creepy-stories/frontend/package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent 

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/circleci/.npm/_logs/2019-04-20T13_08_45_252Z-debug.log
Exited with code 254

Я не знаю, правильно ли дважды устанавливать рабочий каталог в моей конфигурации, но он находится наНаименьший набор в два дифференциала.jobs.

Обновление

Мне удалось заставить его работать, если я извлекаю корень проекта, а затем cd в нужную папку и выполняю сценарии.Но на самом деле это не СУХОЙ (не повторяйтесь), может быть, у некоторых из вас есть лучшее решение:

version: 2.1

jobs:
  cloud-functions:
    docker:
      - image: circleci/node:10.8.0

    working_directory: ~/creepy-stories

    steps:
      - checkout
      - run: cd cloud-functions/functions && npm install
      - run: cd cloud-functions/functions && npm run lint
      - run: cd cloud-functions/functions && npm run build

  web:
    docker:
      - image: circleci/node:10.8.0

    working_directory: ~/creepy-stories
    steps:
      - checkout
      - run: cd web && npm install
      - run: cd web && npm run lint
      - run: cd web && npm run build
      - run: cd web && npm run test:coverage

workflows:
  version: 2
  concurrently:
    jobs:
      - cloud-functions
      - web

1 Ответ

0 голосов
/ 29 апреля 2019

Я думаю, что у вас есть добавленный каталог в пути.

Вы должны добавить дополнительный запуск в задачу внешнего интерфейса CircleCi, который выполняет pwd, а затем ls -la.

Вы, вероятно, обнаружите, что оформление заказа оказалось в каталоге с тем же именем, что и у вашего репо.

Изменить, чтобы ответить на следующий вопрос:

Если я правильно помнюкоманда checkout всегда помещает ее в корень сервера, чтобы вы могли обновить рабочий каталог, чтобы приспособиться к этому.Вот так

    working_directory: ~/creepy-stories/web
    steps:
      - checkout
      - run: npm install
      - run: npm run lint
      - run: npm run build
      - run: npm run test:coverage
...