Node.js Gitlab CI:如何使用docker和shell runner在管道中运行测试

Node.js Gitlab CI:如何使用docker和shell runner在管道中运行测试,node.js,meteor,docker,continuous-integration,gitlab,Node.js,Meteor,Docker,Continuous Integration,Gitlab,我需要在我的gitlab CI管道中运行测试。以下是我的YAML文档的外观: before_script: - docker info build: script: - docker build -t $CI_REGISTRY_IMAGE:$VERSION . - docker push $CI_REGISTRY_IMAGE:$VERSION 我用的是跑壳机。现在,我想检查是否存在正确的eslint,它看起来像: eslint . 在第二步中,我想使用mocha进行

我需要在我的gitlab CI管道中运行测试。以下是我的YAML文档的外观:

before_script:
  - docker info

build:
  script:
    - docker build -t $CI_REGISTRY_IMAGE:$VERSION .
    - docker push $CI_REGISTRY_IMAGE:$VERSION
我用的是跑壳机。现在,我想检查是否存在正确的eslint,它看起来像:

eslint .
在第二步中,我想使用mocha进行一些单元测试

meteor test --driver-package practicalmeteor:mocha

如何使用已构建的容器/映像在管道中执行此操作?如何将其实现到YAML文件中?

如果我理解正确,您希望在新构建的容器中运行
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 .

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

这会产生错误
输入设备不是TTY
。这是什么意思?如果删除
-t
,则会出现启动容器进程导致的错误
“exec:\“eslint\”:在$PATH中找不到可执行文件“
容器中如何安装eslint?您可能必须指定eslint的完整路径,或者将eslint添加到$path(例如,在构建容器之前在Dockerfile中)。eslint是一个依赖项。你是对的:在生产性构建中没有依赖性。那么,我应该如何为高效构建进行测试呢?或者我必须为所有测试构建第二个容器吗?是否有原因让您在容器中运行测试,而不是直接从
.gitlab ci.yml
文件运行测试?嗯,没有。正如您所看到的,这对我来说是非常新的,所以我不是很有经验。这个应用程序是一个meteor应用程序,所以我想我必须先做一个构建。在这个构建中,我尝试进行测试,如果测试成功,我将部署它。。。