Load main version from AzDo server #3
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Handle versioning accros branches | |
on: | |
push: | |
# todo: add file paths of the files with version numbers | |
jobs: | |
extension-versioning: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: git-actions/set-user@v1 | |
- name: Prevent branch warnings | |
run: | | |
# config git advice.detachedHead to false | |
git config advice.detachedHead false | |
- name: Get highest version number accross all branches | |
id: get-version | |
shell: pwsh | |
env: | |
AZURE_DEVOPS_CREATE_PAT: ${{ secrets.AZURE_DEVOPS_CREATE_PAT}} | |
run: | | |
# get the last updated version for this extension from the server | |
$output = $(tfx extension show --token $env:AZURE_DEVOPS_CREATE_PAT --vsix $vsix --publisher "RobBos" --extension-id "GH… | |
$lastVersion = ($output.versions | Sort-Object -Property lastUpdated -Descending)[0] | |
Write-Host "Last version: [$($lastVersion.version)] from server" | |
# SemVer code | |
function Parse-SemVer ($version) { | |
$parts = $version.Split('.') | |
return @{ | |
Major = [int]$parts[0] | |
Minor = [int]$parts[1] | |
Patch = [int]$parts[2] | |
} | |
} | |
$highestVersion = @{ | |
Major = 0 | |
Minor = 0 | |
Patch = 0 | |
} | |
# loop over all branches | |
$highestVersion = 0 | |
foreach ($branch in $(git branch -r --format='%(refname:short)')) { | |
# checkout the branch | |
git checkout $branch | |
# get the semantic version number from the version in the dependencyReviewTask/task.json file | |
$version = Get-Content -Path "dependencyReviewTask/task.json" | ConvertFrom-Json | Select-Object -ExpandProperty version | |
Write-Host "Found version: [$version] in branch: [$branch]" | |
# check if the version is semantically higher than the highest version using SemVer | |
if ($version.Major -gt $highestVersion.Major -or | |
($version.Major -eq $highestVersion.Major -and $version.Minor -gt $highestVersion.Minor) -or | |
($version.Major -eq $highestVersion.Major -and $version.Minor -eq $highestVersion.Minor -and $version.Patch -gt $highestVersion.Patch)) | |
{ | |
$highestVersion = $version | |
Write-Host "New highest version from PR task.json: [$($highestVersion.Major).$($highestVersion.Minor).$($highestVersion.Patch)]" | |
} | |
} | |
Write-Host "Highest version: [$($highestVersion.Major).$($highestVersion.Minor).$($highestVersion.Patch)]" |