fixes
commit
87d8cb3197
|
|
@ -1003,6 +1003,7 @@ class CloudRunner {
|
||||||
if (CloudRunner.buildParameters.githubCheckId === ``) {
|
if (CloudRunner.buildParameters.githubCheckId === ``) {
|
||||||
CloudRunner.buildParameters.githubCheckId = await github_1.default.createGitHubCheck(CloudRunner.buildParameters.buildGuid);
|
CloudRunner.buildParameters.githubCheckId = await github_1.default.createGitHubCheck(CloudRunner.buildParameters.buildGuid);
|
||||||
}
|
}
|
||||||
|
CloudRunner.setupSelectedBuildPlatform();
|
||||||
CloudRunner.defaultSecrets = task_parameter_serializer_1.TaskParameterSerializer.readDefaultSecrets();
|
CloudRunner.defaultSecrets = task_parameter_serializer_1.TaskParameterSerializer.readDefaultSecrets();
|
||||||
CloudRunner.cloudRunnerEnvironmentVariables =
|
CloudRunner.cloudRunnerEnvironmentVariables =
|
||||||
task_parameter_serializer_1.TaskParameterSerializer.createCloudRunnerEnvironmentVariables(buildParameters);
|
task_parameter_serializer_1.TaskParameterSerializer.createCloudRunnerEnvironmentVariables(buildParameters);
|
||||||
|
|
@ -1019,23 +1020,6 @@ class CloudRunner {
|
||||||
core.setOutput(__1.Input.ToEnvVarFormat(`buildArtifact`), `build-${CloudRunner.buildParameters.buildGuid}.tar${CloudRunner.buildParameters.useCompressionStrategy ? '.lz4' : ''}`);
|
core.setOutput(__1.Input.ToEnvVarFormat(`buildArtifact`), `build-${CloudRunner.buildParameters.buildGuid}.tar${CloudRunner.buildParameters.useCompressionStrategy ? '.lz4' : ''}`);
|
||||||
}
|
}
|
||||||
follow_log_stream_service_1.FollowLogStreamService.Reset();
|
follow_log_stream_service_1.FollowLogStreamService.Reset();
|
||||||
if (buildParameters.maxRetainedWorkspaces > 0) {
|
|
||||||
CloudRunner.lockedWorkspace = shared_workspace_locking_1.default.NewWorkspaceName();
|
|
||||||
const result = await shared_workspace_locking_1.default.GetLockedWorkspace(CloudRunner.lockedWorkspace, CloudRunner.buildParameters.buildGuid, CloudRunner.buildParameters);
|
|
||||||
if (result) {
|
|
||||||
cloud_runner_logger_1.default.logLine(`Using retained workspace ${CloudRunner.lockedWorkspace}`);
|
|
||||||
CloudRunner.cloudRunnerEnvironmentVariables = [
|
|
||||||
...CloudRunner.cloudRunnerEnvironmentVariables,
|
|
||||||
{ name: `LOCKED_WORKSPACE`, value: CloudRunner.lockedWorkspace },
|
|
||||||
];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
cloud_runner_logger_1.default.log(`Max retained workspaces reached ${buildParameters.maxRetainedWorkspaces}`);
|
|
||||||
buildParameters.maxRetainedWorkspaces = 0;
|
|
||||||
CloudRunner.lockedWorkspace = ``;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
CloudRunner.setupSelectedBuildPlatform();
|
|
||||||
}
|
}
|
||||||
static setupSelectedBuildPlatform() {
|
static setupSelectedBuildPlatform() {
|
||||||
cloud_runner_logger_1.default.log(`Cloud Runner platform selected ${CloudRunner.buildParameters.providerStrategy}`);
|
cloud_runner_logger_1.default.log(`Cloud Runner platform selected ${CloudRunner.buildParameters.providerStrategy}`);
|
||||||
|
|
@ -1065,6 +1049,22 @@ class CloudRunner {
|
||||||
if (!CloudRunner.buildParameters.isCliMode)
|
if (!CloudRunner.buildParameters.isCliMode)
|
||||||
core.endGroup();
|
core.endGroup();
|
||||||
try {
|
try {
|
||||||
|
if (buildParameters.maxRetainedWorkspaces > 0) {
|
||||||
|
CloudRunner.lockedWorkspace = shared_workspace_locking_1.default.NewWorkspaceName();
|
||||||
|
const result = await shared_workspace_locking_1.default.GetLockedWorkspace(CloudRunner.lockedWorkspace, CloudRunner.buildParameters.buildGuid, CloudRunner.buildParameters);
|
||||||
|
if (result) {
|
||||||
|
cloud_runner_logger_1.default.logLine(`Using retained workspace ${CloudRunner.lockedWorkspace}`);
|
||||||
|
CloudRunner.cloudRunnerEnvironmentVariables = [
|
||||||
|
...CloudRunner.cloudRunnerEnvironmentVariables,
|
||||||
|
{ name: `LOCKED_WORKSPACE`, value: CloudRunner.lockedWorkspace },
|
||||||
|
];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cloud_runner_logger_1.default.log(`Max retained workspaces reached ${buildParameters.maxRetainedWorkspaces}`);
|
||||||
|
buildParameters.maxRetainedWorkspaces = 0;
|
||||||
|
CloudRunner.lockedWorkspace = ``;
|
||||||
|
}
|
||||||
|
}
|
||||||
const content = { ...CloudRunner.buildParameters };
|
const content = { ...CloudRunner.buildParameters };
|
||||||
content.gitPrivateToken = ``;
|
content.gitPrivateToken = ``;
|
||||||
content.unitySerial = ``;
|
content.unitySerial = ``;
|
||||||
|
|
@ -3113,13 +3113,8 @@ class Kubernetes {
|
||||||
defaultSecretsArray) {
|
defaultSecretsArray) {
|
||||||
try {
|
try {
|
||||||
this.buildParameters = buildParameters;
|
this.buildParameters = buildParameters;
|
||||||
const id = __1.BuildParameters.shouldUseRetainedWorkspaceMode(buildParameters)
|
this.cleanupCronJobName = `unity-builder-cronjob-${buildParameters.buildGuid}`;
|
||||||
? cloud_runner_1.default.lockedWorkspace
|
|
||||||
: buildParameters.buildGuid;
|
|
||||||
this.pvcName = `unity-builder-pvc-${id}`;
|
|
||||||
this.cleanupCronJobName = `unity-builder-cronjob-${id}`;
|
|
||||||
this.serviceAccountName = `service-account-${buildParameters.buildGuid}`;
|
this.serviceAccountName = `service-account-${buildParameters.buildGuid}`;
|
||||||
await kubernetes_storage_1.default.createPersistentVolumeClaim(buildParameters, this.pvcName, this.kubeClient, this.namespace);
|
|
||||||
await kubernetes_service_account_1.default.createServiceAccount(this.serviceAccountName, this.namespace, this.kubeClient);
|
await kubernetes_service_account_1.default.createServiceAccount(this.serviceAccountName, this.namespace, this.kubeClient);
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
|
|
@ -3130,6 +3125,11 @@ class Kubernetes {
|
||||||
try {
|
try {
|
||||||
cloud_runner_logger_1.default.log('Cloud Runner K8s workflow!');
|
cloud_runner_logger_1.default.log('Cloud Runner K8s workflow!');
|
||||||
// Setup
|
// Setup
|
||||||
|
const id = __1.BuildParameters.shouldUseRetainedWorkspaceMode(this.buildParameters)
|
||||||
|
? cloud_runner_1.default.lockedWorkspace
|
||||||
|
: this.buildParameters.buildGuid;
|
||||||
|
this.pvcName = `unity-builder-pvc-${id}`;
|
||||||
|
await kubernetes_storage_1.default.createPersistentVolumeClaim(this.buildParameters, this.pvcName, this.kubeClient, this.namespace);
|
||||||
this.buildGuid = buildGuid;
|
this.buildGuid = buildGuid;
|
||||||
this.secretName = `build-credentials-${this.buildGuid}`;
|
this.secretName = `build-credentials-${this.buildGuid}`;
|
||||||
this.jobName = `unity-builder-job-${this.buildGuid}`;
|
this.jobName = `unity-builder-job-${this.buildGuid}`;
|
||||||
|
|
@ -3697,6 +3697,7 @@ class KubernetesTaskRunner {
|
||||||
let shouldReadLogs = true;
|
let shouldReadLogs = true;
|
||||||
let shouldCleanup = true;
|
let shouldCleanup = true;
|
||||||
let sinceTime = ``;
|
let sinceTime = ``;
|
||||||
|
let retriesAfterFinish = 0;
|
||||||
// eslint-disable-next-line no-constant-condition
|
// eslint-disable-next-line no-constant-condition
|
||||||
while (true) {
|
while (true) {
|
||||||
await new Promise((resolve) => setTimeout(resolve, 3000));
|
await new Promise((resolve) => setTimeout(resolve, 3000));
|
||||||
|
|
@ -3711,13 +3712,13 @@ class KubernetesTaskRunner {
|
||||||
}
|
}
|
||||||
let extraFlags = ``;
|
let extraFlags = ``;
|
||||||
extraFlags += (await kubernetes_pods_1.default.IsPodRunning(podName, namespace, kubeClient))
|
extraFlags += (await kubernetes_pods_1.default.IsPodRunning(podName, namespace, kubeClient))
|
||||||
? ` -f -c ${containerName} --timestamps${sinceTime}`
|
? ` -f -c ${containerName}`
|
||||||
: ` --previous`;
|
: ` --previous`;
|
||||||
let lastMessageSeenIncludedInChunk = false;
|
let lastMessageSeenIncludedInChunk = false;
|
||||||
let lastMessageSeen = false;
|
let lastMessageSeen = false;
|
||||||
let logs;
|
let logs;
|
||||||
try {
|
try {
|
||||||
logs = await cloud_runner_system_1.CloudRunnerSystem.Run(`kubectl logs ${podName}${extraFlags}`, false, true);
|
logs = await cloud_runner_system_1.CloudRunnerSystem.Run(`kubectl logs ${podName}${extraFlags} --timestamps${sinceTime}`, false, true);
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
await new Promise((resolve) => setTimeout(resolve, 3000));
|
await new Promise((resolve) => setTimeout(resolve, 3000));
|
||||||
|
|
@ -3726,6 +3727,10 @@ class KubernetesTaskRunner {
|
||||||
if (continueStreaming) {
|
if (continueStreaming) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (retriesAfterFinish < KubernetesTaskRunner.maxRetry) {
|
||||||
|
retriesAfterFinish++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
const splitLogs = logs.split(`\n`);
|
const splitLogs = logs.split(`\n`);
|
||||||
|
|
@ -3794,6 +3799,7 @@ class KubernetesTaskRunner {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
KubernetesTaskRunner.lastReceivedTimestamp = 0;
|
KubernetesTaskRunner.lastReceivedTimestamp = 0;
|
||||||
|
KubernetesTaskRunner.maxRetry = 3;
|
||||||
KubernetesTaskRunner.lastReceivedMessage = ``;
|
KubernetesTaskRunner.lastReceivedMessage = ``;
|
||||||
exports["default"] = KubernetesTaskRunner;
|
exports["default"] = KubernetesTaskRunner;
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -37,6 +37,7 @@ class CloudRunner {
|
||||||
if (CloudRunner.buildParameters.githubCheckId === ``) {
|
if (CloudRunner.buildParameters.githubCheckId === ``) {
|
||||||
CloudRunner.buildParameters.githubCheckId = await GitHub.createGitHubCheck(CloudRunner.buildParameters.buildGuid);
|
CloudRunner.buildParameters.githubCheckId = await GitHub.createGitHubCheck(CloudRunner.buildParameters.buildGuid);
|
||||||
}
|
}
|
||||||
|
CloudRunner.setupSelectedBuildPlatform();
|
||||||
CloudRunner.defaultSecrets = TaskParameterSerializer.readDefaultSecrets();
|
CloudRunner.defaultSecrets = TaskParameterSerializer.readDefaultSecrets();
|
||||||
CloudRunner.cloudRunnerEnvironmentVariables =
|
CloudRunner.cloudRunnerEnvironmentVariables =
|
||||||
TaskParameterSerializer.createCloudRunnerEnvironmentVariables(buildParameters);
|
TaskParameterSerializer.createCloudRunnerEnvironmentVariables(buildParameters);
|
||||||
|
|
@ -58,28 +59,6 @@ class CloudRunner {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
FollowLogStreamService.Reset();
|
FollowLogStreamService.Reset();
|
||||||
if (buildParameters.maxRetainedWorkspaces > 0) {
|
|
||||||
CloudRunner.lockedWorkspace = SharedWorkspaceLocking.NewWorkspaceName();
|
|
||||||
|
|
||||||
const result = await SharedWorkspaceLocking.GetLockedWorkspace(
|
|
||||||
CloudRunner.lockedWorkspace,
|
|
||||||
CloudRunner.buildParameters.buildGuid,
|
|
||||||
CloudRunner.buildParameters,
|
|
||||||
);
|
|
||||||
|
|
||||||
if (result) {
|
|
||||||
CloudRunnerLogger.logLine(`Using retained workspace ${CloudRunner.lockedWorkspace}`);
|
|
||||||
CloudRunner.cloudRunnerEnvironmentVariables = [
|
|
||||||
...CloudRunner.cloudRunnerEnvironmentVariables,
|
|
||||||
{ name: `LOCKED_WORKSPACE`, value: CloudRunner.lockedWorkspace },
|
|
||||||
];
|
|
||||||
} else {
|
|
||||||
CloudRunnerLogger.log(`Max retained workspaces reached ${buildParameters.maxRetainedWorkspaces}`);
|
|
||||||
buildParameters.maxRetainedWorkspaces = 0;
|
|
||||||
CloudRunner.lockedWorkspace = ``;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
CloudRunner.setupSelectedBuildPlatform();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static setupSelectedBuildPlatform() {
|
private static setupSelectedBuildPlatform() {
|
||||||
|
|
@ -114,6 +93,27 @@ class CloudRunner {
|
||||||
);
|
);
|
||||||
if (!CloudRunner.buildParameters.isCliMode) core.endGroup();
|
if (!CloudRunner.buildParameters.isCliMode) core.endGroup();
|
||||||
try {
|
try {
|
||||||
|
if (buildParameters.maxRetainedWorkspaces > 0) {
|
||||||
|
CloudRunner.lockedWorkspace = SharedWorkspaceLocking.NewWorkspaceName();
|
||||||
|
|
||||||
|
const result = await SharedWorkspaceLocking.GetLockedWorkspace(
|
||||||
|
CloudRunner.lockedWorkspace,
|
||||||
|
CloudRunner.buildParameters.buildGuid,
|
||||||
|
CloudRunner.buildParameters,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (result) {
|
||||||
|
CloudRunnerLogger.logLine(`Using retained workspace ${CloudRunner.lockedWorkspace}`);
|
||||||
|
CloudRunner.cloudRunnerEnvironmentVariables = [
|
||||||
|
...CloudRunner.cloudRunnerEnvironmentVariables,
|
||||||
|
{ name: `LOCKED_WORKSPACE`, value: CloudRunner.lockedWorkspace },
|
||||||
|
];
|
||||||
|
} else {
|
||||||
|
CloudRunnerLogger.log(`Max retained workspaces reached ${buildParameters.maxRetainedWorkspaces}`);
|
||||||
|
buildParameters.maxRetainedWorkspaces = 0;
|
||||||
|
CloudRunner.lockedWorkspace = ``;
|
||||||
|
}
|
||||||
|
}
|
||||||
const content = { ...CloudRunner.buildParameters };
|
const content = { ...CloudRunner.buildParameters };
|
||||||
content.gitPrivateToken = ``;
|
content.gitPrivateToken = ``;
|
||||||
content.unitySerial = ``;
|
content.unitySerial = ``;
|
||||||
|
|
|
||||||
|
|
@ -93,18 +93,8 @@ class Kubernetes implements ProviderInterface {
|
||||||
) {
|
) {
|
||||||
try {
|
try {
|
||||||
this.buildParameters = buildParameters;
|
this.buildParameters = buildParameters;
|
||||||
const id = BuildParameters.shouldUseRetainedWorkspaceMode(buildParameters)
|
this.cleanupCronJobName = `unity-builder-cronjob-${buildParameters.buildGuid}`;
|
||||||
? CloudRunner.lockedWorkspace
|
|
||||||
: buildParameters.buildGuid;
|
|
||||||
this.pvcName = `unity-builder-pvc-${id}`;
|
|
||||||
this.cleanupCronJobName = `unity-builder-cronjob-${id}`;
|
|
||||||
this.serviceAccountName = `service-account-${buildParameters.buildGuid}`;
|
this.serviceAccountName = `service-account-${buildParameters.buildGuid}`;
|
||||||
await KubernetesStorage.createPersistentVolumeClaim(
|
|
||||||
buildParameters,
|
|
||||||
this.pvcName,
|
|
||||||
this.kubeClient,
|
|
||||||
this.namespace,
|
|
||||||
);
|
|
||||||
|
|
||||||
await KubernetesServiceAccount.createServiceAccount(this.serviceAccountName, this.namespace, this.kubeClient);
|
await KubernetesServiceAccount.createServiceAccount(this.serviceAccountName, this.namespace, this.kubeClient);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|
@ -125,6 +115,16 @@ class Kubernetes implements ProviderInterface {
|
||||||
CloudRunnerLogger.log('Cloud Runner K8s workflow!');
|
CloudRunnerLogger.log('Cloud Runner K8s workflow!');
|
||||||
|
|
||||||
// Setup
|
// Setup
|
||||||
|
const id = BuildParameters.shouldUseRetainedWorkspaceMode(this.buildParameters)
|
||||||
|
? CloudRunner.lockedWorkspace
|
||||||
|
: this.buildParameters.buildGuid;
|
||||||
|
this.pvcName = `unity-builder-pvc-${id}`;
|
||||||
|
await KubernetesStorage.createPersistentVolumeClaim(
|
||||||
|
this.buildParameters,
|
||||||
|
this.pvcName,
|
||||||
|
this.kubeClient,
|
||||||
|
this.namespace,
|
||||||
|
);
|
||||||
this.buildGuid = buildGuid;
|
this.buildGuid = buildGuid;
|
||||||
this.secretName = `build-credentials-${this.buildGuid}`;
|
this.secretName = `build-credentials-${this.buildGuid}`;
|
||||||
this.jobName = `unity-builder-job-${this.buildGuid}`;
|
this.jobName = `unity-builder-job-${this.buildGuid}`;
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import KubernetesPods from './kubernetes-pods';
|
||||||
|
|
||||||
class KubernetesTaskRunner {
|
class KubernetesTaskRunner {
|
||||||
static lastReceivedTimestamp: number = 0;
|
static lastReceivedTimestamp: number = 0;
|
||||||
|
static readonly maxRetry: number = 3;
|
||||||
static lastReceivedMessage: string = ``;
|
static lastReceivedMessage: string = ``;
|
||||||
static async runTask(
|
static async runTask(
|
||||||
kubeConfig: KubeConfig,
|
kubeConfig: KubeConfig,
|
||||||
|
|
@ -21,6 +22,7 @@ class KubernetesTaskRunner {
|
||||||
let shouldReadLogs = true;
|
let shouldReadLogs = true;
|
||||||
let shouldCleanup = true;
|
let shouldCleanup = true;
|
||||||
let sinceTime = ``;
|
let sinceTime = ``;
|
||||||
|
let retriesAfterFinish = 0;
|
||||||
// eslint-disable-next-line no-constant-condition
|
// eslint-disable-next-line no-constant-condition
|
||||||
while (true) {
|
while (true) {
|
||||||
await new Promise((resolve) => setTimeout(resolve, 3000));
|
await new Promise((resolve) => setTimeout(resolve, 3000));
|
||||||
|
|
@ -38,7 +40,7 @@ class KubernetesTaskRunner {
|
||||||
}
|
}
|
||||||
let extraFlags = ``;
|
let extraFlags = ``;
|
||||||
extraFlags += (await KubernetesPods.IsPodRunning(podName, namespace, kubeClient))
|
extraFlags += (await KubernetesPods.IsPodRunning(podName, namespace, kubeClient))
|
||||||
? ` -f -c ${containerName} --timestamps${sinceTime}`
|
? ` -f -c ${containerName}`
|
||||||
: ` --previous`;
|
: ` --previous`;
|
||||||
let lastMessageSeenIncludedInChunk = false;
|
let lastMessageSeenIncludedInChunk = false;
|
||||||
let lastMessageSeen = false;
|
let lastMessageSeen = false;
|
||||||
|
|
@ -46,7 +48,11 @@ class KubernetesTaskRunner {
|
||||||
let logs;
|
let logs;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
logs = await CloudRunnerSystem.Run(`kubectl logs ${podName}${extraFlags}`, false, true);
|
logs = await CloudRunnerSystem.Run(
|
||||||
|
`kubectl logs ${podName}${extraFlags} --timestamps${sinceTime}`,
|
||||||
|
false,
|
||||||
|
true,
|
||||||
|
);
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
await new Promise((resolve) => setTimeout(resolve, 3000));
|
await new Promise((resolve) => setTimeout(resolve, 3000));
|
||||||
const continueStreaming = await KubernetesPods.IsPodRunning(podName, namespace, kubeClient);
|
const continueStreaming = await KubernetesPods.IsPodRunning(podName, namespace, kubeClient);
|
||||||
|
|
@ -54,6 +60,11 @@ class KubernetesTaskRunner {
|
||||||
if (continueStreaming) {
|
if (continueStreaming) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (retriesAfterFinish < KubernetesTaskRunner.maxRetry) {
|
||||||
|
retriesAfterFinish++;
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
const splitLogs = logs.split(`\n`);
|
const splitLogs = logs.split(`\n`);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue