Maximize how you use your VSTS build and release pipeline with Inline Powershell tasks. In this blog series ‘Tips and Tricks for Inline Powershell’, I will show simple samples on how to get more out of your pipelines. This blog post: Let your build work for you
VSTS Inline Powershell task
The Inline PowerShell VSTS task enables you to execute PowerShell from a textbox within your build or release pipeline. You can run a PowerShell script on you agent or as Azure Powershell.
Introduction Inline Powershell Task
Install Inline Powershell Task
Let your build work for you
Shorten your feedback loop to fix a broken builds as soon as possible. Let the build give precise information on multiple channels that something broke. The sooner someone notices, the sooner it could be fixed. The following Powershell script combines variables, rest apis and webhook in one script. It searches for a failed task in the current build, if found it makes a workitem and than post the link to slack.
[String]$buildID = "$env:BUILD_BUILDID" [String]$project = "$env:SYSTEM_TEAMPROJECT" [String]$projecturi = "$env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI" $headers = @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" } $url= $projecturi + $project + "/_apis/build/builds/" + $buildID + "/timeline?api-version=2.0" $responseBuild = Invoke-RestMethod -Uri $url -headers $headers -Method Get | select records foreach ($record in $responseBuild.records) { if ($record.result -eq 'failed'){ $urlwit= $projecturi + $project + '/_apis/wit/workitems/$bug?api-version=2.0' $body="[ { `"op`": `"add`", `"path`": `"/fields/System.Title`", `"value`": `"build $buildID failed by $buildrequestor `" } ]" $response= Invoke-RestMethod -Uri $urlwit -ContentType "application/json-patch+json" -Body $body -headers $headers -Method PATCH $wipurl = $response.url $buildrequestor= "$env:Build_RequestedFor" $taskname = $record.name $payload = @{ "channel" = "#random" "text" = "@$buildrequestor failed the build on task $taskname\n$wipurl" "username"= "build-bot" "icon_emoji"= ":speak_no_evil:" } Invoke-WebRequest -UseBasicParsig ` -Body (ConvertTo-Json -Compress -InputObject $payload) ` -Method Post ` -Uri "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX" } }
More tips and tricks
Use VSTS variables
Let your task fail
Set progress
Change buildnumber
VSTS Command overview
Call a WebHook
Download a file
Install a Powershell Module
Navigate VSTS as filesystem
Make VSTS API Rest calls
Script example: Act on failed build
To access the VSTS Rest API you need to configure the OAuth token in the your build, see VSTS Rest API from Inline Powershell. More information on how to use the Webhook to Slack.