mirror of
https://github.com/Azure/setup-helm.git
synced 2025-12-21 06:45:44 +00:00
Compare commits
21 Commits
limit-inte
...
bosesuneha
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ce1e940a75 | ||
|
|
95eab887c3 | ||
|
|
0400c1212d | ||
|
|
56c6cf6081 | ||
|
|
9522c92b52 | ||
|
|
1858547716 | ||
|
|
1e96d927b6 | ||
|
|
11cf983218 | ||
|
|
da792be48c | ||
|
|
35f21158b9 | ||
|
|
9d84ec5754 | ||
|
|
dd78250c1f | ||
|
|
9e7f762d6f | ||
|
|
c096176d63 | ||
|
|
5e7287287e | ||
|
|
fb8fa40706 | ||
|
|
0d097290a8 | ||
|
|
32bc12022d | ||
|
|
51463d68e8 | ||
|
|
aff10941b2 | ||
|
|
a10a5247d8 |
4
.github/workflows/defaultLabels.yml
vendored
4
.github/workflows/defaultLabels.yml
vendored
@@ -13,7 +13,7 @@ jobs:
|
||||
|
||||
# Steps represent a sequence of tasks that will be executed as part of the job
|
||||
steps:
|
||||
- uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 #v9.1.0
|
||||
- uses: actions/stale@5f858e3efba33a5ca4407a664cc011ad407f2008 #v10.1.0
|
||||
name: Setting issue as idle
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -24,7 +24,7 @@ jobs:
|
||||
operations-per-run: 100
|
||||
exempt-issue-labels: 'backlog'
|
||||
|
||||
- uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 #v9.1.0
|
||||
- uses: actions/stale@5f858e3efba33a5ca4407a664cc011ad407f2008 #v10.1.0
|
||||
name: Setting PR as idle
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
54
.github/workflows/integration-tests.yml
vendored
54
.github/workflows/integration-tests.yml
vendored
@@ -7,15 +7,23 @@ on:
|
||||
jobs:
|
||||
trigger-integration-tests:
|
||||
name: Trigger Integration tests
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-latest
|
||||
- ubuntu-24.04-arm
|
||||
- macos-latest # arm
|
||||
- macos-13 # x64
|
||||
fail-fast: false
|
||||
runs-on: ${{ matrix.os }}
|
||||
env:
|
||||
HELM_3_8_0: 'v3.8.0'
|
||||
HELM_3_7_2: 'v3.7.2'
|
||||
HELM_NO_V: '3.5.0'
|
||||
HELM_3_18_4: 'v3.18.4'
|
||||
HELM_3_18_0: 'v3.18.0'
|
||||
HELM_NO_V: '3.18.4'
|
||||
PR_BASE_REF: ${{ github.event.pull_request.base.ref }}
|
||||
steps:
|
||||
- name: Check out repository
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
- name: npm install and build
|
||||
id: action-npm-build
|
||||
run: |
|
||||
@@ -27,41 +35,41 @@ jobs:
|
||||
- name: Setup helm
|
||||
uses: ./
|
||||
with:
|
||||
version: ${{ env.HELM_3_8_0 }}
|
||||
- name: Validate helm 3.8.0
|
||||
version: ${{ env.HELM_3_18_4 }}
|
||||
- name: Validate helm 3.18.4
|
||||
run: |
|
||||
if [[ $(helm version) != *$HELM_3_8_0* ]]; then
|
||||
echo "HELM VERSION INCORRECT: HELM VERSION DOES NOT CONTAIN v3.8.0"
|
||||
if [[ $(helm version) != *$HELM_3_18_4* ]]; then
|
||||
echo "HELM VERSION INCORRECT: HELM VERSION DOES NOT CONTAIN v3.18.4"
|
||||
echo "HELM VERSION OUTPUT: $(helm version)"
|
||||
exit 1
|
||||
else
|
||||
echo "HELM VERSION $HELM_3_8_0 INSTALLED SUCCESSFULLY"
|
||||
echo "HELM VERSION $HELM_3_18_4 INSTALLED SUCCESSFULLY"
|
||||
fi
|
||||
- name: Setup helm 3.7.2
|
||||
- name: Setup helm 3.18.0
|
||||
uses: ./
|
||||
with:
|
||||
version: ${{ env.HELM_3_7_2 }}
|
||||
- name: Validate 3.7.2
|
||||
version: ${{ env.HELM_3_18_0 }}
|
||||
- name: Validate 3.18.0
|
||||
run: |
|
||||
if [[ $(helm version) != *$HELM_3_7_2* ]]; then
|
||||
echo "HELM VERSION INCORRECT: HELM VERSION DOES NOT CONTAIN v3.7.2"
|
||||
if [[ $(helm version) != *$HELM_3_18_0* ]]; then
|
||||
echo "HELM VERSION INCORRECT: HELM VERSION DOES NOT CONTAIN v3.18.0"
|
||||
echo "HELM VERSION OUTPUT: $(helm version)"
|
||||
exit 1
|
||||
else
|
||||
echo "HELM VERSION $HELM_3_7_2 INSTALLED SUCCESSFULLY"
|
||||
echo "HELM VERSION $HELM_3_18_0 INSTALLED SUCCESSFULLY"
|
||||
fi
|
||||
- name: Setup helm 3.5.0 with no v in version
|
||||
- name: Setup helm 3.18.4 with no v in version
|
||||
uses: ./
|
||||
with:
|
||||
version: ${{ env.HELM_NO_V }}
|
||||
- name: Validate 3.5.0 without v in version
|
||||
- name: Validate 3.18.4 without v in version
|
||||
run: |
|
||||
if [[ $(helm version) != *$HELM_NO_V* ]]; then
|
||||
echo "HELM VERSION INCORRECT: HELM VERSION DOES NOT CONTAIN v3.5.0"
|
||||
echo "HELM VERSION INCORRECT: HELM VERSION DOES NOT CONTAIN 3.18.4"
|
||||
echo "HELM VERSION OUTPUT: $(helm version)"
|
||||
exit 1
|
||||
else
|
||||
echo "HELM VERSION $HELM_3_5_0 INSTALLED SUCCESSFULLY"
|
||||
echo "HELM VERSION $HELM_NO_V INSTALLED SUCCESSFULLY"
|
||||
fi
|
||||
- name: Setup helm latest version
|
||||
uses: ./
|
||||
@@ -72,11 +80,7 @@ jobs:
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
HELM_LATEST=$(gh release list \
|
||||
--repo helm/helm \
|
||||
--exclude-drafts \
|
||||
--exclude-pre-releases \
|
||||
--limit 1 | awk '{print $4}')
|
||||
HELM_LATEST=$(curl -s https://get.helm.sh/helm-latest-version)
|
||||
|
||||
if [[ $(helm version) != *$HELM_LATEST* ]]; then
|
||||
echo "HELM VERSION INCORRECT: HELM VERSION DOES NOT CONTAIN $HELM_LATEST"
|
||||
|
||||
2
.github/workflows/prettify-code.yml
vendored
2
.github/workflows/prettify-code.yml
vendored
@@ -10,7 +10,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
|
||||
- name: Enforce Prettier
|
||||
run: npx prettier --check .
|
||||
|
||||
14
.github/workflows/unit-tests.yml
vendored
14
.github/workflows/unit-tests.yml
vendored
@@ -11,9 +11,19 @@ on: # rebuild any PRs and main branch changes
|
||||
|
||||
jobs:
|
||||
build: # make sure build/ci works properly
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-latest
|
||||
- ubuntu-24.04-arm
|
||||
- windows-latest
|
||||
- windows-11-arm
|
||||
- macos-latest # arm
|
||||
- macos-13 # x64
|
||||
fail-fast: false
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
|
||||
- name: Run L0 tests.
|
||||
run: |
|
||||
|
||||
15
CHANGELOG.md
15
CHANGELOG.md
@@ -1,5 +1,20 @@
|
||||
# Change Log
|
||||
|
||||
## [4.3.1] - 2025-08-12
|
||||
|
||||
### Changed
|
||||
|
||||
- #167 [Pinning Action Dependencies for Security and Reliability](https://github.com/Azure/setup-helm/pull/167)
|
||||
- #181 [Fix types, and update node version.](https://github.com/Azure/setup-helm/pull/181)
|
||||
- #191 [chore(tests): Mock arch to make tests pass on arm host](https://github.com/Azure/setup-helm/pull/191)
|
||||
- #192 [chore: remove unnecessary prebuild script](https://github.com/Azure/setup-helm/pull/192)
|
||||
- #203 [Update helm version retrieval to use JSON output for latest version](https://github.com/Azure/setup-helm/pull/203)
|
||||
- #207 [ci(workflows): update helm version to v3.18.4 and add matrix for tests](https://github.com/Azure/setup-helm/pull/207)
|
||||
|
||||
### Added
|
||||
|
||||
- #197 [Add pre-commit hook](https://github.com/Azure/setup-helm/pull/197)
|
||||
|
||||
## [4.3.0] - 2025-02-15
|
||||
|
||||
- #152 feat: log when restoring from cache
|
||||
|
||||
@@ -14,7 +14,7 @@ Acceptable values are latest or any semantic version string like v3.5.0 Use this
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> If something goes wrong with fetching the latest version the action will use the hardcoded default stable version (currently v3.13.3). If you rely on a certain version higher than the default, you should explicitly use that version instead of latest.
|
||||
> If something goes wrong with fetching the latest version the action will use the hardcoded default version (currently v3.18.3). If you rely on a certain version higher than the default, you should explicitly use that version instead of latest.
|
||||
|
||||
The cached helm binary path is prepended to the PATH environment variable as well as stored in the helm-path output variable.
|
||||
Refer to the action metadata file for details about all the inputs https://github.com/Azure/setup-helm/blob/master/action.yml
|
||||
|
||||
1326
package-lock.json
generated
1326
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
15
package.json
15
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "setuphelm",
|
||||
"version": "4.3.0",
|
||||
"version": "4.3.1",
|
||||
"private": true,
|
||||
"description": "Setup helm",
|
||||
"author": "Anumita Shenoy",
|
||||
@@ -11,11 +11,10 @@
|
||||
"@actions/io": "^1.1.2",
|
||||
"@actions/tool-cache": "2.0.2",
|
||||
"@octokit/action": "^8.0.2",
|
||||
"semver": "^7.7.2"
|
||||
"semver": "^7.7.3"
|
||||
},
|
||||
"main": "lib/index.js",
|
||||
"scripts": {
|
||||
"prebuild": "npm i ncc",
|
||||
"build": "ncc build src/index.ts -o lib",
|
||||
"test": "jest",
|
||||
"test-coverage": "jest --coverage",
|
||||
@@ -25,12 +24,12 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jest": "^30.0.0",
|
||||
"@types/node": "^24.0.13",
|
||||
"@vercel/ncc": "^0.38.3",
|
||||
"@types/node": "^24.8.1",
|
||||
"@vercel/ncc": "^0.38.4",
|
||||
"husky": "^9.1.7",
|
||||
"jest": "^30.0.4",
|
||||
"jest": "^30.2.0",
|
||||
"prettier": "^3.6.2",
|
||||
"ts-jest": "^29.4.0",
|
||||
"typescript": "^5.8.3"
|
||||
"ts-jest": "^29.4.5",
|
||||
"typescript": "^5.9.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ describe('run.ts', () => {
|
||||
expect(os.arch).toHaveBeenCalled()
|
||||
})
|
||||
|
||||
test('getHelmDownloadURL() - return the URL to download helm for Windows', () => {
|
||||
test('getHelmDownloadURL() - return the URL to download helm for Windows x64', () => {
|
||||
jest.spyOn(os, 'platform').mockReturnValue('win32')
|
||||
jest.spyOn(os, 'arch').mockReturnValue('x64')
|
||||
|
||||
@@ -76,6 +76,15 @@ describe('run.ts', () => {
|
||||
expect(os.platform).toHaveBeenCalled()
|
||||
})
|
||||
|
||||
test('getHelmDownloadURL() - return the URL to download helm for Windows arm64', () => {
|
||||
jest.spyOn(os, 'platform').mockReturnValue('win32')
|
||||
jest.spyOn(os, 'arch').mockReturnValue('arm64')
|
||||
|
||||
const expected = 'https://test.tld/helm-v3.8.0-windows-arm64.zip'
|
||||
expect(run.getHelmDownloadURL(downloadBaseURL, 'v3.8.0')).toBe(expected)
|
||||
expect(os.platform).toHaveBeenCalled()
|
||||
})
|
||||
|
||||
test('getLatestHelmVersion() - return the latest version of HELM', async () => {
|
||||
const res = {
|
||||
status: 200,
|
||||
@@ -88,7 +97,7 @@ describe('run.ts', () => {
|
||||
test('getLatestHelmVersion() - return the stable version of HELM when simulating a network error', async () => {
|
||||
const errorMessage: string = 'Network Error'
|
||||
global.fetch = jest.fn().mockRejectedValueOnce(new Error(errorMessage))
|
||||
expect(await run.getLatestHelmVersion()).toBe('v3.13.3')
|
||||
expect(await run.getLatestHelmVersion()).toBe(run.stableHelmVersion)
|
||||
})
|
||||
|
||||
test('getValidVersion() - return version with v prepended', () => {
|
||||
@@ -99,20 +108,20 @@ describe('run.ts', () => {
|
||||
jest.spyOn(fs, 'readdirSync').mockImplementation((file, _) => {
|
||||
if (file == 'mainFolder')
|
||||
return [
|
||||
'file1' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>,
|
||||
'file2' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>,
|
||||
'folder1' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>,
|
||||
'folder2' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>
|
||||
'file1' as unknown as fs.Dirent<NonSharedBuffer>,
|
||||
'file2' as unknown as fs.Dirent<NonSharedBuffer>,
|
||||
'folder1' as unknown as fs.Dirent<NonSharedBuffer>,
|
||||
'folder2' as unknown as fs.Dirent<NonSharedBuffer>
|
||||
]
|
||||
if (file == path.join('mainFolder', 'folder1'))
|
||||
return [
|
||||
'file11' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>,
|
||||
'file12' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>
|
||||
'file11' as unknown as fs.Dirent<NonSharedBuffer>,
|
||||
'file12' as unknown as fs.Dirent<NonSharedBuffer>
|
||||
]
|
||||
if (file == path.join('mainFolder', 'folder2'))
|
||||
return [
|
||||
'file21' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>,
|
||||
'file22' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>
|
||||
'file21' as unknown as fs.Dirent<NonSharedBuffer>,
|
||||
'file22' as unknown as fs.Dirent<NonSharedBuffer>
|
||||
]
|
||||
return []
|
||||
})
|
||||
@@ -134,20 +143,20 @@ describe('run.ts', () => {
|
||||
jest.spyOn(fs, 'readdirSync').mockImplementation((file, _) => {
|
||||
if (file == 'mainFolder')
|
||||
return [
|
||||
'file1' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>,
|
||||
'file2' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>,
|
||||
'folder1' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>,
|
||||
'folder2' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>
|
||||
'file1' as unknown as fs.Dirent<NonSharedBuffer>,
|
||||
'file2' as unknown as fs.Dirent<NonSharedBuffer>,
|
||||
'folder1' as unknown as fs.Dirent<NonSharedBuffer>,
|
||||
'folder2' as unknown as fs.Dirent<NonSharedBuffer>
|
||||
]
|
||||
if (file == path.join('mainFolder', 'folder1'))
|
||||
return [
|
||||
'file11' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>,
|
||||
'file12' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>
|
||||
'file11' as unknown as fs.Dirent<NonSharedBuffer>,
|
||||
'file12' as unknown as fs.Dirent<NonSharedBuffer>
|
||||
]
|
||||
if (file == path.join('mainFolder', 'folder2'))
|
||||
return [
|
||||
'file21' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>,
|
||||
'file22' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>
|
||||
'file21' as unknown as fs.Dirent<NonSharedBuffer>,
|
||||
'file22' as unknown as fs.Dirent<NonSharedBuffer>
|
||||
]
|
||||
return []
|
||||
})
|
||||
@@ -167,7 +176,7 @@ describe('run.ts', () => {
|
||||
jest.spyOn(fs, 'chmodSync').mockImplementation(() => {})
|
||||
jest.spyOn(fs, 'readdirSync').mockImplementation((file, _) => {
|
||||
if (file == 'mainFolder')
|
||||
return ['helm.exe' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>]
|
||||
return ['helm.exe' as unknown as fs.Dirent<NonSharedBuffer>]
|
||||
return []
|
||||
})
|
||||
jest.spyOn(fs, 'statSync').mockImplementation((file) => {
|
||||
@@ -204,13 +213,14 @@ describe('run.ts', () => {
|
||||
const response = JSON.stringify([{tag_name: 'v4.0.0'}])
|
||||
jest.spyOn(fs, 'readFileSync').mockReturnValue(response)
|
||||
jest.spyOn(os, 'platform').mockReturnValue('win32')
|
||||
jest.spyOn(os, 'arch').mockReturnValue('x64')
|
||||
jest.spyOn(fs, 'chmodSync').mockImplementation(() => {})
|
||||
jest.spyOn(toolCache, 'extractZip').mockResolvedValue('extractedPath')
|
||||
jest.spyOn(toolCache, 'cacheDir').mockResolvedValue('pathToCachedDir')
|
||||
jest
|
||||
.spyOn(fs, 'readdirSync')
|
||||
.mockImplementation((file, _) => [
|
||||
'helm.exe' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>
|
||||
'helm.exe' as unknown as fs.Dirent<NonSharedBuffer>
|
||||
])
|
||||
jest.spyOn(fs, 'statSync').mockImplementation((file) => {
|
||||
const isDirectory =
|
||||
@@ -239,6 +249,7 @@ describe('run.ts', () => {
|
||||
throw 'Unable to download'
|
||||
})
|
||||
jest.spyOn(os, 'platform').mockReturnValue('win32')
|
||||
jest.spyOn(os, 'arch').mockReturnValue('x64')
|
||||
|
||||
const downloadUrl = 'https://test.tld/helm-v3.2.1-windows-amd64.zip'
|
||||
await expect(run.downloadHelm(downloadBaseURL, 'v3.2.1')).rejects.toThrow(
|
||||
@@ -254,12 +265,11 @@ describe('run.ts', () => {
|
||||
jest.spyOn(toolCache, 'downloadTool').mockResolvedValue('pathToTool')
|
||||
jest.spyOn(toolCache, 'extractZip').mockResolvedValue('extractedPath')
|
||||
jest.spyOn(os, 'platform').mockReturnValue('win32')
|
||||
jest.spyOn(os, 'arch').mockReturnValue('x64')
|
||||
jest.spyOn(fs, 'chmodSync').mockImplementation(() => {})
|
||||
jest
|
||||
.spyOn(fs, 'readdirSync')
|
||||
.mockReturnValue([
|
||||
'helm.exe' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>
|
||||
])
|
||||
.mockReturnValue(['helm.exe' as unknown as fs.Dirent<NonSharedBuffer>])
|
||||
jest.spyOn(fs, 'statSync').mockImplementation((file) => {
|
||||
const isDirectory =
|
||||
(file as string).indexOf('folder') == -1 ? false : true
|
||||
@@ -283,6 +293,7 @@ describe('run.ts', () => {
|
||||
jest.spyOn(toolCache, 'downloadTool').mockResolvedValue('pathToTool')
|
||||
jest.spyOn(toolCache, 'extractZip').mockResolvedValue('extractedPath')
|
||||
jest.spyOn(os, 'platform').mockReturnValue('win32')
|
||||
jest.spyOn(os, 'arch').mockReturnValue('x64')
|
||||
jest.spyOn(fs, 'chmodSync').mockImplementation()
|
||||
jest.spyOn(fs, 'readdirSync').mockImplementation((file, _) => [])
|
||||
jest.spyOn(fs, 'statSync').mockImplementation((file) => {
|
||||
|
||||
@@ -10,7 +10,7 @@ import * as toolCache from '@actions/tool-cache'
|
||||
import * as core from '@actions/core'
|
||||
|
||||
const helmToolName = 'helm'
|
||||
const stableHelmVersion = 'v3.13.3'
|
||||
export const stableHelmVersion = 'v3.18.4'
|
||||
|
||||
export async function run() {
|
||||
let version = core.getInput('version', {required: true})
|
||||
|
||||
Reference in New Issue
Block a user