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)