如何将Gitlab{CI_COMMIT_SHORT_SHA}变量传递给powershell脚本
我在Gitlab-CI.yaml文件中创建了一个脚本部分。格式如下所示如何将Gitlab{CI_COMMIT_SHORT_SHA}变量传递给powershell脚本,powershell,gitlab,Powershell,Gitlab,我在Gitlab-CI.yaml文件中创建了一个脚本部分。格式如下所示 script: - powershell -File script.ps1 folderpath="$env:${CI_PROJECT_DIR}" CommitID="$env:${CI_COMMIT_SHORT_SHA}" $Files = Get-ChildItem $folderpath foreach($eachFile in $Files) { if($e
script:
- powershell -File script.ps1 folderpath="$env:${CI_PROJECT_DIR}" CommitID="$env:${CI_COMMIT_SHORT_SHA}"
$Files = Get-ChildItem $folderpath
foreach($eachFile in $Files)
{
if($eachFile.Name.Contains("myapp"))
{
Rename-Item -Path $eachFile.FullName -NewName "myapp-$CommitID.zip" -Force
}
}
这些变量正在调用我的PowerShell脚本,如下所示。下面给出了脚本
script:
- powershell -File script.ps1 folderpath="$env:${CI_PROJECT_DIR}" CommitID="$env:${CI_COMMIT_SHORT_SHA}"
$Files = Get-ChildItem $folderpath
foreach($eachFile in $Files)
{
if($eachFile.Name.Contains("myapp"))
{
Rename-Item -Path $eachFile.FullName -NewName "myapp-$CommitID.zip" -Force
}
}
此脚本用于更改zip文件的名称。通过gitlab执行此操作后,我得到了如下错误
Variable reference is not valid. ':' was not followed by a valid variable name
character. Consider using ${} to delimit the name.
将GitLab env变量传递给PowerShell脚本的格式是否正确?你能就此提出一些建议吗?- 假设
是GitLab的${CI_PROJECT_DIR}
(环境)变量的值,您可以像在命令行中一样使用它-不需要CI_PROJECT_DIR
间接寻址,它(a)需要环境变量的名称,并且(b)无论如何,使用PowerShell的$env:
CLI参数都无法工作-File
- 假设目标脚本使用常规PowerShell参数声明(例如,
,大小写不重要),则必须使用param($FolderPath,$CommitId)
传递值
或-
语法-:
script:
- powershell -File script.ps1 -FolderPath "${CI_PROJECT_DIR}" -CommitID="${CI_COMMIT_SHORT_SHA}"
另一种方法是根本不使用参数,而是使用PowerShell的
$env:
符号直接从脚本内部访问环境变量:
$Files = Get-ChildItem $env:CI_PROJECT_DIR
foreach($eachFile in $Files)
{
if($eachFile.Name.Contains("myapp"))
{
Rename-Item $eachFile.FullName -NewName "myapp-$env:CI_COMMIT_SHORT_SHA.zip" -Force
}
}
很高兴听到这个消息,@NavajyothMS;我的荣幸。