Как использовать 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.


person Paul Razvan Berg    schedule 18.11.2018    source источник


Ответы (1)


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

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

script:
  - npm run ci

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

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

person Paul Razvan Berg    schedule 23.01.2019