Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/job cancellation orchestrator #56

Merged
merged 12 commits into from
Jul 21, 2024
Prev Previous commit
Next Next commit
fix: notify client of build result in successful cases too
williams-jack committed Jul 20, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
commit 2e92da6328ae20a63add6a6882fafce5360119db
9 changes: 5 additions & 4 deletions orchestrator/packages/image-build-service/src/index.ts
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@ import {
} from "@codegrade-orca/common";
import { getNextImageBuild, handleCompletedImageBuild } from "@codegrade-orca/db";
import { createAndStoreGraderImage, removeStaleImageFiles } from "./process-request";
import { cleanUpDockerFiles, sendJobResultForBuildFail, removeImageFromDockerIfExists, notifyClientOfBuildFail } from "./utils";
import { cleanUpDockerFiles, sendJobResultForBuildFail, removeImageFromDockerIfExists, notifyClientOfBuildResult } from "./utils";

const LOOP_SLEEP_TIME = 5; // Seconds

@@ -28,9 +28,10 @@ const main = async () => {
response_url: nextBuildReq.responseURL,
build_key: nextBuildReq.buildKey
};
await createAndStoreGraderImage(infoAsBuildReq);
const result = await createAndStoreGraderImage(infoAsBuildReq);
await handleCompletedImageBuild(nextBuildReq.dockerfileSHA, true);
console.info(`Successfully build image with SHA ${nextBuildReq.dockerfileSHA}.`);
await notifyClientOfBuildResult(result, infoAsBuildReq);
console.info(`Successfully built image with SHA ${nextBuildReq.dockerfileSHA}.`);
} catch (err) {
if (isImageBuildResult(err) && infoAsBuildReq) {
const cancelledJobInfoList = await handleCompletedImageBuild(infoAsBuildReq.dockerfile_sha_sum, false);
@@ -41,7 +42,7 @@ const main = async () => {
).catch((notifyError) => console.error(notifyError)); // At this point we can't really do anything, but we should at least log out what happened.
}));
}
await notifyClientOfBuildFail(err, infoAsBuildReq).catch((notifyError) => console.error(notifyError));
await notifyClientOfBuildResult(err, infoAsBuildReq).catch((notifyError) => console.error(notifyError));
await cleanUpDockerFiles(infoAsBuildReq.dockerfile_sha_sum);
}
console.error(err);
Original file line number Diff line number Diff line change
@@ -73,9 +73,11 @@ const buildImage = ({ dockerfile_sha_sum }: GraderImageBuildRequest, buildLogs:
logs: buildLogs
});
} else {
// All docker build information, regardless of status code,
// is logged to STDERR.
buildLogs.push({
step,
output: stdout
output: stderr
});
resolve();
}
4 changes: 2 additions & 2 deletions orchestrator/packages/image-build-service/src/utils.ts
Original file line number Diff line number Diff line change
@@ -62,7 +62,7 @@ export const sendJobResultForBuildFail = async (cancelInfo: CancelJobInfo) => {
});
}

export const notifyClientOfBuildFail = async (buildFailure: GraderImageBuildResult, originalReq: GraderImageBuildRequest) => {
export const notifyClientOfBuildResult = async (result: GraderImageBuildResult, originalReq: GraderImageBuildRequest) => {
const { response_url, build_key } = originalReq;
await fetch(response_url, {
method: "POST",
@@ -71,7 +71,7 @@ export const notifyClientOfBuildFail = async (buildFailure: GraderImageBuildResu
"Content-Type": "application/json"
},
body: JSON.stringify({
...buildFailure,
...result,
build_key
})
});