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 "$(ReleaseCommand)"" />
</Target>
</Project>