Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 16 additions & 19 deletions .github/workflows/push-release-info-to-aws-s3.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,35 +39,32 @@ jobs:
$product = "${{ inputs.product }}"

try {
$response = Invoke-WebRequest -Uri https://api.github.com/repos/${{ github.repository }}/releases/tags/${{ inputs.version }} -UseBasicParsing
$response = Invoke-WebRequest -Uri https://api.github.com/repos/${{ github.repository }}/releases -UseBasicParsing
}
catch {
Write-Error "Failed to fetch release ${{ inputs.version }}: $($_.Exception.Message)"
Write-Error "Failed to fetch releases: $($_.Exception.Message)"
exit 1
}

# Filter and rework the JSON
$obj = ConvertFrom-Json $response.Content -ErrorAction Stop

if ($obj.Draft -or $obj.Prerelease) {
Write-Error "Release $($obj.tag_name) is a draft or prerelease, aborting"
exit 1
}

$release = $obj | Select-Object -Property @{Name="tag";Expression={$_."tag_name"}}, @{Name="release";Expression={$_."html_url"}}, @{Name="published";Expression={$_."published_at"}}, assets
if (-not ($release.tag -match '^\d+\.\d+\.\d+$')) {
Write-Error "Release $($release.tag) has an invalid tag format, aborting"
exit 1
}

$release.assets = @($release.assets | Where-Object name -Like "*.exe" | Select-Object -Property name, size, @{Name="download";Expression={$_."browser_download_url"}})
$newobj = @($obj |
Where-Object Draft -eq $false |
Where-Object Prerelease -eq $false |
Where-Object tag_name -match '^\d+\.\d+\.\d+$' |
ForEach-Object {
$release = $_ | Select-Object -Property @{Name="tag";Expression={$_."tag_name"}}, @{Name="release";Expression={$_."html_url"}}, @{Name="published";Expression={$_."published_at"}}, assets
$release.assets = @($release.assets | Where-Object name -Like "*.exe" | Select-Object -Property name, size, @{Name="download";Expression={$_."browser_download_url"}})
$release
} |
Where-Object { $_.assets.Count -gt 0 } |
Sort-Object -Descending { [Version]$_.tag })

if (-not $release.assets) {
Write-Error "Release $($release.tag) has no exe assets, aborting"
if (-not ($newobj | Where-Object tag -eq "${{ inputs.version }}")) {
Write-Error "Release ${{ inputs.version }} is not a stable release with exe assets, aborting"
exit 1
}

$newobj = @($release)
$json = ConvertTo-Json $newobj -Depth 100 -ErrorAction Stop

# Write JSON to S3
Expand All @@ -76,7 +73,7 @@ jobs:
$tempFile = New-TemporaryFile
Set-Content -Path $tempFile -Value $json -NoNewline

aws s3 cp $tempFile "s3://$bucket/$key" --content-type application/json
aws s3 cp $tempFile "s3://$bucket/$key" --content-type application/json --cache-control max-age=300 --acl public-read
if ($LASTEXITCODE -ne 0) {
Write-Error "Upload to S3 failed"
exit 1
Expand Down
Loading