- Use more modern TypeScript conventions - Use JavaScript Kubernetes Client - Add unit tests - Add integration tests - Add TypeScript compile verify workflow - Switch codeowners
37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
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().catch(core.setFailed);
|