windows 上的 Gitlab CI shell 仅运行 before_script

Gitlab CI shell on windows only runs before_script

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

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

我已经在 windows 主机上安装了 gitlab multi-运行ner。这是我的 .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

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

解决方案

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

before_script:
  - 'call npm install'

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

说明

npm 是一个 shell 脚本。所以你必须添加 call 来在子 shell 中执行这个脚本。否则,npm 脚本中的 "exit" 命令会关闭由 gitlab 启动的 shell。

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