Unit testing 如何在Gitlab CI测试中启动eventstore

Unit testing 如何在Gitlab CI测试中启动eventstore,unit-testing,gitlab-ci,Unit Testing,Gitlab Ci,我的gitlab repo中有以下代码 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 scr

我的gitlab repo中有以下代码

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运行测试时,它工作得很好


我的问题是如何在Gitlab CI中运行此测试?

如果您尝试运行连接到eventstore docker的测试,则可以使用Gitlab服务:

GitLab CI使用services关键字定义docker容器 应该与基础图像链接

首先,您需要设置

然后您将能够使用eventstore作为服务。这是一个例子。更多信息

例如:

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

对服务:

服务主机名的默认别名是根据其映像名创建的

或使用:


我一直在使用此方法,但无法访问eventstore。然后我发现我无法使用localhost访问eventstore服务,因为该服务运行于172.17.0.2。IP可以从eventstore在“eventstore\u eventstore\u PORT\u 1113\u TCP\u ADDR”处创建的环境变量获取@simon您可以在此处阅读有关如何访问服务的信息:。我将编辑回复
services:
- name: mysql:latest
  alias: mysql-1