在 Gitlab 上设置 CI/CD 管道 (Windows, yml)
Setting up CI/CD pipeline on Gitlab (Windows, yml)
我正在尝试为我在 gitlab 上的电子应用程序设置 CI/CD 管道。 gitlab-runner 是在 windows 机器上安装的,目前在线。在代码库中,yml 文件放在根文件夹中。管道启动,runner 和 gitlab 之间有一个连接。
我在寻找 npm 时遇到了问题。尽管 nodejs 和 npm 安装在 C:\Program Files\nodejs 中,但我仍然在 shell executor.
上收到错误
.gitlab-ci.yml
stages:
- build
build:
stage: build
tags:
- BuildServerTag
before_script:
- SET PATH=$c/PROGRA~1/nodejs/
script:
- echo "Hello World"
- npm -v
错误:
npm:术语 'npm' 未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。
我试过以下方法:
- 将 C:\Program Files\nodejs 设置为运行器上的系统环境变量。
- 在 yml 文件中使用 SET Path
- 在 yml 文件中使用 npm 的完整路径
由于您使用的是 powershell,因此您可以像这样更改 PATH:
script:
# check that the files are actually there
- dir "C:\Program Files\nodejs"
# append nodejs onto PATH
- '$env:Path += ";C:\Program Files\nodejs"'
还要确保您的 NodeJS 二进制文件 实际上 在 C:\Program Files\nodejs
中(IIRC 如果您使用官方安装程序,这是默认设置)而不是像 [=14 这样的子目录=]如果你使用第三方工具安装nodejs可能会出现这种情况。
在你的工作中 dir C:\Program Files\nodejs
的输出应该像这样:
Directory: C:\Program Files\nodejs
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 6/5/2021 9:10 PM node_modules
-a---- 5/11/2021 5:44 PM 3032 install_tools.bat
-a---- 5/11/2021 6:03 PM 56742536 node.exe
-a---- 4/27/2020 8:13 PM 702 nodevars.bat
-a---- 4/27/2020 8:13 PM 8997 node_etw_provider.man
-a---- 5/11/2021 5:44 PM 930 npm
-a---- 5/11/2021 5:44 PM 483 npm.cmd
-a---- 5/11/2021 5:44 PM 922 npx
-a---- 5/11/2021 5:44 PM 539 npx.cmd
您还需要检查您的 PathExt
变量包括 .exe
(执行 node
)和 .cmd
执行(执行 npm
).默认情况下就是这种情况,因此如果您没有修改 PathExt
.
,则无需执行任何操作
或者,您可以使用 npm
的完整路径,包括 .cmd
扩展名:
script:
- 'C:\Progra~1\nodejs\npm.cmd -v'
我正在尝试为我在 gitlab 上的电子应用程序设置 CI/CD 管道。 gitlab-runner 是在 windows 机器上安装的,目前在线。在代码库中,yml 文件放在根文件夹中。管道启动,runner 和 gitlab 之间有一个连接。 我在寻找 npm 时遇到了问题。尽管 nodejs 和 npm 安装在 C:\Program Files\nodejs 中,但我仍然在 shell executor.
上收到错误.gitlab-ci.yml
stages:
- build
build:
stage: build
tags:
- BuildServerTag
before_script:
- SET PATH=$c/PROGRA~1/nodejs/
script:
- echo "Hello World"
- npm -v
错误: npm:术语 'npm' 未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。
我试过以下方法:
- 将 C:\Program Files\nodejs 设置为运行器上的系统环境变量。
- 在 yml 文件中使用 SET Path
- 在 yml 文件中使用 npm 的完整路径
由于您使用的是 powershell,因此您可以像这样更改 PATH:
script:
# check that the files are actually there
- dir "C:\Program Files\nodejs"
# append nodejs onto PATH
- '$env:Path += ";C:\Program Files\nodejs"'
还要确保您的 NodeJS 二进制文件 实际上 在 C:\Program Files\nodejs
中(IIRC 如果您使用官方安装程序,这是默认设置)而不是像 [=14 这样的子目录=]如果你使用第三方工具安装nodejs可能会出现这种情况。
在你的工作中 dir C:\Program Files\nodejs
的输出应该像这样:
Directory: C:\Program Files\nodejs
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 6/5/2021 9:10 PM node_modules
-a---- 5/11/2021 5:44 PM 3032 install_tools.bat
-a---- 5/11/2021 6:03 PM 56742536 node.exe
-a---- 4/27/2020 8:13 PM 702 nodevars.bat
-a---- 4/27/2020 8:13 PM 8997 node_etw_provider.man
-a---- 5/11/2021 5:44 PM 930 npm
-a---- 5/11/2021 5:44 PM 483 npm.cmd
-a---- 5/11/2021 5:44 PM 922 npx
-a---- 5/11/2021 5:44 PM 539 npx.cmd
您还需要检查您的 PathExt
变量包括 .exe
(执行 node
)和 .cmd
执行(执行 npm
).默认情况下就是这种情况,因此如果您没有修改 PathExt
.
或者,您可以使用 npm
的完整路径,包括 .cmd
扩展名:
script:
- 'C:\Progra~1\nodejs\npm.cmd -v'