pull/289/head
Frostebite 2021-09-08 23:17:23 +01:00
parent 9a87a67415
commit 66b320318f
7 changed files with 14 additions and 73 deletions

6
dist/index.js vendored
View File

@ -734,8 +734,8 @@ class AWSBuildRunner {
try {
yield ECS.waitFor('tasksRunning', { tasks: [taskArn], cluster }).promise();
}
catch (errorUntyped) {
const error = errorUntyped;
catch (error_) {
const error = error_;
yield new Promise((resolve) => setTimeout(resolve, 3000));
const describeTasks = yield ECS.describeTasks({
tasks: [taskArn],
@ -1609,7 +1609,7 @@ class KubernetesJobSpecFactory {
image: 'alpine',
command: ['/bin/sh'],
args: ['-c', 'echo "test"'],
}
},
],
restartPolicy: 'Never',
},

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -29,7 +29,7 @@ async function run() {
// Set output
await Output.setBuildVersion(buildParameters.buildVersion);
} catch (error) {
core.setFailed(error.message);
core.setFailed((error as Error).message);
}
}

View File

@ -53,13 +53,15 @@ class AWSBuildRunner {
try {
await ECS.waitFor('tasksRunning', { tasks: [taskArn], cluster }).promise();
} catch (error) {
} catch (error_) {
const error = error_ as Error;
await new Promise((resolve) => setTimeout(resolve, 3000));
const describeTasks = await ECS.describeTasks({
tasks: [taskArn],
cluster,
}).promise();
core.info(`Cloud runner job has ended ${describeTasks.tasks?.[0].containers?.[0].lastStatus}`);
core.setFailed(error);
core.error(error);
}

View File

@ -10,7 +10,6 @@ import KubernetesSecret from './kubernetes-secret';
import KubernetesUtilities from './kubernetes-utils';
import waitUntil from 'async-wait-until';
import KubernetesJobSpecFactory from './kubernetes-job-spec-factory';
import KubernetesCleanupCronJob from './kubernetes-cleanup-cronjob';
import KubernetesServiceAccount from './kubernetes-service-account';
class Kubernetes implements CloudRunnerProviderInterface {
@ -60,12 +59,6 @@ class Kubernetes implements CloudRunnerProviderInterface {
);
await KubernetesServiceAccount.createServiceAccount(this.serviceAccountName, this.namespace, this.kubeClient);
await KubernetesCleanupCronJob.createCleanupCronJob(
this.kubeClientBatchBeta,
this.cleanupCronJobName,
this.serviceAccountName,
this.namespace,
);
} catch (error) {
throw error;
}
@ -168,7 +161,6 @@ class Kubernetes implements CloudRunnerProviderInterface {
defaultSecretsArray: { ParameterKey: string; EnvironmentVariable: string; ParameterValue: string }[],
) {
await this.kubeClient.deleteNamespacedPersistentVolumeClaim(this.pvcName, this.namespace);
await KubernetesCleanupCronJob.cleanup(this.kubeClientBatchBeta, this.cleanupCronJobName, this.namespace);
}
}
export default Kubernetes;

View File

@ -1,59 +0,0 @@
import { BatchV1beta1Api, V1beta1CronJob } from '@kubernetes/client-node';
import * as core from '@actions/core';
class KubernetesCleanupCronJob {
static async cleanup(api: BatchV1beta1Api, name: string, namespace: string) {
await api.deleteNamespacedCronJob('name', namespace);
}
static async createCleanupCronJob(
kubeClientBatch: BatchV1beta1Api,
name: string,
serviceAccountName: string,
namespace: string,
) {
try {
const batchJob = new V1beta1CronJob();
batchJob.kind = 'CronJob';
batchJob.metadata = {
name,
labels: {
app: 'unity-builder',
},
};
const spec = {
restartPolicy: 'Never',
serviceAccountName,
containers: [
{
name: 'main',
image: 'bitnami/kubectl',
imagePullPolicy: '',
command: ['/bin/sh'],
args: [
'-c',
`
echo "delete the kubernetes resources"
kubectl get pods
`,
],
},
],
};
const hours = new Date().getUTCHours() + 3;
batchJob.spec = {
schedule: `0 ${hours > 23 ? hours - 23 : hours} * * *`,
jobTemplate: {
spec: {
template: { spec },
},
},
};
core.info('creating cron job');
await kubeClientBatch.createNamespacedCronJob(namespace, batchJob);
core.info('created cron job');
} catch (error) {
throw error;
}
}
}
export default KubernetesCleanupCronJob;

View File

@ -139,6 +139,12 @@ class KubernetesJobSpecFactory {
},
},
},
{
name: 'controller-cleanup',
image: 'alpine',
command: ['/bin/sh'],
args: ['-c', 'echo "test"'],
},
],
restartPolicy: 'Never',
},