powershell不会识别gitlab CI环境变量

时间:2018-03-10 21:08:24

标签: powershell gitlab-ci

所以我试图从我的.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%'我正在获得正确的路径

2 个答案:

答案 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 语法功能,并作为参数的一部分传递

    < / LI>

因此,请尝试使用以下行:

    - powershell -File .\psfile.ps1 -var1 lalalal -var2 Solution -var3 "%CI_PROJECT_DIR%"