pulumi/scripts/build-sdk.ps1
Matt Ellis e56cefa285 Publish SDK binaries with same filename format as NPM packages
With this change, you can now use the `dev` tag of `@pulumi/pulumi` to
get the latest version of the SDK and install it from get.pulumi.com

This is helpful for some of our internal testing.
2018-11-21 14:38:24 -08:00

83 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 -replace '\+.', '')-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"