2017-04-15 87 views
0

我需要在我的gitlab CI管道中运行测试。这是我的YAML文档的样子:Gitlab CI:如何使用docker和shell runner在管道中运行测试

before_script: 
    - docker info 

build: 
    script: 
    - docker build -t $CI_REGISTRY_IMAGE:$VERSION . 
    - docker push $CI_REGISTRY_IMAGE:$VERSION 

我正在使用shell runner。现在我要检查其是否eslint,这看起来像:

eslint . 

第二步我想用摩卡

meteor test --driver-package practicalmeteor:mocha 

做一些单元测试我怎样才能做到这一点在管道使用已经建立的容器/图像?我应该如何实现这个YAML文件?

回答

0

如果我理解正确,您想在新建的容器中运行eslint。您可以通过添加做到以下到您.gitlab-ci.yml

lint: 
    script: 
    # This step is probably optional 
    - docker pull $CI_REGISTRY_IMAGE:$VERSION 
    # This will run eslint inside the container 
    - docker run -it $CI_REGISTRY_IMAGE:$VERSION eslint . 

如果有任何掉毛错误,退出代码应为非零值,这将使作业失败(这可能是你想要的)。

+0

这给我错误'输入设备不是TTY'。那是什么意思?如果我删除了'-t',我得到错误'启动容器进程导致“exec:\”eslint \“:在$ PATH中找不到可执行文件”' – user3142695

+0

容器中安装了eslint?您可能必须指定eslint的完整路径或将eslint添加到$ PATH(例如,在构建容器之前在Dockerfile中) – Jawad

+0

eslint是devDependency。你是对的:在生产性构建中没有devDependencies。那么,我应该如何为生产性构建做我的测试?还是必须为所有测试构建第二个容器? – user3142695