I was building an azure pipelines job and during it I uploaded a Universal Package using the
I then had to contact a REST API with the package and version of the newly published Universal Package. To do that I need to get the version and package name out of the task.
That looks like this:
- task: UniversalPackages@0 displayName: Universal Publish inputs: command: publish publishDirectory: '$(System.DefaultWorkingDirectory)/dist' vstsFeedPublish: 'MyProject/MyFeed' vstsFeedPackagePublish: 'package.name' packagePublishDescription: 'My super package' versionOption: patch #increment the patch part of the semantic versioning publishedPackageVar: someVariableName
After this task runs
$(someVariableName) will hold a string like so "package.name 1.0.1", but that variable will not be available outside this current job.
To make it available for other jobs you need to move it to an output variable. I did that like this:
- powershell: echo "##vso[task.setvariable variable=PackageNameAndVersion;isOutput=true]$(someVariableName)" name: PackagePublish
Now the value is available in other jobs through
You can consume it in subsequent jobs by making sure those jobs depend on this job and then grabbing the variable from the output.
- job: 'RestAPICallingJob' dependsOn: 'BuildProductionStuff' pool: server variables: PackageNameAndVersion: $[ dependencies.BuildProductionStuff.outputs['PackagePublish.PackageNameAndVersion'] ]
Now I can add a step to call a REST API using the package name and version of my universal package.
NOTE: I ended up not using Universal Packages, because you can only download Universal Packages from Azure using the AzureCLI. Instead, I created a NuGet package that contained just my loose files using a .nuspec file.