Previously, we published builds to rel.pulumi.com and only put actual released builds (eg. rc's and final builds) on get.pulumi.com. We should just publish all of the SDK builds to get.pulumi.com. This also makes a slight tweak to the filename of the package we upload (we took the switch over to get.pulumi.com to make this change and now that we are uploading automatically, we need to encode this change instead of doing it by hand).
82 lines
2.5 KiB
PowerShell
82 lines
2.5 KiB
PowerShell
param (
|
|
$VersionTag,
|
|
$PulumiRef
|
|
)
|
|
|
|
Set-StrictMode -Version 2.0
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
$S3ProdBucketRoot="s3://get.pulumi.com/releases/"
|
|
$S3EngBucketRoot="s3://eng.pulumi.com/releases/"
|
|
$S3PublishFolderSdk="${S3ProdBucketRoot}sdk/"
|
|
|
|
function New-TemporaryDirectory {
|
|
New-Item -ItemType Directory -Path (Join-Path ([System.IO.Path]::GetTempPath()) ([System.IO.Path]::GetRandomFileName()))
|
|
}
|
|
|
|
function New-TemporaryFile {
|
|
New-Item -ItemType File -Path (Join-Path ([System.IO.Path]::GetTempPath()) ([System.IO.Path]::GetRandomFileName()))
|
|
}
|
|
|
|
function Download-Release ($repoName, $repoCommit, [ValidateSet("zip", "tgz")]$ext) {
|
|
Write-Host "downloading $repoName@$repoCommit"
|
|
|
|
$file="${repoCommit}.${ext}"
|
|
$s3File="${S3EngBucketRoot}${repoName}/windows/amd64/${file}"
|
|
|
|
aws s3 cp --only-show-errors "$s3File" ".\$file"
|
|
|
|
switch($ext) {
|
|
"zip" { 7z x ${file} }
|
|
"tgz" { cmd /C "7z x ${file} -tgzip -so | 7z x -ttar -si" }
|
|
default { Write-Error "Unknown extention type $ext" }
|
|
}
|
|
|
|
Remove-Item -Force "$file"
|
|
}
|
|
|
|
if (!$VersionTag) { $VersionTag=Get-Date -UFormat '%Y%m%d_%H%M%S' }
|
|
if (!$PulumiRef) { $PulumiRef="master" }
|
|
|
|
$SdkFileName="pulumi-$VersionTag-windows-x64.zip"
|
|
|
|
$PulumiFolder=(Join-Path (New-TemporaryDirectory) "Pulumi")
|
|
|
|
New-Item -ItemType Directory -Path $PulumiFolder | Out-Null
|
|
|
|
Push-Location "$PulumiFolder" | Out-Null
|
|
|
|
Write-Host "pulumi: $PulumiRef"
|
|
Write-Host ""
|
|
|
|
Download-Release "pulumi" $PulumiRef "zip"
|
|
|
|
Remove-Item -Recurse -Force -Path "$PulumiFolder\node_modules"
|
|
|
|
$SdkPackagePath=(Join-Path ([System.IO.Path]::GetTempPath()) $SdkFileName)
|
|
|
|
if (Test-Path $SdkPackagePath) {
|
|
Remove-Item -Force -Path $SdkPackagePath
|
|
}
|
|
|
|
7z a -tzip "$SdkPackagePath" "$(Join-Path (Split-Path -Parent $PulumiFolder) '.')"
|
|
|
|
Write-Host "uploading SDK to ${S3PublishFolderSdk}${SdkFileName}"
|
|
|
|
$AWSCreds=((aws sts assume-role `
|
|
--role-arn "arn:aws:iam::058607598222:role/UploadPulumiReleases" `
|
|
--role-session-name "upload-sdk" `
|
|
--external-id "upload-pulumi-release") | ConvertFrom-Json)
|
|
|
|
$env:AWS_ACCESS_KEY_ID=$AWSCreds.Credentials.AccessKeyId
|
|
$env:AWS_SECRET_ACCESS_KEY=$AWSCreds.Credentials.SecretAccessKey
|
|
$env:AWS_SECURITY_TOKEN=$AWSCreds.Credentials.SessionToken
|
|
|
|
aws s3 cp --acl public-read --only-show-errors "$SdkPackagePath" "${S3PublishFolderSdk}${SdkFileName}"
|
|
|
|
Pop-Location | Out-Null
|
|
|
|
Remove-Item -Path $SdkPackagePath
|
|
Remove-Item -Path (Split-Path -Parent $PulumiFolder) -Force -Recurse
|
|
|
|
Write-Host "done"
|