Add create-release.ps1 script
parent
3b38e3de4c
commit
7e2bc9a237
@ -0,0 +1,87 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Trigger runs on the workflow_dispatch event to build and upload tool packages
|
||||
|
||||
.PARAMETER RepositoryFullName
|
||||
Required parameter. The owner and repository name. For example, 'actions/versions-package-tools'
|
||||
.PARAMETER AccessToken
|
||||
Required parameter. PAT Token to authorize
|
||||
.PARAMETER ToolVersion
|
||||
Required parameter. Version of tool
|
||||
.PARAMETER TagName
|
||||
Required parameter. The name of the release tag
|
||||
.PARAMETER ReleaseBody
|
||||
Required parameter. Text describing the contents of the release
|
||||
.PARAMETER EventType
|
||||
Required parameter. The name of the repository dispatch event
|
||||
#>
|
||||
|
||||
param (
|
||||
[Parameter(Mandatory)] [string] $RepositoryFullName,
|
||||
[Parameter(Mandatory)] [string] $AccessToken,
|
||||
[Parameter(Mandatory)] [string] $ToolVersion,
|
||||
[Parameter(Mandatory)] [string] $TagName,
|
||||
[Parameter(Mandatory)] [string] $ReleaseBody,
|
||||
[Parameter(Mandatory)] [string] $EventType,
|
||||
[UInt32] $RetryIntervalSec = 10,
|
||||
[UInt32] $RetryCount = 5
|
||||
)
|
||||
|
||||
Import-Module (Join-Path $PSScriptRoot "github-api.psm1")
|
||||
|
||||
function Create-Release {
|
||||
param (
|
||||
[Parameter(Mandatory)] [object] $GitHubApi,
|
||||
[Parameter(Mandatory)] [string] $ToolVersion,
|
||||
[Parameter(Mandatory)] [string] $TagName,
|
||||
[Parameter(Mandatory)] [string] $ReleaseBody,
|
||||
[Parameter(Mandatory)] [string] $EventType
|
||||
)
|
||||
|
||||
$eventPayload = @{
|
||||
ToolVersion = $ToolVersion
|
||||
TagName = $TagName
|
||||
ReleaseBody = $ReleaseBody
|
||||
}
|
||||
|
||||
Write-Host "Create '$EventType' repository dispatch event"
|
||||
$GitHubApi.CreateRepositoryDispatch($EventType, $eventPayload)
|
||||
}
|
||||
|
||||
function Validate-ReleaseAvailability {
|
||||
param (
|
||||
[Parameter(Mandatory)] [object] $GitHubApi,
|
||||
[Parameter(Mandatory)] [string] $TagName,
|
||||
[Parameter(Mandatory)] [UInt32] $RetryIntervalSec,
|
||||
[Parameter(Mandatory)] [UInt32] $RetryCount
|
||||
)
|
||||
|
||||
do {
|
||||
$createdRelease = $GitHubApi.GetReleases() | Where-Object { $_.tag_name -eq $TagName }
|
||||
if ($createdRelease) {
|
||||
Write-Host "Release was successfully created: $($createdRelease.html_url)"
|
||||
return
|
||||
}
|
||||
$RetryCount
|
||||
|
||||
$RetryCount--
|
||||
Start-Sleep -Seconds $RetryIntervalSec
|
||||
} while($RetryCount -gt 0)
|
||||
|
||||
Write-Host "Release was not created"
|
||||
exit 1
|
||||
}
|
||||
|
||||
$gitHubApi = Get-GitHubApi -RepositoryFullName $RepositoryFullName -AccessToken $AccessToken
|
||||
|
||||
Create-Release -GitHubApi $gitHubApi `
|
||||
-ToolVersion $ToolVersion `
|
||||
-TagName $TagName `
|
||||
-ReleaseBody $ReleaseBody `
|
||||
-EventType $EventType
|
||||
|
||||
Start-Sleep -s $RetryIntervalSec
|
||||
Validate-ReleaseAvailability -GitHubApi $gitHubApi `
|
||||
-TagName $TagName `
|
||||
-RetryIntervalSec $RetryIntervalSec `
|
||||
-RetryCount $RetryCount
|
Loading…
Reference in New Issue