Gitlab-CI Jest в монорепо с взаимозависимостями - PullRequest
0 голосов
/ 23 апреля 2020

Я использую шутку для запуска тестов в моем монорепо. Эти тесты имеют взаимозависимости с другими подпакетами monorepo.

Все отлично работает локально. Но конвейер gitlab-ci дает сбой, потому что он не может разрешить взаимозависимости ...

Простая структура проекта:

packages
-core
--src
---core.js
--package.json
-advanced
--src
---advanced.js
---advanced.test.js
--package.json
.gitlab-ci.yml
jest.config.js
package.json

Простая jest.config. js:

module.exports = {
  projects: ['packages/*'],
  rootDir: __dirname,
  roots: ['<rootDir>/packages'],
  testMatch: ['**/*.test.js'],
}

Простое ядро ​​/ пакет. json:

{
  "name": "@myProject/core",
  "version": "1.0.0"
}

Простое расширение / пакет. json:

{
  "name": "@myProject/advanced",
  "version": "1.0.0",
  "dependencies": {
    "@myProject/core": "^1.0.0"
  }
}

Простое сообщение advanced.test. js:

import thisthat from 'randomBibX'
import others from 'randomBibY'
import core from '@myproject/core'

//doTests

Пакет упрощенный. json:

{
  "scripts": {
    "test": "jest"
  }
  "devDependencies": {
    "randomBibX": "^1.0.0",
    "randomBibY": "^1.0.0"
  }
}

Пакет упрощенный .gitlab-ci.yml:

image: node:10
stages:
  - setup
  - test
setup:
  stage: setup
  script:
    - yarn config set cache-folder /cache/.yarn
    - yarn install --non-interactive --frozen-lockfile
  artifacts:
    expire_in: 1hour
    paths:
      - node_modules
      - "packages/*/node_modules"
jest:
  stage: test
  dependencies:
    - setup
  script:
    - "[ ! -d node_modules/ ] && yarn install --non-interactive --frozen-lockfile"
    - yarn test

Ошибка:

FAIL packages/advanced/src/advanced.test.js
   ● Test suite failed to run
     Cannot find module '@myProject/core' from 'advanced.test.js'

1 Ответ

0 голосов
/ 23 апреля 2020

Решение состояло в том, чтобы построить проект перед тестированием

Улучшено .gitlab-ci.yml:

image: node:10
stages:
  - setup
  - test
installAndBuild:
  stage: setup
  script:
    - yarn config set cache-folder /cache/.yarn
    - yarn install --non-interactive --frozen-lockfile
    - yarn lerna run build --stream
  artifacts:
    expire_in: 1hour
    paths:
      - node_modules
      - "packages/*/node_modules"
jest:
  stage: test
  dependencies:
    - installAndBuild
  script:
    - "[ ! -d node_modules/ ] && yarn install --non-interactive --frozen-lockfile"
    - yarn test
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...