diff --git a/eng/common/scripts/Create-APIReview.ps1 b/eng/common/scripts/Create-APIReview.ps1 index e4a4d2a83..c3c8f4a46 100644 --- a/eng/common/scripts/Create-APIReview.ps1 +++ b/eng/common/scripts/Create-APIReview.ps1 @@ -130,6 +130,13 @@ if ($packages) } elseif ($version.IsPrerelease) { + # Check if package name is approved. Preview version cannot be released without package name approval + if ($respCode -eq '202' -and $pkgInfo.ReleaseStatus -and $pkgInfo.ReleaseStatus -ne "Unreleased") + { + Write-Host "Package name is not yet approved on APIView for $($PackageName). Package name must be approved by an API approver for a beta release if it was never released a stable version." + Write-Host "You can check http://aka.ms/azsdk/engsys/apireview/faq for more details on package name approval." + exit 1 + } # Ignore API review status for prerelease version Write-Host "Package version is not GA. Ignoring API view approval status" } diff --git a/eng/common/scripts/Helpers/ApiView-Helpers.ps1 b/eng/common/scripts/Helpers/ApiView-Helpers.ps1 index 3be12566e..6400d3aa0 100644 --- a/eng/common/scripts/Helpers/ApiView-Helpers.ps1 +++ b/eng/common/scripts/Helpers/ApiView-Helpers.ps1 @@ -42,9 +42,19 @@ function Check-ApiReviewStatus($packageName, $packageVersion, $language, $url, $ { Write-Host "API Review is approved for package $($packageName)" } + else if ($response.StatusCode -eq '202') + { + Write-Host "Package name $($packageName) is not yet approved by an SDK API approver. Package name must be approved to release a beta version if $($packageName) was never released a stable version." + Write-Host "You can check http://aka.ms/azsdk/engsys/apireview/faq for more details on package name Approval." + } + else if ($response.StatusCode -eq '201') + { + Write-Warning "API Review is not approved for package $($packageName). Release pipeline will fail if API review is not approved for a stable version release." + Write-Host "You can check http://aka.ms/azsdk/engsys/apireview/faq for more details on API Approval." + } else { - Write-Warning "API Review is not approved for package $($packageName). Release pipeline will fail if API review is not approved." + Write-Warning "API review status check returned unexpected response. $($response)" Write-Host "You can check http://aka.ms/azsdk/engsys/apireview/faq for more details on API Approval." } } diff --git a/eng/common/scripts/Prepare-Release.ps1 b/eng/common/scripts/Prepare-Release.ps1 index 64a70e54b..63038872b 100644 --- a/eng/common/scripts/Prepare-Release.ps1 +++ b/eng/common/scripts/Prepare-Release.ps1 @@ -152,24 +152,21 @@ if ($LASTEXITCODE -ne 0) { exit 1 } -# Check API status if version is GA -if (!$newVersionParsed.IsPrerelease) +# Check API status +try { - try - { - az account show *> $null - if (!$?) { - Write-Host 'Running az login...' - az login *> $null - } - $url = az keyvault secret show --name "APIURL" --vault-name "AzureSDKPrepRelease-KV" --query "value" --output "tsv" - $apiKey = az keyvault secret show --name "APIKEY" --vault-name "AzureSDKPrepRelease-KV" --query "value" --output "tsv" - Check-ApiReviewStatus -PackageName $packageProperties.Name -packageVersion $newVersion -Language $LanguageDisplayName -url $url -apiKey $apiKey - } - catch - { - Write-Warning "Failed to get APIView URL and API Key from Keyvault AzureSDKPrepRelease-KV. Please check and ensure you have access to this Keyvault as reader." + az account show *> $null + if (!$?) { + Write-Host 'Running az login...' + az login *> $null } + $url = az keyvault secret show --name "APIURL" --vault-name "AzureSDKPrepRelease-KV" --query "value" --output "tsv" + $apiKey = az keyvault secret show --name "APIKEY" --vault-name "AzureSDKPrepRelease-KV" --query "value" --output "tsv" + Check-ApiReviewStatus -PackageName $packageProperties.Name -packageVersion $newVersion -Language $LanguageDisplayName -url $url -apiKey $apiKey +} +catch +{ + Write-Warning "Failed to get APIView URL and API Key from Keyvault AzureSDKPrepRelease-KV. Please check and ensure you have access to this Keyvault as reader." } if ($releaseTrackingOnly)