8

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

我现在要做的是拥有一项运行npm install以下载所有依赖项的作业和一项通过运行karma start karma.conf.js或使用 grunt 和 running来执行我用 karma/jasmine 编写的所有测试的作业grunt test

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

cd app
npm install
karma start karma.conf.js

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

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

4

2 回答 2

11

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

before_script:
  - npm install

test:
  script: npm test
于 2015-11-04T15:43:39.813 回答
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。

如果你有不止一项工作,你可以像上面 Tamlyn 写的那样将依赖安装命令移动到“before_script”部分。

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

于 2016-05-03T12:36:58.660 回答