我开始使用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
添加到第二个工作(对我来说没有多大意义),业力任务将再次被忽略。
这是什么问题?我怎样才能解决这个问题?有没有办法不总是下载每个测试执行的所有依赖项?
答案 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这样的部分在上面写道。
请告诉我,它是否仍然不适合你。也许我有更多的想法...我在这方面做了很多工作,以使其发挥作用。