我在我的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使用服务关键字来定义什么docker容器 应与您的基本图像链接。
首先,您需要设置Docker executor
然后,您将能够将EventStore用作服务。这是Postgres的示例。更多信息在这里。
示例:
test_server:
tags:
- docker
services:
- eventstore:latest
script:
- npm install && npm run test
编辑:
访问服务:
该服务主机名的默认别名是从其映像名称
创建的
或使用别名:
services:
- name: mysql:latest
alias: mysql-1