mirror of
https://github.com/Azure/k8s-set-context.git
synced 2026-06-22 23:09:31 +08:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2ffb4da395 | |||
| cbdd016f5e | |||
| 3624a1fc64 | |||
| d1462f8502 | |||
| ab43e1cba5 | |||
| f7b05df5e5 | |||
| 6332864ca0 | |||
| d7e25ce077 | |||
| 8128997447 | |||
| 52d71d28bd |
@@ -331,4 +331,3 @@ node_modules
|
|||||||
coverage
|
coverage
|
||||||
|
|
||||||
# Transpiled JS
|
# Transpiled JS
|
||||||
lib/
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ Refer to the [action metadata file](./action.yml) for details about inputs. Note
|
|||||||
### Kubeconfig approach
|
### Kubeconfig approach
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- uses: azure/k8s-set-context@v2
|
- uses: azure/k8s-set-context@v3
|
||||||
with:
|
with:
|
||||||
method: kubeconfig
|
method: kubeconfig
|
||||||
kubeconfig: <your kubeconfig>
|
kubeconfig: <your kubeconfig>
|
||||||
@@ -50,7 +50,7 @@ Please refer to documentation on fetching [kubeconfig for any generic K8s cluste
|
|||||||
### Service account approach
|
### Service account approach
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- uses: azure/k8s-set-context@v2
|
- uses: azure/k8s-set-context@v3
|
||||||
with:
|
with:
|
||||||
method: service-account
|
method: service-account
|
||||||
k8s-url: <URL of the cluster's API server>
|
k8s-url: <URL of the cluster's API server>
|
||||||
@@ -74,7 +74,7 @@ kubectl get secret <service-account-secret-name> -n <namespace> -o yaml
|
|||||||
### Service account approach for arc cluster
|
### Service account approach for arc cluster
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- uses: azure/k8s-set-context@v2
|
- uses: azure/k8s-set-context@v3
|
||||||
with:
|
with:
|
||||||
method: service-account
|
method: service-account
|
||||||
cluster-type: arc
|
cluster-type: arc
|
||||||
@@ -86,7 +86,7 @@ kubectl get secret <service-account-secret-name> -n <namespace> -o yaml
|
|||||||
### Service principal approach for arc cluster
|
### Service principal approach for arc cluster
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- uses: azure/k8s-set-context@v2
|
- uses: azure/k8s-set-context@v3
|
||||||
with:
|
with:
|
||||||
method: service-principal
|
method: service-principal
|
||||||
cluster-type: arc
|
cluster-type: arc
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
if (require.main !== module) {
|
||||||
|
throw new Error('This file should not be required');
|
||||||
|
}
|
||||||
|
|
||||||
|
var childProcess = require('child_process');
|
||||||
|
var fs = require('fs');
|
||||||
|
|
||||||
|
var paramFilePath = process.argv[2];
|
||||||
|
|
||||||
|
var serializedParams = fs.readFileSync(paramFilePath, 'utf8');
|
||||||
|
var params = JSON.parse(serializedParams);
|
||||||
|
|
||||||
|
var cmd = params.command;
|
||||||
|
var execOptions = params.execOptions;
|
||||||
|
var pipe = params.pipe;
|
||||||
|
var stdoutFile = params.stdoutFile;
|
||||||
|
var stderrFile = params.stderrFile;
|
||||||
|
|
||||||
|
var c = childProcess.exec(cmd, execOptions, function (err) {
|
||||||
|
if (!err) {
|
||||||
|
process.exitCode = 0;
|
||||||
|
} else if (err.code === undefined) {
|
||||||
|
process.exitCode = 1;
|
||||||
|
} else {
|
||||||
|
process.exitCode = err.code;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var stdoutStream = fs.createWriteStream(stdoutFile);
|
||||||
|
var stderrStream = fs.createWriteStream(stderrFile);
|
||||||
|
|
||||||
|
c.stdout.pipe(stdoutStream);
|
||||||
|
c.stderr.pipe(stderrStream);
|
||||||
|
c.stdout.pipe(process.stdout);
|
||||||
|
c.stderr.pipe(process.stderr);
|
||||||
|
|
||||||
|
if (pipe) {
|
||||||
|
c.stdin.end(pipe);
|
||||||
|
}
|
||||||
+192074
File diff suppressed because one or more lines are too long
Generated
+18
-18
@@ -3233,9 +3233,9 @@
|
|||||||
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
|
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
|
||||||
},
|
},
|
||||||
"node_modules/json5": {
|
"node_modules/json5": {
|
||||||
"version": "2.2.1",
|
"version": "2.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
|
||||||
"integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
|
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"json5": "lib/cli.js"
|
"json5": "lib/cli.js"
|
||||||
@@ -3418,9 +3418,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/minimatch": {
|
"node_modules/minimatch": {
|
||||||
"version": "3.0.4",
|
"version": "3.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
||||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"brace-expansion": "^1.1.7"
|
"brace-expansion": "^1.1.7"
|
||||||
},
|
},
|
||||||
@@ -3786,9 +3786,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/qs": {
|
"node_modules/qs": {
|
||||||
"version": "6.5.2",
|
"version": "6.5.3",
|
||||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
|
||||||
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
|
"integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.6"
|
"node": ">=0.6"
|
||||||
}
|
}
|
||||||
@@ -7095,9 +7095,9 @@
|
|||||||
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
|
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
|
||||||
},
|
},
|
||||||
"json5": {
|
"json5": {
|
||||||
"version": "2.2.1",
|
"version": "2.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
|
||||||
"integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
|
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"jsonpath-plus": {
|
"jsonpath-plus": {
|
||||||
@@ -7232,9 +7232,9 @@
|
|||||||
"integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="
|
"integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="
|
||||||
},
|
},
|
||||||
"minimatch": {
|
"minimatch": {
|
||||||
"version": "3.0.4",
|
"version": "3.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
||||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"brace-expansion": "^1.1.7"
|
"brace-expansion": "^1.1.7"
|
||||||
}
|
}
|
||||||
@@ -7494,9 +7494,9 @@
|
|||||||
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
|
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
|
||||||
},
|
},
|
||||||
"qs": {
|
"qs": {
|
||||||
"version": "6.5.2",
|
"version": "6.5.3",
|
||||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
|
||||||
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
|
"integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA=="
|
||||||
},
|
},
|
||||||
"quick-lru": {
|
"quick-lru": {
|
||||||
"version": "5.1.1",
|
"version": "5.1.1",
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import {getRequiredInputError} from '../tests/util'
|
import {getRequiredInputError} from '../tests/util'
|
||||||
import {run} from './run'
|
import {run} from './action'
|
||||||
import fs from 'fs'
|
import fs from 'fs'
|
||||||
import * as utils from './utils'
|
import * as utils from './utils'
|
||||||
|
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
import * as core from '@actions/core'
|
||||||
|
import * as path from 'path'
|
||||||
|
import * as fs from 'fs'
|
||||||
|
import {Cluster, parseCluster} from './types/cluster'
|
||||||
|
import {setContext, getKubeconfig} from './utils'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the Kubernetes context based on supplied action inputs
|
||||||
|
*/
|
||||||
|
export async function run() {
|
||||||
|
// get inputs
|
||||||
|
const clusterType: Cluster | undefined = parseCluster(
|
||||||
|
core.getInput('cluster-type', {
|
||||||
|
required: true
|
||||||
|
})
|
||||||
|
)
|
||||||
|
const runnerTempDirectory: string = process.env['RUNNER_TEMP']
|
||||||
|
const kubeconfigPath: string = path.join(
|
||||||
|
runnerTempDirectory,
|
||||||
|
`kubeconfig_${Date.now()}`
|
||||||
|
)
|
||||||
|
|
||||||
|
// get kubeconfig and update context
|
||||||
|
const kubeconfig: string = await getKubeconfig(clusterType)
|
||||||
|
const kubeconfigWithContext: string = setContext(kubeconfig)
|
||||||
|
|
||||||
|
// output kubeconfig
|
||||||
|
core.debug(`Writing kubeconfig contents to ${kubeconfigPath}`)
|
||||||
|
fs.writeFileSync(kubeconfigPath, kubeconfigWithContext)
|
||||||
|
fs.chmodSync(kubeconfigPath, '600')
|
||||||
|
core.debug('Setting KUBECONFIG environment variable')
|
||||||
|
core.exportVariable('KUBECONFIG', kubeconfigPath)
|
||||||
|
}
|
||||||
+1
-32
@@ -1,36 +1,5 @@
|
|||||||
|
import {run} from './action'
|
||||||
import * as core from '@actions/core'
|
import * as core from '@actions/core'
|
||||||
import * as path from 'path'
|
|
||||||
import * as fs from 'fs'
|
|
||||||
import {Cluster, parseCluster} from './types/cluster'
|
|
||||||
import {setContext, getKubeconfig} from './utils'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the Kubernetes context based on supplied action inputs
|
|
||||||
*/
|
|
||||||
export async function run() {
|
|
||||||
// get inputs
|
|
||||||
const clusterType: Cluster | undefined = parseCluster(
|
|
||||||
core.getInput('cluster-type', {
|
|
||||||
required: true
|
|
||||||
})
|
|
||||||
)
|
|
||||||
const runnerTempDirectory: string = process.env['RUNNER_TEMP']
|
|
||||||
const kubeconfigPath: string = path.join(
|
|
||||||
runnerTempDirectory,
|
|
||||||
`kubeconfig_${Date.now()}`
|
|
||||||
)
|
|
||||||
|
|
||||||
// get kubeconfig and update context
|
|
||||||
const kubeconfig: string = await getKubeconfig(clusterType)
|
|
||||||
const kubeconfigWithContext: string = setContext(kubeconfig)
|
|
||||||
|
|
||||||
// output kubeconfig
|
|
||||||
core.debug(`Writing kubeconfig contents to ${kubeconfigPath}`)
|
|
||||||
fs.writeFileSync(kubeconfigPath, kubeconfigWithContext)
|
|
||||||
fs.chmodSync(kubeconfigPath, '600')
|
|
||||||
core.debug('Setting KUBECONFIG environment variable')
|
|
||||||
core.exportVariable('KUBECONFIG', kubeconfigPath)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Run the application
|
// Run the application
|
||||||
run().catch(core.setFailed)
|
run().catch(core.setFailed)
|
||||||
|
|||||||
Reference in New Issue
Block a user