所以我试图从我的.gitlab-ci.yaml执行一个powershell脚本,我想让一个基于环境变量的脚本变量作为我的powershell脚本的起点。
我有一个.gitlab-ci.yaml,其中包括以下内容:
job1:
stage: ps
script:
- powershell -File .\psfile.ps1 -var1 lalalal -var2 Solution -var3 '%CI_PROJECT_DIR%'
当使用write-output(或类似)从powershell发布CI_PROJECT_DIR ev时,我得到一个空字符串。
当我做共同的回声'%CI_PROJECT_DIR%'我正在获得正确的路径
答案 0 :(得分:0)
使用$env:CI_PROJECT_DIR
(并在示例中删除它周围的单引号,因为单引号是文字字符串常量)。这是在PowerShell中处理环境变量的方式,语法与cmd.exe不同。另请参阅GitLab文档here。
如果您希望在范围界定方面更详细,那么您也可以调用.net方法[System.Environment]::GetEnvironmentVariable(...)
答案 1 :(得分:0)
在不知道GitLab .gitlab-ci.yaml
文件的细节的情况下,我的猜测是默认情况它是使用的主机平台的默认shell 执行命令。
鉴于 Windows cmd.exe
是默认shell,您必须使用其语法,这意味着:
您需要使用%...%
来附上环境变量引用(您已经这样做了)
为了引用值,您必须使用"..."
(双引号);相比之下,'...'
(单引号)在cmd.exe
中具有 no 语法功能,并作为参数的一部分传递。
因此,请尝试使用以下行:
- powershell -File .\psfile.ps1 -var1 lalalal -var2 Solution -var3 "%CI_PROJECT_DIR%"