Begin Implementing Ref Updater (#662)

* Begin Implementing Ref Updater

* Switch to using Regex Replace

* Remove Yaml Parser

* Use different repository Names
This commit is contained in:
Chidozie Ononiwu 2020-06-18 15:59:38 -07:00 коммит произвёл GitHub
Родитель 36c1c96a50
Коммит ef75c6005d
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
3 изменённых файлов: 85 добавлений и 1 удалений

Просмотреть файл

@ -0,0 +1,36 @@
# Updates repository Refs on all pipelines
parameters:
Tag: ''
ToolRepo: ''
ToolsRepoPath: ''
Repos: []
steps:
- ${{ each repo in parameters.Repos }}:
- pwsh: |
git clone --branch master https://github.com/azure/${{ repo }}
displayName: Clone ${{ repo }}
workingDirectory: $(System.DefaultWorkingDirectory)
- task: Powershell@2
inputs:
targetType: 'filePath'
filePath: ${{ parameters.ToolsRepoPath }}/scripts/powershell/ref-updater.ps1
arguments: >
-RepoRoot $(System.DefaultWorkingDirectory)/${{ repo }}
-Tag ${{ parameters.Tag }}
-ToolRepo ${{ parameters.ToolRepo }}
pwsh: true
displayName: Update Refs
- template: ../../../common/pipelines/templates/steps/create-pull-request.yml
parameters:
RepoName: ${{ repo }}
PRBranchName: UpdateRepositoryRefsFor${{ parameters.ToolRepo }}
CommitMsg: Update ${{ parameters.ToolRepo }} Repository Resource Refs in Yaml files
PRTitle: Update ${{ parameters.ToolRepo }} Repository Resource Refs in Yaml files
PushArgs: -f
WorkingDirectory: $(System.DefaultWorkingDirectory)/${{ repo }}
ScriptDirectory: ${{ parameters.ToolsRepoPath }}/eng/common/scripts
BaseBranchName: refs/heads/master

Просмотреть файл

@ -16,7 +16,24 @@ jobs:
# Remove Organization name i.e Transform Azure/azure-sdk-tools -> azure-sdk-tools before appending build Number
$Tag = "$(Build.Repository.Name)".SubString("$(Build.Repository.Name)".IndexOf('/') + 1) + "_$(Build.BuildNumber)"
Write-Host "Tagging Repo with $Tag"
echo "##vso[task.setvariable variable=Tag]$Tag"
git -c user.name="azure-sdk" -c user.email="azuresdk@microsoft.com" tag -a $tag -m "Release tools version $Tag"
git push $PushURL $tag
displayName: Create and Push Version Tag
workingDirectory: $(Build.SourcesDirectory)
workingDirectory: $(Build.SourcesDirectory)
- template: /eng/pipelines/templates/steps/ref-updater.yml
parameters:
Tag: $(Tag)
ToolRepo: azure-sdk-tools
ToolsRepoPath: $(Build.SourcesDirectory)
Repos:
# - azure-sdk-for-android
# - azure-sdk-for-c
# - azure-sdk-for-cpp
# - azure-sdk-for-go
# - azure-sdk-for-ios
- azure-sdk-for-java
- azure-sdk-for-js
- azure-sdk-for-net
# - azure-sdk-for-python

Просмотреть файл

@ -0,0 +1,31 @@
# Updates the Ref in all Yml files in the Repository
param (
[Parameter(Mandatory=$True)]
[String]$RepoRoot,
[Parameter(Mandatory=$True)]
[String]$Tag,
[Parameter(Mandatory=$True)]
[String]$ToolRepo
)
$ymlFiles = Get-ChildItem -Path $RepoRoot -File -Include *.yml -Recurse
foreach ($file in $ymlFiles)
{
$regex = [Regex]"ref: refs/tags/${ToolRepo}_[\d\.]+"
Write-Host "Operating on: " $file.FullName
$ymlContent = Get-Content $file.FullName -Raw
$updated = $false
if ($ymlContent -match $regex)
{
$ymlContent = $regex.Replace($ymlContent, "ref: refs/tags/$Tag", 1)
$updated = $true
}
if ($updated) {
Write-Host "Updated " $file.FullName
$ymlContent | Set-Content -Path $file.FullName -Force -NoNewline
}
}