Как запустить хранилище событий в тесте Gitlab-CI - PullRequest
0 голосов
/ 18 февраля 2019

В моем репозитории gitlab есть следующий код

package.json

{ 
  ...
  "scripts": {
    "test": "mocha --require ts-node/register --watch-extensions ts,tsx \"src/**/*.{spec,test}.{ts,tsx}\""
  }
  ...
}

.gitlab-ci.yml

stages:
  - test
test:
  image: node:8
  stage: test
  script:
    - npm install
    - npm run test

test.ts

import { exec } from 'child_process';
import { promisify } from 'util';

const Exec = promisify(exec);
describe(test, async () => {
  before(async () => {
    // next line doesn't work in GitLab-CI
    await Exec(`docker run -d --rm -p 1113:1113 -p 2113:2113 eventstore/eventstore`);
    // an so on
  })
});

он хорошо работает, когда я запускаю "npm run test" на моей локальной машине.

Мой вопрос: как мне запустить этот тест в Gitlab-CI?

1 Ответ

0 голосов
/ 20 февраля 2019

Если вы пытаетесь запустить тесты, которые подключаются к докеру событийного хранилища, вы можете использовать службы gitlab:

GitLab CI использует ключевое слово services для определения того, какие контейнеры Docker должны быть связаны с вашим базовым образом.

сначала вам нужно настроить docker executor

, затем вы сможете использовать хранилище событий в качестве службы.Вот пример с postgres .дополнительная информация здесь .

Пример:

test_server:
    tags:
      - docker
    services:
      - eventstore:latest
    script:
      - npm install && npm run test

Редактировать:

К Доступ Услуга:

Псевдонимы по умолчанию для имени хоста службы создаются из имени его образа

Или используйте псевдоним :

services:
- name: mysql:latest
  alias: mysql-1
...