Unit testing 如何在Gitlab CI测试中启动eventstore
我的gitlab repo中有以下代码 package.jsonUnit 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
{
...
"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