mirror of
https://github.com/Azure/setup-helm.git
synced 2026-07-16 13:18:05 +00:00
fix: preserve subpath base URLs in getHelmDownloadURL (#292)
Ensure downloadBaseURL ends with '/' before URL resolution so a subpath mirror (e.g. https://example/kubernetes/helm) is preserved instead of having its last path segment replaced. Fixes downloads for all subpath mirrors.
This commit is contained in:
committed by
GitHub
parent
017211e1b1
commit
eb399fcd4f
@@ -140,6 +140,34 @@ describe('run.ts', () => {
|
|||||||
expect(os.platform).toHaveBeenCalled()
|
expect(os.platform).toHaveBeenCalled()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('getHelmDownloadURL() - preserve a subpath base URL without a trailing slash', () => {
|
||||||
|
vi.mocked(os.platform).mockReturnValue('linux')
|
||||||
|
vi.mocked(os.arch).mockReturnValue('x64')
|
||||||
|
|
||||||
|
const expected =
|
||||||
|
'https://mirror.example/kubernetes/helm/helm-v3.8.0-linux-amd64.tar.gz'
|
||||||
|
expect(
|
||||||
|
run.getHelmDownloadURL(
|
||||||
|
'https://mirror.example/kubernetes/helm',
|
||||||
|
'v3.8.0'
|
||||||
|
)
|
||||||
|
).toBe(expected)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('getHelmDownloadURL() - preserve a subpath base URL with a trailing slash', () => {
|
||||||
|
vi.mocked(os.platform).mockReturnValue('linux')
|
||||||
|
vi.mocked(os.arch).mockReturnValue('x64')
|
||||||
|
|
||||||
|
const expected =
|
||||||
|
'https://mirror.example/kubernetes/helm/helm-v3.8.0-linux-amd64.tar.gz'
|
||||||
|
expect(
|
||||||
|
run.getHelmDownloadURL(
|
||||||
|
'https://mirror.example/kubernetes/helm/',
|
||||||
|
'v3.8.0'
|
||||||
|
)
|
||||||
|
).toBe(expected)
|
||||||
|
})
|
||||||
|
|
||||||
test('getLatestHelmVersion() - return the latest version of HELM', async () => {
|
test('getLatestHelmVersion() - return the latest version of HELM', async () => {
|
||||||
const res = {
|
const res = {
|
||||||
status: 200,
|
status: 200,
|
||||||
|
|||||||
+5
-1
@@ -139,7 +139,11 @@ export function getExecutableExtension(): string {
|
|||||||
|
|
||||||
export function getHelmDownloadURL(baseURL: string, version: string): string {
|
export function getHelmDownloadURL(baseURL: string, version: string): string {
|
||||||
const urlPath = `helm-${version}-${getPlatform()}-${getArch()}.${getArchiveExtension()}`
|
const urlPath = `helm-${version}-${getPlatform()}-${getArch()}.${getArchiveExtension()}`
|
||||||
const url = new URL(urlPath, baseURL)
|
// Ensure the base ends with '/' so a subpath mirror (e.g.
|
||||||
|
// 'https://example/kubernetes/helm') is preserved; otherwise URL resolution
|
||||||
|
// replaces the last path segment and points at the wrong location.
|
||||||
|
const base = baseURL.endsWith('/') ? baseURL : `${baseURL}/`
|
||||||
|
const url = new URL(urlPath, base)
|
||||||
return url.toString()
|
return url.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user