Skip to content

Commit

Permalink
Sync eng/common directory with azure-sdk-tools for PR 1287 (Azure#17630)
Browse files Browse the repository at this point in the history
* Move common code to create API review into eng common in tools
  • Loading branch information
azure-sdk authored and annelo-msft committed Feb 17, 2021
1 parent 0ea2dbd commit 43dd659
Show file tree
Hide file tree
Showing 3 changed files with 123 additions and 1 deletion.
20 changes: 20 additions & 0 deletions eng/common/pipelines/templates/steps/create-apireview.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
parameters:
ArtifactPath: $(Build.ArtifactStagingDirectory)
Artifacts: []

steps:
- ${{ each artifact in parameters.Artifacts }}:
- task: Powershell@2
inputs:
filePath: $(Build.SourcesDirectory)/eng/common/scripts/Create-APIReview.ps1
arguments: >
-ArtifactPath ${{parameters.ArtifactPath}}
-APIViewUri $(azuresdk-apiview-uri)
-APIKey $(azuresdk-apiview-apikey)
-APILabel "Auto Review - $(Build.SourceVersion)"
-PackageName ${{artifact.name}}
pwsh: true
workingDirectory: $(Pipeline.Workspace)
displayName: Create API Review for ${{ artifact.name}}
condition: and(succeededOrFailed(), ne(variables['Skip.CreateApiReview'], 'true') , ne(variables['Build.Reason'],'PullRequest'), eq(variables['System.TeamProject'], 'internal'))
continueOnError: true
101 changes: 101 additions & 0 deletions eng/common/scripts/Create-APIReview.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
[CmdletBinding()]
Param (
[Parameter(Mandatory=$True)]
[string] $ArtifactPath,
[Parameter(Mandatory=$True)]
[string] $APIViewUri,
[Parameter(Mandatory=$True)]
[string] $APIKey,
[Parameter(Mandatory=$True)]
[string] $APILabel,
[string] $PackageName = ""
)


# Submit API review request and return status whether current revision is approved or pending or failed to create review
function Submit-APIReview($packagename, $filePath, $uri, $apiKey, $apiLabel)
{
$multipartContent = [System.Net.Http.MultipartFormDataContent]::new()
$FileStream = [System.IO.FileStream]::new($filePath, [System.IO.FileMode]::Open)
$fileHeader = [System.Net.Http.Headers.ContentDispositionHeaderValue]::new("form-data")
$fileHeader.Name = "file"
$fileHeader.FileName = $packagename
$fileContent = [System.Net.Http.StreamContent]::new($FileStream)
$fileContent.Headers.ContentDisposition = $fileHeader
$fileContent.Headers.ContentType = [System.Net.Http.Headers.MediaTypeHeaderValue]::Parse("application/octet-stream")
$multipartContent.Add($fileContent)


$stringHeader = [System.Net.Http.Headers.ContentDispositionHeaderValue]::new("form-data")
$stringHeader.Name = "label"
$StringContent = [System.Net.Http.StringContent]::new($apiLabel)
$StringContent.Headers.ContentDisposition = $stringHeader
$multipartContent.Add($stringContent)

$headers = @{
"ApiKey" = $apiKey;
"content-type" = "multipart/form-data"
}

try
{
$Response = Invoke-WebRequest -Method 'POST' -Uri $uri -Body $multipartContent -Headers $headers
$StatusCode = $Response.StatusCode
}
catch
{
$StatusCode = $_.Exception.Response.StatusCode
}

return $StatusCode
}


. (Join-Path $PSScriptRoot common.ps1)
$packages = @{}
if ($FindArtifactForApiReviewFn -and (Test-Path "Function:$FindArtifactForApiReviewFn"))
{
$packages = &$FindArtifactForApiReviewFn $ArtifactPath $PackageName
}
else
{
Write-Host "Function 'FindArtifactForApiReviewFn' is not found"
exit(1)
}

$responses = @{}
if ($packages)
{
foreach($pkg in $packages.Keys)
{
Write-Host "Submitting API Review for package $($pkg)"
Write-Host $packages[$pkg]
$responses[$pkg] = Submit-APIReview -packagename $pkg -filePath $packages[$pkg] -uri $APIViewUri -apiKey $APIKey -apiLabel $APILabel
}
}
else
{
Write-Host "No package is found in artifact path to submit review request"
}

$FoundFailure = $False
foreach ($pkgName in $responses.Keys)
{
$respCode = $responses[$pkgName]
if ($respCode -ne '200')
{
$FoundFailure = $True
if ($respCode -eq '201')
{
Write-Host "API Review is pending for package $pkgName"
}
else
{
Write-Host "Failed to create API Review for package $pkgName"
}
}
}
if ($FoundFailure)
{
Write-Host "Atleast one API review is not yet approved"
}
3 changes: 2 additions & 1 deletion eng/common/scripts/common.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,5 @@ $GetPackageInfoFromRepoFn = "Get-${Language}-PackageInfoFromRepo"
$GetPackageInfoFromPackageFileFn = "Get-${Language}-PackageInfoFromPackageFile"
$PublishGithubIODocsFn = "Publish-${Language}-GithubIODocs"
$UpdateDocCIFn = "Update-${Language}-CIConfig"
$GetGithubIoDocIndexFn = "Get-${Language}-GithubIoDocIndex"
$GetGithubIoDocIndexFn = "Get-${Language}-GithubIoDocIndex"
$FindArtifactForApiReviewFn = "Find-${Language}-Artifacts-For-Apireview"

0 comments on commit 43dd659

Please sign in to comment.