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

时间:2015-04-28 10:19:16

标签: angularjs unit-testing karma-runner gitlab-ci

我开始使用gitlab-ci-multi-runner for Windows(64位)使用GitLab CI。到目前为止一切正常,有与我的存储库的连接,我的配置作业在每次推送时开始。

我现在要做的是让一个运行npm install的作业下载所有依赖项,一个作业执行我用karma / jasmine编写的所有测试,运行karma start karma.conf.js或使用grunt并运行{ {1}}。

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

grunt test

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

这是什么问题?我怎样才能解决这个问题?有没有办法不总是下载每个测试执行的所有依赖项?

2 个答案:

答案 0 :(得分:11)

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

before_script:
  - npm install

test:
  script: npm test

答案 1 :(得分:4)

我想在下面发布我的最终解决方案,以帮助其他人解决此问题。我的 .gitlab-ci.yaml 文件和我的 karma.conf.js 位于app-root目录中。对于业力我使用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服务器来测试/构建我的应用程序。你必须删除"运行"让它适用于Linux。

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

请告诉我,它是否仍然不适合你。也许我有更多的想法...我在这方面做了很多工作,以使其发挥作用。