eng/PublishRelease.ps1 (55 lines of code) (raw):
param($NpmToken, $GitHubToken, [string]$BuildNumber, $Sha, $AutorestArtifactDirectory, $typespecEmitterDirectory)
$AutorestArtifactDirectory = Resolve-Path $AutorestArtifactDirectory
$RepoRoot = Resolve-Path "$PSScriptRoot/.."
Push-Location $AutorestArtifactDirectory
try {
$currentVersion = node -p -e "require('./package.json').version";
$devVersion = "$currentVersion-beta.$BuildNumber"
Write-Host "Setting version to $devVersion"
npm version --no-git-tag-version $devVersion | Out-Null;
$file = npm pack -q;
$name = "AutoRest C# v$devVersion"
Write-Host "Publishing autorest $file on GitHub!"
npx -q publish-release --token $GitHubToken --repo autorest.csharp --owner azure --name $name --tag v$devVersion --notes=prerelease-build --prerelease --editRelease false --assets $file --target_commitish $Sha 2>&1
$env:NPM_TOKEN = $NpmToken
"//registry.npmjs.org/:_authToken=$env:NPM_TOKEN" | Out-File -FilePath (Join-Path $AutorestArtifactDirectory '.npmrc')
Write-Host "Publishing $file on Npm!"
npm publish $file --access public
}
finally {
Pop-Location
}
$typespecEmitterDirectory = Resolve-Path $typespecEmitterDirectory
Push-Location $typespecEmitterDirectory
try {
$autorestVersion = $devVersion
$currentVersion = node -p -e "require('./package.json').version";
$devVersion = "$currentVersion-beta.$BuildNumber"
$attemptCount = 0
$maxAttempts = 4
while($true) {
Write-Host "Installing @autorest/csharp@$autorestVersion and updating package.json"
npm install @autorest/csharp@$autorestVersion --save-exact --prefer-online
$attemptCount += 1
if($LASTEXITCODE -eq 0) {
break
}
if($attemptCount -eq $maxAttempts) {
Write-Host "Failed to install @autorest/csharp@$autorestVersion. Exiting..."
exit 1
}
Write-Host "Failed to install @autorest/csharp@$autorestVersion. Retrying in 5 seconds..."
Start-Sleep -Seconds 15
}
Write-Host "Setting TypeSpec Emitter version to $devVersion"
npm version --no-git-tag-version $devVersion | Out-Null;
Write-Host "Packing TypeSpec emitter..."
$file = npm pack -q;
Write-Host "Publishing $file on Npm..."
"//registry.npmjs.org/:_authToken=$env:NPM_TOKEN" | Out-File -FilePath (Join-Path $typespecEmitterDirectory '.npmrc')
npm publish $file --access public
Write-Host "##vso[task.setvariable variable=TypeSpecEmitterVersion;isoutput=true]$devVersion"
}
finally {
Pop-Location
}