简体   繁体   中英

How do I pass the Gitlab {CI_COMMIT_SHORT_SHA} variable to powershell script

I have created a script section in Gitlab-CI.yaml file. The format is given below.

script:
   - powershell -File script.ps1 folderpath="$env:${CI_PROJECT_DIR}" CommitID="$env:${CI_COMMIT_SHORT_SHA}"  

and these variables are calling in my PowerShell script as follows. The script is given below.

$Files = Get-ChildItem $folderpath
foreach($eachFile in $Files)
{
    if($eachFile.Name.Contains("myapp"))
    {
        Rename-Item -Path $eachFile.FullName -NewName "myapp-$CommitID.zip" -Force
    }
}

This script is using for changing the name of a zip file. After execting this through gitlab I am getting error like this.

 Variable reference is not valid. ':' was not followed by a valid variable name 
 character. Consider using ${} to delimit the name.

Is it the right format to pass the GitLab env variable to PowerShell script? Can you please suggest some inputs on this?

  • Assuming that ${CI_PROJECT_DIR} is the value of GitLab's CI_PROJECT_DIR (environment) variable, you can use it as-is in your command line - no need for the $env: indirection, which (a) requires the name of an environment variable and (b) wouldn't work anyway with PowerShell's -File CLI parameter.

  • Assuming your target script uses regular PowerShell parameter declarations (eg, param($FolderPath, $CommitId) , case doesn't matter), you must pass the values using
    -<param> <value> or -<param>:<value> syntax.

To put it all together:

script:
   - powershell -File script.ps1 -FolderPath "${CI_PROJECT_DIR}" -CommitID="${CI_COMMIT_SHORT_SHA}"  

The alternative is not to use parameters at all, and instead directly access the environment variables from inside your script , using PowerShell's $env:<var_name> notation:

$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
  }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM