I am trying to use the PowerShell Plugin on Jenkins, to build my cake script. And i want to parse the $env:BUILD_NUMBER
into the Cake script - and that is working fine in the PowerShell Window on Windows using:
.\build.ps1 -buildNumber=123
But when using the "same" (Ok when parsing 123) in the PowerShell Plugin on Jenkins - it Fails. It is not parsing the value of the $env:BUILD_NUMBER
to Cake. I am using this:
$bn = $env:BUILD_NUMBER;
cd D:\_Builds\Al.Common.Std.Interface\SolutionItems\
write-host $bn //Just at test writing 123 OK
.\build.ps1 -buildNumber=$bn
In the cake script i use the $bn-value
as NuGet version Number. But i get the following error:
C:\Program Files\dotnet\sdk\2.0.0\NuGet.targets(102,5): error : '1.0.0.$bn' is not a valid version string.
Any ideas are very welcome
When it comes to environment variables, probably the best solution is to just read them using the EnvironmentVariable alias provided out of the box with Cake.
That said for acquiring the build number from Jenkins, Cake actually already provides a way of doing that out of the box using the BuildSystem property alias which is globally available, it provides a Jenkins property which wraps all kind of information about your Jenkins environment including build number as a typed integer.
Above will output something like
Running on Jenkins Yes, build number: 1.
if you're running on jenkins andRunning on Jenkins No, build number: 0.
if you aren't.Now if you still want to pass as an argument to the issue is that PowerShell arguments work a bit differently than other shells and we've only wrapped the most common ones. For additional arguments to the
build.ps1
bootstrapper script using the ScriptArgs parameter like this:And then obtaining that parameter could look something like this
And will output
BuildNumber: [NULL] (False)
if an invalid value is specified and something likeBuildNumber: 1 (True)
if a valid argument value is present (and it'll default to 0 if no value is specified).