【问题标题】:How to run tests automatically in GitLab CI using gitlab-ci-multi-runner如何使用 gitlab-ci-multi-runner 在 GitLab CI 中自动运行测试
【发布时间】:2015-04-28 10:19:15
【问题描述】:

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

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

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

cd app
npm install
karma start karma.conf.js

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

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

【问题讨论】:

  • 你有没有让这个与.gitlab-ci.yml一起工作?
  • 是的!现在完美运行:)!我将在下面发布我的解决方案。

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


【解决方案1】:

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

before_script:
  - npm install

test:
  script: npm test

【讨论】:

  • windows 用户的小提示...像“npm install”这样的命令不起作用,你必须使用“call npm install”。
  • 这与 Windows 上的 npm 实际上是一个 npm.cmd 有关,所以当 Gitlab CI 运行它时(使用类似“cmd /c npm.cmd ...”之类的东西)当 npm.cmd完成它实际上存在cmd,因此结束整个工作。不太确定,但类似这样。
【解决方案2】:

我想在下面发布我的最终解决方案,以帮助其他人解决此问题。我的 .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”部分。

请告诉我,如果它仍然不适合你。也许我还有更多的想法……我为此付出了很多努力,让它发挥作用。

【讨论】:

  • 很有用,谢谢分享!对我来说,说 karma start --single-run 让它只运行一次很有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
  • 2016-02-02
  • 1970-01-01
  • 2021-09-28
  • 2015-10-24
  • 1970-01-01
  • 2022-01-12
相关资源
最近更新 更多