Skip to content

Commit

Permalink
Merge pull request #2502 from JPRuskin/fix-kubernetes
Browse files Browse the repository at this point in the history
  • Loading branch information
AdmiringWorm authored Jul 8, 2024
2 parents 937bacb + 675ea2b commit 9993cf3
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 8 deletions.
17 changes: 10 additions & 7 deletions automatic/kubernetes-cli/update.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@ param($IncludeStream, [switch] $Force)

Import-Module Chocolatey-AU

$changelogs = 'https://raw.githubusercontent.com/kubernetes/kubernetes/master/CHANGELOG/README.md'
$changelogRepository = @{
Owner = 'kubernetes'
Repository = 'kubernetes'
}

function global:au_BeforeUpdate { Get-RemoteFiles -Purge -NoSuffix }

Expand All @@ -27,7 +30,7 @@ function global:au_SearchReplace {
function global:au_GetLatest {
# Only report the supported Kubernetes streams.

$changelogs = (Invoke-WebRequest -Uri $changelogs -UseBasicParsing).content
$changelogs = Get-GitHubRepositoryFileContent @changelogRepository CHANGELOG/README.md

# There is quite a few versions that do not exist on chocolatey.org
# and since the limit of pushed packages is 10, we need to limit the amount
Expand All @@ -42,24 +45,24 @@ function global:au_GetLatest {

foreach ($minor_version in $minor_version_changelogs) {
if ($streams.ContainsKey($minor_version)) {
return
continue
}

$minor_changelog_page = Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/kubernetes/kubernetes/master/CHANGELOG/CHANGELOG-$($minor_version).md"
$url64 = $minor_changelog_page.content `
$minor_changelog_page = Get-GitHubRepositoryFileContent @changelogRepository "CHANGELOG/CHANGELOG-$($minor_version).md"
$url64 = $minor_changelog_page `
| Select-String -Pattern "(?<=\[.+\]\()(?<href>.+/v(?<version>\d+(\.\d+)+)/kubernetes-client-windows-amd64\.tar\.gz)\)" `
| ForEach-Object {$_.Matches.Groups.Where{$_.Name -eq 'href'}.value} `
| Select-Object -First 1

if (!$url64) {
return
continue
}

if ($url64 -match "/v(?<version>\d+(\.\d+)+)/kubernetes-client-windows-amd64.tar.gz") {
$patch_version = $matches.version
}

$url32 = $minor_changelog_page.content `
$url32 = $minor_changelog_page `
| Select-String -Pattern "(?<=\[.+\]\()(?<href>.+/v(?<version>\d+(\.\d+)+)/kubernetes-client-windows-386\.tar\.gz)\)" `
| ForEach-Object {$_.Matches.Groups.Where{$_.Name -eq 'href'}.value} `
| Select-Object -First 1
Expand Down
2 changes: 1 addition & 1 deletion scripts/Get-GitHubRelease.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
[Parameter(Mandatory, Position = 1)]
[string]$Name,

# The Name of the tag to get the relase for. Will default to the latest release.
# The Name of the tag to get the release for. Will default to the latest release.
[string]$TagName,

# GitHub token, used to reduce rate-limiting or access private repositories (needs repo scope)
Expand Down
65 changes: 65 additions & 0 deletions scripts/Get-GitHubRepositoryFileContent.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
function Get-GitHubRepositoryFileContent {
<#
.Synopsis
Returns the content of a given file in a repository via the REST API
.Link
https://docs.github.com/en/rest/repos/contents?apiVersion=2022-11-28
.Example
Get-GitHubRepositoryFileContent Kubernetes Kubernetes CHANGELOG/README.md
.Notes
Seems to be a lot faster than IWRing raw files.
#>
[CmdletBinding()]
param(
# The owner of the repository
[Parameter(Mandatory)]
[string]$Owner,

# The repository containing the file
[Parameter(Mandatory)]
[string]$Repository,

# The path to the file within the repository
[Parameter(ValueFromPipeline)]
[string]$Path,

# The branch, tag, or reference to get the content from. Defaults to the repository's default branch.
[Alias('ref', 'Tag')]
[string]$Branch,

# Returns the raw response
[switch]$Raw
)
process {
$restArgs = @{
Uri = "https://api.github.com/repos/$($Owner)/$($Repository)/contents/$($Path.TrimStart('/'))"
Headers = @{
'Accept' = 'application/vnd.github+json'
'X-GitHub-Api-Version' = '2022-11-28'
}
}
if ($Branch) {
$restArgs.Body = @{ref = $Branch}
}
if ($env:github_api_key) {
$restArgs.Headers.Authorization = "Bearer $($env:github_api_key)"
}

$Result = Invoke-RestMethod @restArgs -UseBasicParsing

if ($Raw) {
$Result
} elseif ($Result.encoding -eq 'base64') {
# Assumption made about the file being UTF8, here
[System.Text.Encoding]::UTF8.GetString(
[System.Convert]::FromBase64String($Result.content)
)
} else {
Write-Warning "$($Path) encoded as '$($Result.encoding)'"
$Result.content
}
}
}
1 change: 1 addition & 0 deletions scripts/au_extensions.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ $funcs = @(
'Clear-DependenciesList'
'Get-AllGitHubReleases'
'Get-GitHubRelease'
'Get-GitHubRepositoryFileContent'
'Set-DescriptionFromReadme'
'Update-ChangelogVersion'
'Update-OnETagChanged'
Expand Down

0 comments on commit 9993cf3

Please sign in to comment.