16

In my build pipeline I am doing the following:

  1. Restore from Git
  2. Powershell Script - to retrieve the Build number and write that to a json file BEFORE....
  3. Build solution
  4. Archive Files
  5. Publish Artifact.

In step 2 the Powershell script is pretty simple:

DEFINED ENV VARIABLES:

Name: buildNumber  Value: $(Build.BuildNumber)
Name: rootPath Value:$(Build.ArtifactStagingDirectory)

CODE:

$theFile = Get-ChildItem -Path $rootPath -Recurse -Filter "host.json" | Select-Object -First 1
$propertyName = "BuildNumber"

if($theFile)
{
    $json = Get-Content "$theFile" | Out-String | ConvertFrom-Json
    if($json.$propertyName)
    { 
        $json.$propertyName = $buildNumber
    }else{    
        Add-Member -InputObject $json -MemberType NoteProperty -Name $propertyName -Value $buildNumber
    }
    $json | ConvertTo-Json -depth 100 | Out-File "$theFile"

}
else
{
    Write-Warning "Found no files."
}

For some reason my $buildNumber is coming back null. The $rootPath is working. Am I not able to access the $(Build.BuildNumber) outside the build step? The build number format is defined in the Options for the Pipeline and it works fine when stamping the build, but I am unable to access it in my powershell script.

Any Thoughts?

1 Answer 1

24
Answer recommended by CI/CD Collective

Use $env:BUILD_BUILDNUMBER instead of the $(...) notation.

See the different notations for different script types in the docs.

Sign up to request clarification or add additional context in comments.

1 Comment

Ha that worked!! Thank you!! To clarify.... I removed the above environment variables and used this notation: $env:BUILD_BUILDNUMBER directly in the script. Thanks again!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.