如何使用GitLab CI multi-runner在GitLab CI中自动运行测试



我开始使用GitLab CI multi-runner for Windows(64位)处理GitLab CI。到目前为止,一切都很好,有到我的存储库的连接,每次推送都会开始我配置的工作。

我现在想做的是有一个作业运行npm install来下载所有依赖项,还有一个作业通过运行karma start karma.conf.js或使用grunt并运行grunt test来执行我用karma/jasmine编写的所有测试。

所以我尝试的第一份工作是:

cd app
npm install
karma start karma.conf.js

执行前两个命令,但完全忽略最后一个命令。所以我试着分开工作。第一个to命令获得自己的作业(选项卡"并行运行"),最后一个命令在选项卡"成功运行"中移动到自己的作业。现在,所有依赖项都安装好了,第二个作业开始了。到目前为止还不错,但第二项工作从删除所有以前安装的依赖项开始,然后尝试运行karma start karma.conf.js。这显然会导致所有测试失败,因为没有下载npm依赖项"angular mocks"。如果我将npm install添加到第二个作业中(这对我来说没有那么大意义),因果报应任务将再次被忽略。

这里有什么问题?我该怎么解决这个问题?有没有一种方法可以不总是下载每次测试执行的所有依赖项?

自从这个问题发布以来,Gitlab CI已经切换到使用.gitlab-ci.yml进行配置。我认为推荐的安装依赖项的方法是使用before_script命令,如

before_script:
- npm install
test:
script: npm test

我想在下面发布我的最终解决方案,以帮助其他人解决这个问题。我的.gitlab-ci.yaml文件和我的karma.conf.js位于应用程序根目录中。对于因果报应,我使用PhantomJS,它适用于Windows和我的linux服务器。

Windows解决方案:

image: node:4.2.2
cache:
paths:
- node_modules/
stages:
- test
test_app:
stage: test
script:
- run npm install  
- run karma start karma.conf.js

目前,我正在使用linux服务器来测试/构建我的应用程序。您必须删除"run"才能使其在linux中工作。

如果您有多个作业,您可以将依赖项安装命令移到"before_script"部分,就像Tamlyn上面写的那样。

如果它对你仍然不起作用,请告诉我。也许我还有一些想法。。。为了让它发挥作用,我做了很多工作。

最新更新