build/publish.proj (24 lines of code) (raw):

<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="14.0" DefaultTargets="All" InitialTargets="CheckRequiredParameters" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Root>$(MSBuildThisFileDirectory)..\</Root> <Configuration Condition="'$(Configuration)' == ''">Debug</Configuration> <Artifacts>$(Root)artifacts\</Artifacts> <Tools>$(Root)tools\</Tools> <NuGet>$(Tools)NuGet-4.7.0\nuget.exe</NuGet> <PackDir>$(Artifacts)Package\$(Configuration)\</PackDir> <PowerShell>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe</PowerShell> </PropertyGroup> <Target Name="CheckRequiredParameters"> <Error Text="GitHubAccessToken is not assigned a value!" Condition="'$(GitHubAccessToken)' == ''" /> <Error Text="ReleaseVersion is not assigned a value!" Condition="'$(ReleaseVersion)' == ''" /> <Error Text="CommitId is not assigned a value!" Condition="'$(CommitId)' == ''" /> </Target> <Target Name="All"> <PropertyGroup> <!-- https://stackoverflow.com/a/41618979/294804 --> <!-- https://stackoverflow.com/a/38054505/294804 --> <ReleaseCommand>[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -Uri 'https://api.github.com/repos/Azure/azure-powershell-common/releases' -UseBasicParsing -Headers @{ 'Authorization' = 'Token $(GitHubAccessToken)' } -Method Post -Body (ConvertTo-Json @{ 'tag_name' = '$(ReleaseVersion)'; 'target_commitish' = '$(CommitId)'; 'name' = '$(ReleaseVersion)'; 'body' = 'Azure PowerShell Common version $(ReleaseVersion)'; 'draft' = $false; 'prerelease' = $false })</ReleaseCommand> </PropertyGroup> <Message Importance="high" Text="Publish: Creating GitHub release" /> <Exec Command="$(PowerShell) -NonInteractive -NoLogo -NoProfile -Command &quot;$(ReleaseCommand)&quot;" /> </Target> </Project>