Windows上的Gitlab CI shell只运行before_script

时间:2016-08-18 19:49:20

标签: gitlab gitlab-ci

我的CI跑步者只会跑一行。我正试图在npm install之前运行eslint。但是,如果我将npm install添加到before_script部分,则只会运行npm install,并且构建报告成功,而不会实际运行eslint。 Windows shell runner上不支持多个命令吗?

我也尝试将npm install移到lint作业中,结果相同。

我在windows主机上安装了gitlab多跑步者。这是我的.gitlab-ci.yml

before_script:
  - npm install

stages:
  - test

cache:
  key: "$CI_BUILD_REF_NAME"
  paths:
    - node_modules/

lint:
  stage: test
  tags:
    - javascript
  script:
    - eslint **/*.js

2 个答案:

答案 0 :(得分:2)

<强>解决方案

你需要在.gitlab-ci.yml文件中的任何npm命令之前添加“call”:

before_script:
  - 'call npm install'

使用Windows shell runner时,所有npm命令都需要它。

<强>解释

npm是一个shell脚本。因此,您必须添加调用以在子shell中执行此脚本。否则,npm脚本中的“exit”命令将关闭由gitlab启动的shell。

请参阅https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/1025

答案 1 :(得分:0)

这是Windows上使用cmd.exe的默认shell的问题。将它改为Powershell似乎可以解决问题。