diff --git a/eng/common/pipelines/templates/steps/create-pull-request.yml b/eng/common/pipelines/templates/steps/create-pull-request.yml index a60d26c8fe98..e3b3e538c036 100644 --- a/eng/common/pipelines/templates/steps/create-pull-request.yml +++ b/eng/common/pipelines/templates/steps/create-pull-request.yml @@ -17,6 +17,7 @@ parameters: GHTeamReviewersVariable: '' # Multiple labels seperated by comma, e.g. "bug, APIView" PRLabels: '' + SkipCheckingForChanges: false steps: @@ -35,15 +36,19 @@ steps: echo "##vso[task.setvariable variable=HasChanges]$false" echo "No changes so skipping code push" } + displayName: Check for changes + condition: and(succeeded(), eq(${{ parameters.SkipCheckingForChanges }}, false)) + workingDirectory: ${{ parameters.WorkingDirectory }} + ignoreLASTEXITCODE: true +- pwsh: | # Remove the repo owner from the front of the repo name if it exists there $repoName = "${{ parameters.RepoName }}" -replace "^${{ parameters.RepoOwner }}/", "" echo "##vso[task.setvariable variable=RepoNameWithoutOwner]$repoName" - echo "RepoName = $repName" - - displayName: Check for changes + echo "RepoName = $repoName" + displayName: Remove Repo Owner from Repo Name + condition: succeeded() workingDirectory: ${{ parameters.WorkingDirectory }} - ignoreLASTEXITCODE: true - task: PowerShell@2 displayName: Push changes @@ -57,6 +62,7 @@ steps: -CommitMsg "${{ parameters.CommitMsg }}" -GitUrl "https://$(azuresdk-github-pat)@github.com/${{ parameters.PROwner }}/$(RepoNameWithoutOwner).git" -PushArgs "${{ parameters.PushArgs }}" + -SkipCommit $${{parameters.SkipCheckingForChanges}} - task: PowerShell@2 displayName: Create pull request diff --git a/eng/common/scripts/Add-Issue-Comment.ps1 b/eng/common/scripts/Add-Issue-Comment.ps1 new file mode 100644 index 000000000000..b945d70c3fe9 --- /dev/null +++ b/eng/common/scripts/Add-Issue-Comment.ps1 @@ -0,0 +1,53 @@ +[CmdletBinding(SupportsShouldProcess = $true)] +param( + [Parameter(Mandatory = $true)] + [string]$RepoOwner, + + [Parameter(Mandatory = $true)] + [string]$RepoName, + + [Parameter(Mandatory = $true)] + [string]$IssueNumber, + + [Parameter(Mandatory = $false)] + [string]$CommentPrefix, + + [Parameter(Mandatory = $true)] + [string]$Comment, + + [Parameter(Mandatory = $false)] + [string]$CommentPostFix, + + [Parameter(Mandatory = $true)] + [string]$AuthToken +) + +. "${PSScriptRoot}\logging.ps1" + +$headers = @{ + Authorization = "bearer $AuthToken" +} + +$apiUrl = "https://api.github.com/repos/$RepoOwner/$RepoName/issues/$IssueNumber/comments" + +$commentPrefixValue = [System.Environment]::GetEnvironmentVariable($CommentPrefix) +$commentValue = [System.Environment]::GetEnvironmentVariable($Comment) +$commentPostFixValue = [System.Environment]::GetEnvironmentVariable($CommentPostFix) + +if (!$commentPrefixValue) { $commentPrefixValue = $CommentPrefix } +if (!$commentValue) { $commentValue = $Comment } +if (!$commentPostFixValue) { $commentPostFixValue = $CommentPostFix } + +$PRComment = "$commentPrefixValue $commentValue $commentPostFixValue" + +$data = @{ + body = $PRComment +} + +try { + $resp = Invoke-RestMethod -Method POST -Headers $headers -Uri $apiUrl -Body ($data | ConvertTo-Json) +} +catch { + LogError "Invoke-RestMethod [ $apiUrl ] failed with exception:`n$_" + exit 1 +} \ No newline at end of file diff --git a/eng/common/scripts/Queue-Pipeline.ps1 b/eng/common/scripts/Queue-Pipeline.ps1 new file mode 100644 index 000000000000..4e0122ca9256 --- /dev/null +++ b/eng/common/scripts/Queue-Pipeline.ps1 @@ -0,0 +1,56 @@ +[CmdletBinding(SupportsShouldProcess = $true)] +param( + [Parameter(Mandatory = $true)] + [string]$Organization, + + [Parameter(Mandatory = $true)] + [string]$Project, + + [Parameter(Mandatory = $true)] + [string]$SourceBranch, + + [Parameter(Mandatory = $true)] + [int]$DefinitionId, + + [Parameter(Mandatory = $false)] + [string]$VsoQueuedPipelines, + + [Parameter(Mandatory = $true)] + [string]$AuthToken +) + +. "${PSScriptRoot}\logging.ps1" + +$headers = @{ + Authorization = "Basic $AuthToken" +} + +$apiUrl = "https://dev.azure.com/$Organization/$Project/_apis/build/builds?api-version=6.0" + +$body = @{ + sourceBranch = $SourceBranch + definition = @{ id = $DefinitionId } +} + +Write-Verbose ($body | ConvertTo-Json) + +try { + $resp = Invoke-RestMethod -Method POST -Headers $headers $apiUrl -Body ($body | ConvertTo-Json) -ContentType application/json +} +catch { + LogError "Invoke-RestMethod [ $apiUrl ] failed with exception:`n$_" + exit 1 +} + +LogDebug "Pipeline [ $($resp.definition.name) ] queued at [ $($resp._links.web.href) ]" + +if ($VsoQueuedPipelines) { + $enVarValue = [System.Environment]::GetEnvironmentVariable($VsoQueuedPipelines) + $QueuedPipelineLinks = if ($enVarValue) { + "$enVarValue
[$($resp.definition.name)]($($resp._links.web.href))" + }else { + "[$($resp.definition.name)]($($resp._links.web.href))" + } + $QueuedPipelineLinks + Write-Host "##vso[task.setvariable variable=$VsoQueuedPipelines]$QueuedPipelineLinks" +} \ No newline at end of file diff --git a/eng/common/scripts/git-branch-push.ps1 b/eng/common/scripts/git-branch-push.ps1 index 9b3d78345589..333ed0a62c5e 100644 --- a/eng/common/scripts/git-branch-push.ps1 +++ b/eng/common/scripts/git-branch-push.ps1 @@ -25,7 +25,10 @@ param( [string] $GitUrl, [Parameter(Mandatory = $false)] - [string] $PushArgs = "" + [string] $PushArgs = "", + + [Parameter(Mandatory = $false)] + [boolean] $SkipCommit = $false ) # This is necessay because of the janky git command output writing to stderr. @@ -57,12 +60,17 @@ if ($LASTEXITCODE -ne 0) exit $LASTEXITCODE } -Write-Host "git -c user.name=`"azure-sdk`" -c user.email=`"azuresdk@microsoft.com`" commit -am `"$($CommitMsg)`"" -git -c user.name="azure-sdk" -c user.email="azuresdk@microsoft.com" commit -am "$($CommitMsg)" -if ($LASTEXITCODE -ne 0) -{ - Write-Error "Unable to add files and create commit LASTEXITCODE=$($LASTEXITCODE), see command output above." - exit $LASTEXITCODE +if (!$SkipCommit) { + Write-Host "git -c user.name=`"azure-sdk`" -c user.email=`"azuresdk@microsoft.com`" commit -am `"$($CommitMsg)`"" + git -c user.name="azure-sdk" -c user.email="azuresdk@microsoft.com" commit -am "$($CommitMsg)" + if ($LASTEXITCODE -ne 0) + { + Write-Error "Unable to add files and create commit LASTEXITCODE=$($LASTEXITCODE), see command output above." + exit $LASTEXITCODE + } +} +else { + Write-Host "Skipped applying commit" } # The number of retries can be increased if necessary. In theory, the number of retries diff --git a/eng/common/scripts/modules/ChangeLog-Operations.psm1 b/eng/common/scripts/modules/ChangeLog-Operations.psm1 index 5aed584d018b..bfcd8d193b00 100644 --- a/eng/common/scripts/modules/ChangeLog-Operations.psm1 +++ b/eng/common/scripts/modules/ChangeLog-Operations.psm1 @@ -1,5 +1,4 @@ # Common Changelog Operations - $RELEASE_TITLE_REGEX = "(?^\#+.*(?\b\d+\.\d+\.\d+([^0-9\s][^\s:]+)?)(\s(?\(Unreleased\)|\(\d{4}-\d{2}-\d{2}\)))?)" # Returns a Collection of changeLogEntry object containing changelog info for all version present in the gived CHANGELOG diff --git a/eng/common/scripts/modules/Package-Properties.psm1 b/eng/common/scripts/modules/Package-Properties.psm1 index b0572a71d449..61c45455f0d0 100644 --- a/eng/common/scripts/modules/Package-Properties.psm1 +++ b/eng/common/scripts/modules/Package-Properties.psm1 @@ -1,3 +1,4 @@ +# This Files has been retired # Helper functions for retireving useful information from azure-sdk-for-* repo # Example Use : Import-Module .\eng\common\scripts\modules class PackageProps