Skip to content

Commit 41a2e3d

Browse files
committed
Improve release notes cache validation by major.minor
Updated the logic to check for cached GitHub release notes to match the current major.minor version series using semantic versioning, instead of only matching the full release tag. This ensures that release notes are refreshed only when the major.minor version changes, improving cache efficiency.
1 parent c90423e commit 41a2e3d

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/Tools/GitHub/Invoke-ListGitHubReleaseNotes.ps1

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,31 @@
3232
$Rows = Get-CIPPAzDataTableEntity @Table -filter $Filter
3333

3434
try {
35+
$Latest = $false
3536
if ($Rows) {
3637
$Releases = ConvertFrom-Json -InputObject $Rows.GitHubReleases -Depth 10
37-
if ($Releases.releaseTag -notmatch $global:CippVersion) {
38-
$Releases = $null
38+
$CurrentVersion = [semver]$global:CippVersion
39+
$CurrentMajorMinor = "$($CurrentVersion.Major).$($CurrentVersion.Minor)"
40+
41+
foreach ($Release in $Releases) {
42+
$Version = $Release.releaseTag -replace 'v', ''
43+
try {
44+
$ReleaseVersion = [semver]$Version
45+
$ReleaseMajorMinor = "$($ReleaseVersion.Major).$($ReleaseVersion.Minor)"
46+
47+
# Check if we have cached notes for the current major.minor version series
48+
if ($ReleaseMajorMinor -eq $CurrentMajorMinor) {
49+
$Latest = $true
50+
break
51+
}
52+
} catch {
53+
# Skip invalid semver versions
54+
continue
55+
}
3956
}
4057
}
4158

42-
if (-not $Releases) {
59+
if (-not $Latest) {
4360
$Releases = Invoke-GitHubApiRequest -Path $ReleasePath
4461
$Releases = $Releases | ForEach-Object {
4562
[ordered]@{

0 commit comments

Comments
 (0)