Skip to content

Commit 13ecad3

Browse files
Fix release candidate (rc) handling (#2134)
* update to detect rc versions * update * add logging * update branch * update branch * delete branch * use force
1 parent 06b2a7e commit 13ecad3

File tree

2 files changed

+58
-17
lines changed

2 files changed

+58
-17
lines changed

.github/workflows/auto-update-Dockerfiles.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,11 @@ jobs:
135135
git add "**/*Dockerfile"
136136
git commit -m "chore: Daily ASP.NET Core version update in Dockerfiles"
137137
138+
# Always delete the remote branch before pushing to avoid stale branch errors
139+
git push origin --delete $remoteBranch 2>$null
140+
138141
# Push local branch to remote branch (force push to consistent remote branch name)
139-
git push --force-with-lease origin "${localBranch}:${remoteBranch}"
142+
git push --force origin "${localBranch}:${remoteBranch}"
140143
141144
# Write the remote branch name to GITHUB_OUTPUT for use in the PR step
142145
Add-Content -Path $env:GITHUB_OUTPUT -Value "BRANCH=$remoteBranch"

LambdaRuntimeDockerfiles/get-latest-aspnet-versions.ps1

Lines changed: 54 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -33,73 +33,111 @@ function Get-LatestAspNetVersion {
3333
# Separate release and preview versions
3434
$releaseVersions = @()
3535
$previewVersions = @()
36+
$rcVersions = @()
3637

3738
foreach ($ver in $versions) {
39+
Write-Host "Processing version: $ver"
3840
if ($ver -match '-preview') {
41+
Write-Host " -> Detected preview version"
3942
$previewVersions += $ver
43+
} elseif ($ver -match '-rc') {
44+
Write-Host " -> Detected rc version"
45+
$rcVersions += $ver
4046
} else {
47+
Write-Host " -> Detected release version"
4148
$releaseVersions += $ver
4249
}
4350
}
4451

4552
# If we have release versions, get the latest
4653
if ($releaseVersions.Count -gt 0) {
4754
$verObjects = @()
48-
4955
foreach ($ver in $releaseVersions) {
56+
Write-Host "Attempting to parse release version: $ver"
5057
try {
5158
$verObj = New-Object PSObject
5259
Add-Member -InputObject $verObj -MemberType NoteProperty -Name "OriginalVersion" -Value $ver
53-
54-
# Convert to Version object for proper comparison
5560
$versionObj = [Version]$ver
5661
Add-Member -InputObject $verObj -MemberType NoteProperty -Name "Version" -Value $versionObj
57-
5862
$verObjects += $verObj
5963
} catch {
60-
Write-Host "Warning: Could not parse version $ver, skipping."
64+
Write-Host "Warning: Could not parse release version $ver, skipping."
6165
}
6266
}
63-
64-
# Sort by version (descending) and get the first one
6567
$sortedVersions = $verObjects | Sort-Object -Property Version -Descending
66-
6768
if ($sortedVersions.Count -gt 0) {
6869
$latestVersion = $sortedVersions[0].OriginalVersion
6970
} else {
7071
$latestVersion = $null
7172
}
7273
}
74+
# Otherwise get the latest rc version
75+
elseif ($rcVersions.Count -gt 0) {
76+
$rcObjs = @()
77+
$maxRcParts = 0
78+
foreach ($ver in $rcVersions) {
79+
Write-Host "Attempting to parse rc version: $ver"
80+
if ($ver -match '^(\d+)\.(\d+)\.(\d+)-rc\.(.+)$') {
81+
Write-Host " -> RC regex matched"
82+
$major = [int]$matches[1]
83+
$minor = [int]$matches[2]
84+
$patch = [int]$matches[3]
85+
$rcParts = $matches[4] -split '\.'
86+
$rcNumbers = $rcParts | ForEach-Object { [int]$_ }
87+
Write-Host " -> RC numeric parts: $($rcNumbers -join ',')"
88+
if ($rcNumbers.Count -gt $maxRcParts) { $maxRcParts = $rcNumbers.Count }
89+
$rcObj = New-Object PSObject
90+
Add-Member -InputObject $rcObj -MemberType NoteProperty -Name "OriginalVersion" -Value $ver
91+
Add-Member -InputObject $rcObj -MemberType NoteProperty -Name "Major" -Value $major
92+
Add-Member -InputObject $rcObj -MemberType NoteProperty -Name "Minor" -Value $minor
93+
Add-Member -InputObject $rcObj -MemberType NoteProperty -Name "Patch" -Value $patch
94+
for ($i = 0; $i -lt $rcNumbers.Count; $i++) {
95+
Add-Member -InputObject $rcObj -MemberType NoteProperty -Name ("RC$i") -Value $rcNumbers[$i]
96+
}
97+
$rcObjs += $rcObj
98+
} else {
99+
Write-Host " -> RC regex did NOT match"
100+
}
101+
}
102+
# Pad missing RC fields with 0 for sorting
103+
foreach ($obj in $rcObjs) {
104+
for ($i = 0; $i -lt $maxRcParts; $i++) {
105+
if (-not ($obj.PSObject.Properties.Name -contains ("RC$i"))) {
106+
Add-Member -InputObject $obj -MemberType NoteProperty -Name ("RC$i") -Value 0
107+
}
108+
}
109+
}
110+
$sortProps = @("Major", "Minor", "Patch") + @(for ($i = 0; $i -lt $maxRcParts; $i++) { "RC$i" })
111+
Write-Host "Sorting RCs by: $($sortProps -join ', ')"
112+
$sortedRCs = $rcObjs | Sort-Object -Property $sortProps -Descending
113+
if ($sortedRCs.Count -gt 0) {
114+
$latestVersion = $sortedRCs[0].OriginalVersion
115+
} else {
116+
$latestVersion = ($rcVersions | Sort-Object)[-1]
117+
}
118+
}
73119
# Otherwise get the latest preview version
74120
elseif ($previewVersions.Count -gt 0) {
75-
# For preview versions like "10.0.0-preview.5.25277.114"
76121
$previewObjs = @()
77-
78122
foreach ($ver in $previewVersions) {
79123
if ($ver -match '(\d+)\.(\d+)\.(\d+)-preview\.(\d+)') {
80124
$major = [int]$matches[1]
81125
$minor = [int]$matches[2]
82126
$patch = [int]$matches[3]
83127
$preview = [int]$matches[4]
84-
85128
$previewObj = New-Object PSObject
86129
Add-Member -InputObject $previewObj -MemberType NoteProperty -Name "OriginalVersion" -Value $ver
87130
Add-Member -InputObject $previewObj -MemberType NoteProperty -Name "Major" -Value $major
88131
Add-Member -InputObject $previewObj -MemberType NoteProperty -Name "Minor" -Value $minor
89132
Add-Member -InputObject $previewObj -MemberType NoteProperty -Name "Patch" -Value $patch
90133
Add-Member -InputObject $previewObj -MemberType NoteProperty -Name "Preview" -Value $preview
91-
92134
$previewObjs += $previewObj
93135
}
94136
}
95-
96-
# Sort by version components
97137
$sortedPreviews = $previewObjs | Sort-Object -Property Major, Minor, Patch, Preview -Descending
98-
99138
if ($sortedPreviews.Count -gt 0) {
100139
$latestVersion = $sortedPreviews[0].OriginalVersion
101140
} else {
102-
# Fallback - just take the last one alphabetically
103141
$latestVersion = ($previewVersions | Sort-Object)[-1]
104142
}
105143
}

0 commit comments

Comments
 (0)