Skip to content

Commit c0fd34f

Browse files
committed
Sync eng/common directory with azure-sdk-tools repository for Tools PR Azure/azure-sdk-tools#926
1 parent cda14a3 commit c0fd34f

File tree

8 files changed

+117
-55
lines changed

8 files changed

+117
-55
lines changed

eng/common/pipelines/templates/steps/create-pull-request.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ steps:
7474
- task: PowerShell@2
7575
displayName: Tag a Reviewer on PR
7676
condition: and(succeeded(), eq(variables['HasChanges'], 'true'))
77+
continueOnError: true
7778
inputs:
7879
pwsh: true
7980
workingDirectory: ${{ parameters.WorkingDirectory }}

eng/common/pipelines/templates/steps/get-pr-owners.yml

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,20 @@ steps:
1818
--kusto-database-var KUSTO_DB `
1919
--kusto-table-var KUSTO_TABLE `
2020
--identity "$(Build.QueuedBy)"
21-
$resolvedIdentity = $result[-1] | ConvertFrom-Json
2221
23-
Write-Host $resolvedIdentity
22+
$resolvedIdentity = ""
23+
try { $resolvedIdentity = $result[-1] | ConvertFrom-Json } catch {}
2424
25-
Write-Output "##vso[task.setvariable variable=${{ parameters.TargetVariable }}]$($resolvedIdentity.GithubUserName)"
25+
if($resolvedIdentity) {
26+
Write-Host $resolvedIdentity
27+
28+
Write-Host "##vso[task.setvariable variable=${{ parameters.TargetVariable }}]$($resolvedIdentity.GithubUserName)"
29+
}
30+
else {
31+
Write-Host "Unable to locate a github user for identity $(Build.QueuedBy)"
32+
}
2633
displayName: 'Resolving Queuing User'
34+
continueOnError: true
2735
workingDirectory: $(Build.SourcesDirectory)/tools_repo/tools/notification-configuration/identity-resolver
2836
env:
2937
APP_ID: $(notification-aad-app-id)
@@ -41,6 +49,6 @@ steps:
4149
$originalValue = "$(${{ parameters.TargetVariable }})"
4250
$result = $(Build.SourcesDirectory)/eng/common/scripts/get-codeowners.ps1 -TargetDirectory /sdk/${{ parameters.ServiceDirectory }}/ -RootDirectory $(Build.SourcesDirectory)
4351
if ($result) {
44-
Write-Output "##vso[task.setvariable variable=${{ parameters.TargetVariable }}]$originalValue,$result"
52+
Write-Host "##vso[task.setvariable variable=${{ parameters.TargetVariable }}]$originalValue,$result"
4553
}
4654
displayName: Add CodeOwners if Present

eng/common/pipelines/templates/steps/publish-blobs.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ parameters:
44
TargetLanguage: ''
55
BlobName: ''
66
ScriptPath: ''
7+
RepoId: ''
8+
ReleaseTag: ''
79

810
steps:
911
- pwsh: |
@@ -21,6 +23,8 @@ steps:
2123
-SASKey "${{ parameters.BlobSASKey }}"
2224
-Language "${{ parameters.TargetLanguage }}"
2325
-BlobName "${{ parameters.BlobName }}"
26+
-RepoReplaceRegex "(https://github.com/${{ parameters.RepoId }}/(?:blob|tree)/)master(/.*)"
27+
-Tag: "${{ parameters.ReleaseTag }}"
2428
pwsh: true
2529
workingDirectory: $(Pipeline.Workspace)
2630
displayName: Copy Docs to Blob

eng/common/scripts/add-pullrequest-reviewers.ps1

Lines changed: 29 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,32 @@ param(
1818
$AuthToken
1919
)
2020

21+
function AddMembers($memberName, $additionSet) {
22+
$headers = @{
23+
Authorization = "bearer $AuthToken"
24+
}
25+
$uri = "https://api.github.com/repos/$RepoOwner/$RepoName/pulls/$PRNumber/requested_reviewers"
26+
$errorOccurred = $false
27+
28+
foreach ($id in $additionSet) {
29+
try {
30+
$postResp = @{}
31+
$postResp[$memberName] = @($id)
32+
$postResp = $postResp | ConvertTo-Json
33+
34+
Write-Host $postResp
35+
$resp = Invoke-RestMethod -Method Post -Headers $headers -Body $postResp -Uri $uri -MaximumRetryCount 3
36+
$resp | Write-Verbose
37+
}
38+
catch {
39+
Write-Host "Error attempting to add $user `n$_"
40+
$errorOccurred = $true
41+
}
42+
}
43+
44+
return $errorOccurred
45+
}
46+
2147
# at least one of these needs to be populated
2248
if (-not $GitHubUsers -and -not $GitHubTeams) {
2349
Write-Host "No user provided for addition, exiting."
@@ -27,54 +53,9 @@ if (-not $GitHubUsers -and -not $GitHubTeams) {
2753
$userAdditions = @($GitHubUsers.Split(",") | % { $_.Trim() } | ? { return $_ })
2854
$teamAdditions = @($GitHubTeams.Split(",") | % { $_.Trim() } | ? { return $_ })
2955

30-
$headers = @{
31-
Authorization = "bearer $AuthToken"
32-
}
33-
$uri = "https://api.github.com/repos/$RepoOwner/$RepoName/pulls/$PRNumber/requested_reviewers"
56+
$errorsOccurredAddingUsers = AddMembers -memberName "reviewers" -additionSet $userAdditions
57+
$errorsOccurredAddingTeams = AddMembers -memberName "team_reviewers" -additionSet $teamAdditions
3458

35-
try {
36-
$resp = Invoke-RestMethod -Headers $headers $uri -MaximumRetryCount 3
37-
}
38-
catch {
39-
Write-Error "Invoke-RestMethod [$uri] failed with exception:`n$_"
59+
if ($errorsOccurredAddingUsers -or $errorsOccurredAddingTeams) {
4060
exit 1
4161
}
42-
43-
# the response object takes this form: https://developer.github.com/v3/pulls/review_requests/#response-1
44-
# before we can push a new reviewer, we need to pull the simple Ids out of the complex objects that came back in the response
45-
$userReviewers = @($resp.users | % { return $_.login })
46-
$teamReviewers = @($resp.teams | % { return $_.slug })
47-
48-
if (!$userReviewers) { $modifiedUserReviewers = @() } else { $modifiedUserReviewers = $userReviewers.Clone() }
49-
$modifiedUserReviewers += ($userAdditions | ? { !$modifiedUserReviewers.Contains($_) })
50-
51-
if ($teamReviewers) { $modifiedTeamReviewers = @() } else { $modifiedTeamReviewers = $teamReviewers.Clone() }
52-
$modifiedTeamReviewers += ($teamAdditions | ? { !$modifiedTeamReviewers.Contains($_) })
53-
54-
$detectedUserDiffs = Compare-Object -ReferenceObject $userReviewers -DifferenceObject $modifiedUserReviewers
55-
$detectedTeamDiffs = Compare-Object -ReferenceObject $teamReviewers -DifferenceObject $modifiedTeamReviewers
56-
57-
# Compare-Object returns values when there is a difference between the comparied objects.
58-
# we only want to run the update if there IS a difference.
59-
if ($detectedUserDiffs -or $detectedTeamDiffs) {
60-
$postResp = @{}
61-
62-
if ($modifiedUserReviewers) { $postResp["reviewers"] = $modifiedUserReviewers }
63-
if ($modifiedTeamReviewers) { $postResp["team_reviewers"] = $modifiedTeamReviewers }
64-
65-
$postResp = $postResp | ConvertTo-Json
66-
67-
try {
68-
Write-Host $postResp
69-
$resp = Invoke-RestMethod -Method Post -Headers $headers -Body $postResp -Uri $uri -MaximumRetryCount 3
70-
$resp | Write-Verbose
71-
}
72-
catch {
73-
Write-Error "Unable to update PR reviewers. `n$_"
74-
}
75-
}
76-
else {
77-
$results = $GitHubUsers + $GitHubTeams
78-
Write-Host "Reviewers $results already added. Exiting."
79-
exit(0)
80-
}

eng/common/scripts/artifact-metadata-parsing.ps1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ $SDIST_PACKAGE_REGEX = "^(?<package>.*)\-(?<versionstring>$([AzureEngSemanticVer
77
function CreateReleases($pkgList, $releaseApiUrl, $releaseSha) {
88
foreach ($pkgInfo in $pkgList) {
99
Write-Host "Creating release $($pkgInfo.Tag)"
10-
10+
echo "##vso[task.setvariable variable=ReleaseTag;isOutput=true]$($pkgInfo.Tag)"
1111
$releaseNotes = ""
1212
if ($pkgInfo.ReleaseNotes -ne $null) {
1313
$releaseNotes = $pkgInfo.ReleaseNotes
@@ -502,7 +502,7 @@ function CheckArtifactShaAgainstTagsList($priorExistingTagList, $releaseSha, $ap
502502
else {
503503
Write-Host "The artifact SHA $releaseSha does not match that of the currently existing tag."
504504
Write-Host "Tag with issues is $tag with commit SHA $tagSha"
505-
505+
echo "##vso[task.setvariable variable=ReleaseTag;isOutput=true]$tag"
506506
$unmatchedTags += $tag
507507
}
508508
}

eng/common/scripts/copy-docs-to-blobstorage.ps1

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ param (
77
$Language,
88
$BlobName,
99
$ExitOnError=1,
10-
$UploadLatest=1
10+
$UploadLatest=1,
11+
$RepoReplaceRegex,
12+
$Tag
1113
)
1214

1315
$Language = $Language.ToLower()
@@ -197,6 +199,10 @@ function Upload-Blobs
197199
Write-Host "DocDir $($DocDir)"
198200
Write-Host "Final Dest $($DocDest)/$($PkgName)/$($DocVersion)"
199201

202+
# Use the step to replace master link to release tag link
203+
Write-Host "Replacing all readme master links with release tag $Tag"
204+
ReplaceLink -scanFolder $DocDir -fileSuffix ".html" -replacement $Tag -customRegex $RepoReplaceRegex
205+
200206
Write-Host "Uploading $($PkgName)/$($DocVersion) to $($DocDest)..."
201207
& $($AzCopy) cp "$($DocDir)/**" "$($DocDest)/$($PkgName)/$($DocVersion)$($SASKey)" --recursive=true
202208

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
param (
2+
# url list to verify links. Can either be a http address or a local file request. Local file paths support md and html files.
3+
[string] $sourceDir,
4+
# file that contains a set of links to ignore when verifying
5+
[string] $ignoreLinksFile = "$PSScriptRoot/ignore-links.txt",
6+
# switch that will enable devops specific logging for warnings
7+
[switch] $devOpsLogging = $false,
8+
[string] $branchReplaceRegex = "(https://github.com/.*/(?:blob|tree)/)master(/.*)",
9+
# the substitute branch name or SHA commit
10+
[string] $releaseTag = ""
11+
)
12+
13+
$regexOptions = [System.Text.RegularExpressions.RegexOptions]"Singleline, IgnoreCase";
14+
15+
function ReplaceLink ($scanFolder, $fileSuffix, $replacement, $customRegex) {
16+
$regex = new-object System.Text.RegularExpressions.Regex ($branchReplaceRegex, $regexOptions)
17+
if ($customRegex) {
18+
$regex = new-object System.Text.RegularExpressions.Regex ($customRegex, $regexOptions)
19+
}
20+
if (!$fileSuffix) {
21+
Write-Error "Please provide at least one file extension to scan against."
22+
}
23+
$replacementPattern = "`${2}$replacement`$3"
24+
if (!$replacement) {
25+
Write-Error "Please provide the replacement string to replace with."
26+
}
27+
if ($scanFolder) {
28+
$fileSuffixArray = $fileSuffix -split ","
29+
$url = @()
30+
31+
foreach ($fileExtension in $fileSuffixArray) {
32+
$fileRegex = "*" + $fileSuffix.Trim()
33+
$urls += Get-ChildItem -Path "$scanFolder/*" -Recurse -Include $fileRegex
34+
}
35+
36+
if ($urls.Count -eq 0) {
37+
Write-Host "Usage $($MyInvocation.MyCommand.Name) <urls>";
38+
return;
39+
}
40+
$needTochange = @{}
41+
foreach ($url in $urls) {
42+
while ((Get-Content -Path $url) -match $regex) {
43+
Write-Verbose "We have master link matches in page $url"
44+
$needTochange[$url] = $true
45+
(Get-Content -Path $url) -replace $regex, $replacementPattern | Set-Content -Path $url
46+
}
47+
}
48+
foreach ($page in $needTochange.Keys) {
49+
Write-Host "There are replacements in page $page"
50+
}
51+
}
52+
}
53+
54+
#ReplaceLink -scanFolder $sourceDir -replacement $releaseTag -fileSuffix ".html"

eng/common/scripts/update-docs-metadata.ps1

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ param (
1717
. (Join-Path $PSScriptRoot artifact-metadata-parsing.ps1)
1818
. (Join-Path $PSScriptRoot SemVer.ps1)
1919

20+
$releaseReplaceRegex = "(https://github.com/$RepoId/(?:blob|tree)/)master(/.*)"
21+
2022
function GetMetaData($lang){
2123
switch ($lang) {
2224
"java" {
@@ -75,6 +77,12 @@ function GetAdjustedReadmeContent($pkgInfo, $lang){
7577
if ($headerContentMatches) {
7678
$foundTitle = $headerContentMatches.Matches[0]
7779
$fileContent = $pkgInfo.ReadmeContent -replace $foundTitle, "$foundTitle - Version $($pkgInfo.PackageVersion) `n"
80+
# Replace github master link with release tag.
81+
$regex = new-object System.Text.RegularExpressions.Regex ($releaseReplaceRegex,
82+
[System.Text.RegularExpressions.RegexOptions]"Singleline, IgnoreCase")
83+
84+
$ReplacementPattern = "`${1}$($pkgInfo.Tag)`$2"
85+
$fileContent = $fileContent -replace $regex, $ReplacementPattern
7886
}
7987

8088
$header = "---`ntitle: $foundTitle`nkeywords: Azure, $lang, SDK, API, $($pkgInfo.PackageId), $service`nauthor: maggiepint`nms.author: magpint`nms.date: $date`nms.topic: article`nms.prod: azure`nms.technology: azure`nms.devlang: $lang`nms.service: $service`n---`n"

0 commit comments

Comments
 (0)