Как использовать lerna.js с travis ci?

Используя lerna.js, я изо всех сил пытаюсь найти соответствующую документацию по настройке монорепо с Трэвисом. Я нашел только этот репо и этот пост в блоге, но они оба минимальны и неоптимальны.

Как я мог выполнить все следующее?

  1. Запустите тесты и линтеры для всех пакетов
  2. кэш node_modules в каждой упаковке
  3. Желательно объявить другой .travis.yml файл для каждой упаковки

Мне удалось сделать пункт 1, выполнив:

env:
  matrix:
    - PACKAGE=contracts

matrix:
  include:
  - stage: tests
    name: "unit tests"
    script:
      - cd packages/contracts
      - npm install && npm run test
  - stage: tests
    name: "unit tests with coverage"
    script:
      - cd packages/contracts
      - npm install && npm run test
    env: SOLIDITY_COVERAGE=true
  - stage: tests
    name: "static tests"
    script:
      - cd packages/contracts
      - npm install && npm run lint

Тем не менее, сборки очень медленные, так как node_modules не кэшируется Точно так же это довольно многословный процесс объявления всех тестов сверху вниз, я бы предпочел снизу вверх через отдельных .travis.yml файлы.

0 ответов

Довольно хакерский способ, но вот как Трюфель решил эту проблему:

install:
  - npm install -g lerna
  - npm install -g yarn
  - npm run bootstrap

script:
  - npm run ci

И вот, вот использование этого скрипта CI. По сути, они отложили сложность работы с несколькими подпакетами до скрипта bash, что приятно, но немного неискренне для Трэвиса.

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

Другие вопросы по тегам