Compare commits

...

9 Commits

Author SHA1 Message Date
Vidya Reddy
2caaa2f023 updated the description 2022-08-06 09:33:46 +05:30
Vidya Reddy
79266a2b40 fixes 2022-08-04 12:08:02 +05:30
Vidya Reddy
6b0e7a31f6 added runner info to bug report 2022-08-03 12:27:53 +05:30
Vidya Reddy
85664e9295 Added the bug report and feature req form 2022-08-02 12:06:37 +05:30
Oliver King
f850d12cb3 Fix [object Object] version bug (#88)
* fix auth

* fix tag bug
2022-07-25 13:53:22 -04:00
Oliver King
17cd77473c fix auth (#86) 2022-07-25 13:13:50 -04:00
Oliver King
484a64052d Swap to GraphQL and add logging (#83)
* swap to graphql

* add logs

* swap to group log

* fix test
2022-07-11 10:12:11 -04:00
Bert Roos
6e32762c2e Minor spelling correction in README.md (#81) 2022-07-06 10:45:43 -04:00
Vidya Reddy
17c21ab68c upgrade ncc version (#82)
* upgrade ncc version

* Clear and verify npm cache

Co-authored-by: Vidya Reddy <vidyareddy@microsoft.com>
2022-07-05 10:17:02 -07:00
9 changed files with 1134 additions and 900 deletions

View File

@@ -0,0 +1,28 @@
name: Bug Report
description: File a bug report, we will respond to this thread with any questions.
title: 'Bug: '
labels: ['bug', 'triage']
assignees: '@Azure/aks-atlanta'
body:
- type: input
id: What-happened
attributes:
label: What happened?
description: Tell us what happened and how is it different form the expected?
placeholder: Tell us what you see!
validations:
required: true
- type: input
id: Runner
attributes:
label: Runner
description: What runner are you using?
placeholder: Mention the runner info (self-hosted, operating system)
validations:
required: true
- type: input
id: Logs
attributes:
label: Relevant log output
description: Run in debug mode for the most verbose logs. Please feel free to attach a screenshot of the logs
render: shell

6
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,6 @@
blank_issues_enabled: false
contact_links:
- name: GitHub Action "aks-set-context" Support
url: https://github.com/Azure/aks-set-context
security: https://github.com/Azure/aks-set-context/blob/main/SECURITY.md
about: Please ask and answer questions here.

View File

@@ -0,0 +1,13 @@
name: Feature Request
description: File a Feature Request form, we will respond to this thread with any questions.
title: 'Feature Request: '
labels: ['Feature']
assignees: '@Azure/aks-atlanta'
body:
- type: input
id: Feature request
attributes:
label: Feature request
description: Provide example functionality and links to relevant docs
validations:
required: true

View File

@@ -4,19 +4,22 @@ Install a specific version of helm binary on the runner.
## Example ## Example
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 and v3 of this action only supports 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 and v3 of this action only support Helm3.
```yaml ```yaml
- uses: azure/setup-helm@v3 - uses: azure/setup-helm@v3
with: with:
version: '<version>' # default is latest stable version: '<version>' # default is latest (stable)
token: ${{ secrets.GITHUB_TOKEN }} # only needed if version is 'latest'
id: install id: install
``` ```
> Note: When using latest version you might hit the GitHub GraphQL API hourly rate limit of 5,000. The action will then return the hardcoded default stable version (currently v3.9.0). If you rely on a certain version higher than the default, you should 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
# Contributing ## Contributing
This project welcomes contributions and suggestions. Most contributions require you to agree to a This project welcomes contributions and suggestions. Most contributions require you to agree to a
Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us

View File

@@ -5,6 +5,9 @@ inputs:
description: 'Version of helm' description: 'Version of helm'
required: true required: true
default: 'latest' default: 'latest'
token:
description: GitHub token. Required only if 'version' == 'latest'
required: false
outputs: outputs:
helm-path: helm-path:
description: 'Path to the cached helm binary' description: 'Path to the cached helm binary'

1896
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -10,6 +10,7 @@
"@actions/exec": "^1.0.0", "@actions/exec": "^1.0.0",
"@actions/io": "^1.0.0", "@actions/io": "^1.0.0",
"@actions/tool-cache": "1.1.2", "@actions/tool-cache": "1.1.2",
"@octokit/auth-action": "^2.0.0",
"@octokit/graphql": "^4.6.1", "@octokit/graphql": "^4.6.1",
"semver": "^6.1.0" "semver": "^6.1.0"
}, },
@@ -24,7 +25,7 @@
"devDependencies": { "devDependencies": {
"@types/jest": "^26.0.0", "@types/jest": "^26.0.0",
"@types/node": "^12.0.10", "@types/node": "^12.0.10",
"@vercel/ncc": "^0.33.1", "@vercel/ncc": "^0.34.0",
"jest": "^26.0.1", "jest": "^26.0.1",
"ts-jest": "^26.0.0", "ts-jest": "^26.0.0",
"typescript": "^3.5.2" "typescript": "^3.5.2"

View File

@@ -74,12 +74,8 @@ describe('run.ts', () => {
expect(os.type).toBeCalled() expect(os.type).toBeCalled()
}) })
test('getLatestHelmVersion() - return the latest version of HELM', async () => { test('getLatestHelmVersion() - return the stable version of HELM since its not authenticated', async () => {
try { expect(await run.getLatestHelmVersion()).toBe('v3.9.0')
expect(await run.getLatestHelmVersion()).toBe('v3.8.0')
} catch (e) {
return e
}
}) })
test('walkSync() - return path to the all files matching fileToFind in dir', () => { test('walkSync() - return path to the all files matching fileToFind in dir', () => {

View File

@@ -9,23 +9,27 @@ import * as fs from 'fs'
import * as toolCache from '@actions/tool-cache' import * as toolCache from '@actions/tool-cache'
import * as core from '@actions/core' import * as core from '@actions/core'
import {graphql} from '@octokit/graphql'
import {createActionAuth} from '@octokit/auth-action'
import {create} from 'domain'
const helmToolName = 'helm' const helmToolName = 'helm'
const stableHelmVersion = 'v3.8.0' const stableHelmVersion = 'v3.9.0'
const helmAllReleasesUrl = 'https://api.github.com/repos/helm/helm/releases'
export async function run() { export async function run() {
let version = core.getInput('version', {required: true}) let version = core.getInput('version', {required: true})
if (version !== 'latest' && version[0] !== 'v') { if (version !== 'latest' && version[0] !== 'v') {
core.info('Getting latest Helm version')
version = getValidVersion(version) version = getValidVersion(version)
} }
if (version.toLocaleLowerCase() === 'latest') { if (version.toLocaleLowerCase() === 'latest') {
version = await getLatestHelmVersion() version = await getLatestHelmVersion()
} }
core.debug(util.format('Downloading %s', version)) core.startGroup(`Downloading ${version}`)
let cachedPath = await downloadHelm(version) const cachedPath = await downloadHelm(version)
core.endGroup()
try { try {
if (!process.env['PATH'].startsWith(path.dirname(cachedPath))) { if (!process.env['PATH'].startsWith(path.dirname(cachedPath))) {
@@ -35,41 +39,50 @@ export async function run() {
//do nothing, set as output variable //do nothing, set as output variable
} }
console.log( core.info(`Helm tool version '${version}' has been cached at ${cachedPath}`)
`Helm tool version: '${version}' has been cached at ${cachedPath}`
)
core.setOutput('helm-path', cachedPath) core.setOutput('helm-path', cachedPath)
} }
//Returns version with proper v before it // Prefixes version with v
export function getValidVersion(version: string): string { export function getValidVersion(version: string): string {
return 'v' + version return 'v' + version
} }
// Downloads the helm releases JSON and parses all the recent versions of helm from it. // Gets the latest helm version or returns a default stable if getting latest fails
// Defaults to sending stable helm version if none are valid or if it fails
export async function getLatestHelmVersion(): Promise<string> { export async function getLatestHelmVersion(): Promise<string> {
const helmJSONPath: string = await toolCache.downloadTool(helmAllReleasesUrl)
try { try {
const helmJSON = JSON.parse(fs.readFileSync(helmJSONPath, 'utf-8')) const auth = createActionAuth()
for (let i in helmJSON) { const graphqlAuthenticated = graphql.defaults({
if (isValidVersion(helmJSON[i].tag_name)) { request: {hook: auth.hook}
return helmJSON[i].tag_name })
} const {repository} = await graphqlAuthenticated(
} `
{
repository(name: "helm", owner: "helm") {
releases(last: 100) {
nodes {
tagName
}
}
}
}
`
)
const releases: string[] = repository.releases.nodes
.reverse()
.map((node: {tagName: string}) => node.tagName)
const latestValidRelease = releases.find((tag) => isValidVersion(tag))
if (latestValidRelease) return latestValidRelease
} catch (err) { } catch (err) {
core.warning( core.warning(
util.format( `Error while fetching latest Helm release: ${err.toString()}. Using default version ${stableHelmVersion}`
'Error while fetching the latest Helm release. Error: %s. Using default Helm version %s',
err.toString(),
stableHelmVersion
)
) )
return stableHelmVersion return stableHelmVersion
} }
core.warning(
`Could not find valid release. Using default version ${stableHelmVersion}`
)
return stableHelmVersion return stableHelmVersion
} }
@@ -135,10 +148,9 @@ export async function downloadHelm(version: string): Promise<string> {
) )
} catch (exception) { } catch (exception) {
throw new Error( throw new Error(
util.format( `Failed to download Helm from location ${getHelmDownloadURL(
'Failed to download Helm from location', version
getHelmDownloadURL(version) )}`
)
) )
} }