Как использовать lerna.js с travis ci?
Используя lerna.js, я изо всех сил пытаюсь найти соответствующую документацию по настройке монорепо с Трэвисом. Я нашел только этот репо и этот пост в блоге, но они оба минимальны и неоптимальны.
Как я мог выполнить все следующее?
- Запустите тесты и линтеры для всех пакетов
- кэш
node_modules
в каждой упаковке - Желательно объявить другой
.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, поскольку их синтаксис более интуитивно понятен и прост в использовании.