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
我的 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