Compare commits

..

3 Commits

Author SHA1 Message Date
David Gamero
812d38ec42 Update README.md 2024-04-15 13:23:57 -04:00
David Gamero
4ebd10de59 Update package.json 2024-04-15 13:23:17 -04:00
David Gamero
8808eff8a7 Update CHANGELOG.md 2024-04-15 13:22:13 -04:00
20 changed files with 1415 additions and 32664 deletions

2
.github/CODEOWNERS vendored
View File

@@ -1 +1 @@
* @Azure/cloud-native-github-action-owners * @Azure/aks-atlanta

View File

@@ -1,18 +0,0 @@
version: 2
updates:
- package-ecosystem: npm
directory: /
schedule:
interval: weekly
groups:
actions:
patterns:
- '*'
- package-ecosystem: github-actions
directory: .github/workflows
schedule:
interval: weekly
groups:
actions:
patterns:
- '*'

View File

@@ -13,7 +13,7 @@ jobs:
# Steps represent a sequence of tasks that will be executed as part of the job # Steps represent a sequence of tasks that will be executed as part of the job
steps: steps:
- uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 #v9.1.0 - uses: actions/stale@v9
name: Setting issue as idle name: Setting issue as idle
with: with:
repo-token: ${{ secrets.GITHUB_TOKEN }} repo-token: ${{ secrets.GITHUB_TOKEN }}
@@ -24,7 +24,7 @@ jobs:
operations-per-run: 100 operations-per-run: 100
exempt-issue-labels: 'backlog' exempt-issue-labels: 'backlog'
- uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 #v9.1.0 - uses: actions/stale@v9
name: Setting PR as idle name: Setting PR as idle
with: with:
repo-token: ${{ secrets.GITHUB_TOKEN }} repo-token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -7,23 +7,15 @@ on:
jobs: jobs:
trigger-integration-tests: trigger-integration-tests:
name: Trigger Integration tests name: Trigger Integration tests
strategy: runs-on: ubuntu-latest
matrix:
os:
- ubuntu-latest
- ubuntu-24.04-arm
- macos-latest # arm
- macos-13 # x64
fail-fast: false
runs-on: ${{ matrix.os }}
env: env:
HELM_3_18_4: 'v3.18.4' HELM_3_8_0: 'v3.8.0'
HELM_3_18_0: 'v3.18.0' HELM_3_7_2: 'v3.7.2'
HELM_NO_V: '3.18.4' HELM_NO_V: '3.5.0'
PR_BASE_REF: ${{ github.event.pull_request.base.ref }} PR_BASE_REF: ${{ github.event.pull_request.base.ref }}
steps: steps:
- name: Check out repository - name: Check out repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@v4
- name: npm install and build - name: npm install and build
id: action-npm-build id: action-npm-build
run: | run: |
@@ -35,41 +27,41 @@ jobs:
- name: Setup helm - name: Setup helm
uses: ./ uses: ./
with: with:
version: ${{ env.HELM_3_18_4 }} version: ${{ env.HELM_3_8_0 }}
- name: Validate helm 3.18.4 - name: Validate helm 3.8.0
run: | run: |
if [[ $(helm version) != *$HELM_3_18_4* ]]; then if [[ $(helm version) != *$HELM_3_8_0* ]]; then
echo "HELM VERSION INCORRECT: HELM VERSION DOES NOT CONTAIN v3.18.4" echo "HELM VERSION INCORRECT: HELM VERSION DOES NOT CONTAIN v3.8.0"
echo "HELM VERSION OUTPUT: $(helm version)" echo "HELM VERSION OUTPUT: $(helm version)"
exit 1 exit 1
else else
echo "HELM VERSION $HELM_3_18_4 INSTALLED SUCCESSFULLY" echo "HELM VERSION $HELM_3_8_0 INSTALLED SUCCESSFULLY"
fi fi
- name: Setup helm 3.18.0 - name: Setup helm 3.7.2
uses: ./ uses: ./
with: with:
version: ${{ env.HELM_3_18_0 }} version: ${{ env.HELM_3_7_2 }}
- name: Validate 3.18.0 - name: Validate 3.7.2
run: | run: |
if [[ $(helm version) != *$HELM_3_18_0* ]]; then if [[ $(helm version) != *$HELM_3_7_2* ]]; then
echo "HELM VERSION INCORRECT: HELM VERSION DOES NOT CONTAIN v3.18.0" echo "HELM VERSION INCORRECT: HELM VERSION DOES NOT CONTAIN v3.7.2"
echo "HELM VERSION OUTPUT: $(helm version)" echo "HELM VERSION OUTPUT: $(helm version)"
exit 1 exit 1
else else
echo "HELM VERSION $HELM_3_18_0 INSTALLED SUCCESSFULLY" echo "HELM VERSION $HELM_3_7_2 INSTALLED SUCCESSFULLY"
fi fi
- name: Setup helm 3.18.4 with no v in version - name: Setup helm 3.5.0 with no v in version
uses: ./ uses: ./
with: with:
version: ${{ env.HELM_NO_V }} version: ${{ env.HELM_NO_V }}
- name: Validate 3.18.4 without v in version - name: Validate 3.5.0 without v in version
run: | run: |
if [[ $(helm version) != *$HELM_NO_V* ]]; then if [[ $(helm version) != *$HELM_NO_V* ]]; then
echo "HELM VERSION INCORRECT: HELM VERSION DOES NOT CONTAIN 3.18.4" echo "HELM VERSION INCORRECT: HELM VERSION DOES NOT CONTAIN v3.5.0"
echo "HELM VERSION OUTPUT: $(helm version)" echo "HELM VERSION OUTPUT: $(helm version)"
exit 1 exit 1
else else
echo "HELM VERSION $HELM_NO_V INSTALLED SUCCESSFULLY" echo "HELM VERSION $HELM_3_5_0 INSTALLED SUCCESSFULLY"
fi fi
- name: Setup helm latest version - name: Setup helm latest version
uses: ./ uses: ./
@@ -84,8 +76,7 @@ jobs:
--repo helm/helm \ --repo helm/helm \
--exclude-drafts \ --exclude-drafts \
--exclude-pre-releases \ --exclude-pre-releases \
--json name,isLatest \ --limit 1 | awk '{print $4}')
--jq '.[] | select(.isLatest)|.name' | awk '{print $2}')
if [[ $(helm version) != *$HELM_LATEST* ]]; then if [[ $(helm version) != *$HELM_LATEST* ]]; then
echo "HELM VERSION INCORRECT: HELM VERSION DOES NOT CONTAIN $HELM_LATEST" echo "HELM VERSION INCORRECT: HELM VERSION DOES NOT CONTAIN $HELM_LATEST"

View File

@@ -10,7 +10,9 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@v4
- name: Enforce Prettier - name: Enforce Prettier
run: npx prettier --check . uses: actionsx/prettier@v3
with:
args: --check .

View File

@@ -13,6 +13,6 @@ jobs:
permissions: permissions:
actions: read actions: read
contents: write contents: write
uses: Azure/action-release-workflows/.github/workflows/release_js_project.yaml@3c677ba5ab58f5c5c1a6f0cfb176b333b1f27405 # v1.0.3 uses: Azure/action-release-workflows/.github/workflows/release_js_project.yaml@v1
with: with:
changelogPath: ./CHANGELOG.md changelogPath: ./CHANGELOG.md

View File

@@ -7,4 +7,4 @@ on:
jobs: jobs:
tag-and-release: tag-and-release:
uses: OliverMKing/javascript-release-workflow/.github/workflows/tag-and-release.yml@c753e1545b144562237cd1177a95bab21a785cff # main uses: OliverMKing/javascript-release-workflow/.github/workflows/tag-and-release.yml@main

View File

@@ -11,19 +11,9 @@ on: # rebuild any PRs and main branch changes
jobs: jobs:
build: # make sure build/ci works properly build: # make sure build/ci works properly
strategy: runs-on: ubuntu-latest
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: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/checkout@v4
- name: Run L0 tests. - name: Run L0 tests.
run: | run: |

3
.gitignore vendored
View File

@@ -11,6 +11,8 @@ pids
*.seed *.seed
*.pid.lock *.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul # Coverage directory used by tools like istanbul
coverage coverage
@@ -62,3 +64,4 @@ node_modules
coverage coverage
# Transpiled JS # Transpiled JS
lib/

View File

@@ -1,7 +0,0 @@
npm test
npm run format-check || {
echo ""
echo "❌ Formatting check failed."
echo "💡 Run 'npm run format' or 'prettier --write .' to fix formatting issues."
exit 1
}

View File

@@ -1,26 +1,5 @@
# Change Log # 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
- #157 Dependencies Update
- #137 Add dependabot
## [4.2.0] - 2024-04-15 ## [4.2.0] - 2024-04-15
- #124 Fix OS detection and download OS-native archive extension - #124 Fix OS detection and download OS-native archive extension

View File

@@ -7,14 +7,14 @@ Install a specific version of helm binary on the runner.
Acceptable values are latest or any semantic version string like v3.5.0 Use this action in workflow to define which version of helm will be used. v2+ of this action only support Helm3. Acceptable values are latest or any semantic version string like v3.5.0 Use this action in workflow to define which version of helm will be used. v2+ of this action only support Helm3.
```yaml ```yaml
- uses: azure/setup-helm@v4.3.0 - uses: azure/setup-helm@v4.2.0
with: with:
version: '<version>' # default is latest (stable) version: '<version>' # default is latest (stable)
id: install id: install
``` ```
> [!NOTE] > [!NOTE]
> 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. > 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.
The cached helm binary path is prepended to the PATH environment variable as well as stored in the helm-path output variable. 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 Refer to the action metadata file for details about all the inputs https://github.com/Azure/setup-helm/blob/master/action.yml

30268
lib/index.js

File diff suppressed because one or more lines are too long

3542
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,35 +1,34 @@
{ {
"name": "setuphelm", "name": "setuphelm",
"version": "4.3.1", "version": "4.2.0",
"private": true, "private": true,
"description": "Setup helm", "description": "Setup helm",
"author": "Anumita Shenoy", "author": "Anumita Shenoy",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@actions/core": "^1.11.1", "@actions/core": "^1.10.0",
"@actions/exec": "^1.1.1", "@actions/exec": "^1.1.1",
"@actions/io": "^1.1.2", "@actions/io": "^1.1.2",
"@actions/tool-cache": "2.0.2", "@actions/tool-cache": "2.0.1",
"@octokit/action": "^8.0.2", "@octokit/action": "^6.0.7",
"semver": "^7.7.2" "semver": "^7.5.4"
}, },
"main": "lib/index.js", "main": "lib/index.js",
"scripts": { "scripts": {
"build": "ncc build src/index.ts -o lib", "prebuild": "npm i ncc",
"build": "ncc build src/run.ts -o lib",
"test": "jest", "test": "jest",
"test-coverage": "jest --coverage", "test-coverage": "jest --coverage",
"format": "prettier --write .", "format": "prettier --write .",
"format-check": "prettier --check .", "format-check": "prettier --check ."
"prepare": "husky"
}, },
"devDependencies": { "devDependencies": {
"@types/jest": "^30.0.0", "@types/jest": "^29.5.11",
"@types/node": "^24.2.1", "@types/node": "^20.11.8",
"@vercel/ncc": "^0.38.3", "@vercel/ncc": "^0.38.1",
"husky": "^9.1.7", "jest": "^29.7.0",
"jest": "^30.0.5", "prettier": "^3.2.5",
"prettier": "^3.6.2", "ts-jest": "^29.1.2",
"ts-jest": "^29.4.1", "typescript": "^5.3.3"
"typescript": "^5.9.2"
} }
} }

View File

@@ -1,4 +0,0 @@
import {run} from './run'
import * as core from '@actions/core'
run().catch(core.setFailed)

View File

@@ -67,7 +67,7 @@ describe('run.ts', () => {
expect(os.arch).toHaveBeenCalled() expect(os.arch).toHaveBeenCalled()
}) })
test('getHelmDownloadURL() - return the URL to download helm for Windows x64', () => { test('getHelmDownloadURL() - return the URL to download helm for Windows', () => {
jest.spyOn(os, 'platform').mockReturnValue('win32') jest.spyOn(os, 'platform').mockReturnValue('win32')
jest.spyOn(os, 'arch').mockReturnValue('x64') jest.spyOn(os, 'arch').mockReturnValue('x64')
@@ -76,15 +76,6 @@ describe('run.ts', () => {
expect(os.platform).toHaveBeenCalled() 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 () => { test('getLatestHelmVersion() - return the latest version of HELM', async () => {
const res = { const res = {
status: 200, status: 200,
@@ -97,7 +88,7 @@ describe('run.ts', () => {
test('getLatestHelmVersion() - return the stable version of HELM when simulating a network error', async () => { test('getLatestHelmVersion() - return the stable version of HELM when simulating a network error', async () => {
const errorMessage: string = 'Network Error' const errorMessage: string = 'Network Error'
global.fetch = jest.fn().mockRejectedValueOnce(new Error(errorMessage)) global.fetch = jest.fn().mockRejectedValueOnce(new Error(errorMessage))
expect(await run.getLatestHelmVersion()).toBe(run.stableHelmVersion) expect(await run.getLatestHelmVersion()).toBe('v3.13.3')
}) })
test('getValidVersion() - return version with v prepended', () => { test('getValidVersion() - return version with v prepended', () => {
@@ -108,20 +99,20 @@ describe('run.ts', () => {
jest.spyOn(fs, 'readdirSync').mockImplementation((file, _) => { jest.spyOn(fs, 'readdirSync').mockImplementation((file, _) => {
if (file == 'mainFolder') if (file == 'mainFolder')
return [ return [
'file1' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>, 'file1' as unknown as fs.Dirent,
'file2' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>, 'file2' as unknown as fs.Dirent,
'folder1' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>, 'folder1' as unknown as fs.Dirent,
'folder2' as unknown as fs.Dirent<Buffer<ArrayBufferLike>> 'folder2' as unknown as fs.Dirent
] ]
if (file == path.join('mainFolder', 'folder1')) if (file == path.join('mainFolder', 'folder1'))
return [ return [
'file11' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>, 'file11' as unknown as fs.Dirent,
'file12' as unknown as fs.Dirent<Buffer<ArrayBufferLike>> 'file12' as unknown as fs.Dirent
] ]
if (file == path.join('mainFolder', 'folder2')) if (file == path.join('mainFolder', 'folder2'))
return [ return [
'file21' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>, 'file21' as unknown as fs.Dirent,
'file22' as unknown as fs.Dirent<Buffer<ArrayBufferLike>> 'file22' as unknown as fs.Dirent
] ]
return [] return []
}) })
@@ -143,20 +134,20 @@ describe('run.ts', () => {
jest.spyOn(fs, 'readdirSync').mockImplementation((file, _) => { jest.spyOn(fs, 'readdirSync').mockImplementation((file, _) => {
if (file == 'mainFolder') if (file == 'mainFolder')
return [ return [
'file1' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>, 'file1' as unknown as fs.Dirent,
'file2' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>, 'file2' as unknown as fs.Dirent,
'folder1' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>, 'folder1' as unknown as fs.Dirent,
'folder2' as unknown as fs.Dirent<Buffer<ArrayBufferLike>> 'folder2' as unknown as fs.Dirent
] ]
if (file == path.join('mainFolder', 'folder1')) if (file == path.join('mainFolder', 'folder1'))
return [ return [
'file11' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>, 'file11' as unknown as fs.Dirent,
'file12' as unknown as fs.Dirent<Buffer<ArrayBufferLike>> 'file12' as unknown as fs.Dirent
] ]
if (file == path.join('mainFolder', 'folder2')) if (file == path.join('mainFolder', 'folder2'))
return [ return [
'file21' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>, 'file21' as unknown as fs.Dirent,
'file22' as unknown as fs.Dirent<Buffer<ArrayBufferLike>> 'file22' as unknown as fs.Dirent
] ]
return [] return []
}) })
@@ -175,8 +166,7 @@ describe('run.ts', () => {
test('findHelm() - change access permissions and find the helm in given directory', () => { test('findHelm() - change access permissions and find the helm in given directory', () => {
jest.spyOn(fs, 'chmodSync').mockImplementation(() => {}) jest.spyOn(fs, 'chmodSync').mockImplementation(() => {})
jest.spyOn(fs, 'readdirSync').mockImplementation((file, _) => { jest.spyOn(fs, 'readdirSync').mockImplementation((file, _) => {
if (file == 'mainFolder') if (file == 'mainFolder') return ['helm.exe' as unknown as fs.Dirent]
return ['helm.exe' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>]
return [] return []
}) })
jest.spyOn(fs, 'statSync').mockImplementation((file) => { jest.spyOn(fs, 'statSync').mockImplementation((file) => {
@@ -213,15 +203,12 @@ describe('run.ts', () => {
const response = JSON.stringify([{tag_name: 'v4.0.0'}]) const response = JSON.stringify([{tag_name: 'v4.0.0'}])
jest.spyOn(fs, 'readFileSync').mockReturnValue(response) jest.spyOn(fs, 'readFileSync').mockReturnValue(response)
jest.spyOn(os, 'platform').mockReturnValue('win32') jest.spyOn(os, 'platform').mockReturnValue('win32')
jest.spyOn(os, 'arch').mockReturnValue('x64')
jest.spyOn(fs, 'chmodSync').mockImplementation(() => {}) jest.spyOn(fs, 'chmodSync').mockImplementation(() => {})
jest.spyOn(toolCache, 'extractZip').mockResolvedValue('extractedPath') jest.spyOn(toolCache, 'extractZip').mockResolvedValue('extractedPath')
jest.spyOn(toolCache, 'cacheDir').mockResolvedValue('pathToCachedDir') jest.spyOn(toolCache, 'cacheDir').mockResolvedValue('pathToCachedDir')
jest jest
.spyOn(fs, 'readdirSync') .spyOn(fs, 'readdirSync')
.mockImplementation((file, _) => [ .mockImplementation((file, _) => ['helm.exe' as unknown as fs.Dirent])
'helm.exe' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>
])
jest.spyOn(fs, 'statSync').mockImplementation((file) => { jest.spyOn(fs, 'statSync').mockImplementation((file) => {
const isDirectory = const isDirectory =
(file as string).indexOf('folder') == -1 ? false : true (file as string).indexOf('folder') == -1 ? false : true
@@ -249,7 +236,6 @@ describe('run.ts', () => {
throw 'Unable to download' throw 'Unable to download'
}) })
jest.spyOn(os, 'platform').mockReturnValue('win32') jest.spyOn(os, 'platform').mockReturnValue('win32')
jest.spyOn(os, 'arch').mockReturnValue('x64')
const downloadUrl = 'https://test.tld/helm-v3.2.1-windows-amd64.zip' const downloadUrl = 'https://test.tld/helm-v3.2.1-windows-amd64.zip'
await expect(run.downloadHelm(downloadBaseURL, 'v3.2.1')).rejects.toThrow( await expect(run.downloadHelm(downloadBaseURL, 'v3.2.1')).rejects.toThrow(
@@ -265,13 +251,10 @@ describe('run.ts', () => {
jest.spyOn(toolCache, 'downloadTool').mockResolvedValue('pathToTool') jest.spyOn(toolCache, 'downloadTool').mockResolvedValue('pathToTool')
jest.spyOn(toolCache, 'extractZip').mockResolvedValue('extractedPath') jest.spyOn(toolCache, 'extractZip').mockResolvedValue('extractedPath')
jest.spyOn(os, 'platform').mockReturnValue('win32') jest.spyOn(os, 'platform').mockReturnValue('win32')
jest.spyOn(os, 'arch').mockReturnValue('x64')
jest.spyOn(fs, 'chmodSync').mockImplementation(() => {}) jest.spyOn(fs, 'chmodSync').mockImplementation(() => {})
jest jest
.spyOn(fs, 'readdirSync') .spyOn(fs, 'readdirSync')
.mockReturnValue([ .mockReturnValue(['helm.exe' as unknown as fs.Dirent])
'helm.exe' as unknown as fs.Dirent<Buffer<ArrayBufferLike>>
])
jest.spyOn(fs, 'statSync').mockImplementation((file) => { jest.spyOn(fs, 'statSync').mockImplementation((file) => {
const isDirectory = const isDirectory =
(file as string).indexOf('folder') == -1 ? false : true (file as string).indexOf('folder') == -1 ? false : true
@@ -295,7 +278,6 @@ describe('run.ts', () => {
jest.spyOn(toolCache, 'downloadTool').mockResolvedValue('pathToTool') jest.spyOn(toolCache, 'downloadTool').mockResolvedValue('pathToTool')
jest.spyOn(toolCache, 'extractZip').mockResolvedValue('extractedPath') jest.spyOn(toolCache, 'extractZip').mockResolvedValue('extractedPath')
jest.spyOn(os, 'platform').mockReturnValue('win32') jest.spyOn(os, 'platform').mockReturnValue('win32')
jest.spyOn(os, 'arch').mockReturnValue('x64')
jest.spyOn(fs, 'chmodSync').mockImplementation() jest.spyOn(fs, 'chmodSync').mockImplementation()
jest.spyOn(fs, 'readdirSync').mockImplementation((file, _) => []) jest.spyOn(fs, 'readdirSync').mockImplementation((file, _) => [])
jest.spyOn(fs, 'statSync').mockImplementation((file) => { jest.spyOn(fs, 'statSync').mockImplementation((file) => {

View File

@@ -1,4 +1,5 @@
// Copyright (c) Microsoft Corporation. // Copyright (c) Microsoft Corporation.
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license. // Licensed under the MIT license.
import * as os from 'os' import * as os from 'os'
@@ -10,7 +11,7 @@ import * as toolCache from '@actions/tool-cache'
import * as core from '@actions/core' import * as core from '@actions/core'
const helmToolName = 'helm' const helmToolName = 'helm'
export const stableHelmVersion = 'v3.18.4' const stableHelmVersion = 'v3.13.3'
export async function run() { export async function run() {
let version = core.getInput('version', {required: true}) let version = core.getInput('version', {required: true})
@@ -25,7 +26,7 @@ export async function run() {
const downloadBaseURL = core.getInput('downloadBaseURL', {required: false}) const downloadBaseURL = core.getInput('downloadBaseURL', {required: false})
core.startGroup(`Installing ${version}`) core.startGroup(`Downloading ${version}`)
const cachedPath = await downloadHelm(downloadBaseURL, version) const cachedPath = await downloadHelm(downloadBaseURL, version)
core.endGroup() core.endGroup()
@@ -87,10 +88,7 @@ export async function downloadHelm(
version: string version: string
): Promise<string> { ): Promise<string> {
let cachedToolpath = toolCache.find(helmToolName, version) let cachedToolpath = toolCache.find(helmToolName, version)
if (cachedToolpath) { if (!cachedToolpath) {
core.info(`Restoring '${version}' from cache`)
} else {
core.info(`Downloading '${version}' from '${baseURL}'`)
let helmDownloadPath let helmDownloadPath
try { try {
helmDownloadPath = await toolCache.downloadTool( helmDownloadPath = await toolCache.downloadTool(
@@ -157,3 +155,5 @@ export var walkSync = function (dir, filelist, fileToFind) {
}) })
return filelist return filelist
} }
run().catch(core.setFailed)