Skip to content
Snippets Groups Projects
Commit fe30326e authored by joel.vonderwe's avatar joel.vonderwe Committed by michael.minelli
Browse files

Add allowSonarFailure feature

parent a2f464ef
No related branches found
No related tags found
No related merge requests found
Pipeline #39015 failed
-- AlterTable
ALTER TABLE `Result` ADD COLUMN `sonarGatePass` BOOLEAN NULL;
-- AlterTable
ALTER TABLE `Assignment` ADD COLUMN `allowSonarFailure` BOOLEAN NOT NULL DEFAULT true;
......@@ -45,11 +45,12 @@ model Assignment {
published Boolean @default(false)
language Language @default(other)
useSonar Boolean @default(false)
useSonar Boolean @default(false)
allowSonarFailure Boolean @default(true)
sonarKey String?
sonarCreationInfo Json? @db.Json
sonarCreationInfo Json? @db.Json
sonarGate String?
sonarProfiles Json? @db.Json
sonarProfiles Json? @db.Json
exercises Exercise[]
staff User[]
......@@ -83,13 +84,14 @@ model Exercise {
}
model Result {
exerciseId String @db.Char(36)
dateTime DateTime @default(now())
success Boolean
exitCode Int
commit Json @db.Json
results Json @db.Json
files Json @db.Json
exerciseId String @db.Char(36)
dateTime DateTime @default(now())
success Boolean
sonarGatePass Boolean?
exitCode Int
commit Json @db.Json
results Json @db.Json
files Json @db.Json
exercise Exercise @relation(fields: [exerciseId], references: [id], onDelete: Cascade, onUpdate: Cascade)
......
......@@ -50,6 +50,11 @@ class AssignmentRoutes implements RoutesManager {
notEmpty : true,
isBoolean: true
},
allowSonarFailure: {
trim : true,
notEmpty : false,
isBoolean: true
},
language: {
trim : true,
notEmpty: true,
......@@ -143,9 +148,10 @@ class AssignmentRoutes implements RoutesManager {
private async createAssignment(req: express.Request, res: express.Response) {
const params: {
name: string, members: Array<Gitlab.UserSchema>, template: string, useSonar: string, sonarGate: string, sonarProfiles: string, language: string
name: string, members: Array<Gitlab.UserSchema>, template: string, useSonar: string, sonarGate: string, sonarProfiles: string, language: string, allowSonarFailure: string | undefined
} = req.body;
const useSonar = params.useSonar === 'true';
const allowSonarFailure = params.allowSonarFailure === 'true';
params.members = [ await req.session.profile.gitlabProfile.value, ...params.members ];
params.members = params.members.removeObjectDuplicates(gitlabUser => gitlabUser.id);
......@@ -221,6 +227,7 @@ class AssignmentRoutes implements RoutesManager {
gitlabLastInfo : repository as unknown as Prisma.JsonObject,
gitlabLastInfoDate: new Date(),
useSonar : useSonar,
allowSonarFailure : allowSonarFailure,
sonarKey : sonarProject?.project.key,
sonarCreationInfo : sonarProject?.project,
sonarGate : params.sonarGate,
......@@ -242,6 +249,7 @@ class AssignmentRoutes implements RoutesManager {
}
}
}), 'Database error') as Assignment;
req.session.sendResponse(res, StatusCodes.OK, assignment);
} catch ( error ) {
......
......@@ -64,6 +64,11 @@ class ExerciseRoutes implements RoutesManager {
archiveBase64: {
isBase64: true,
notEmpty: true
},
sonarGatePass: {
trim : true,
notEmpty : false,
isBoolean: true
}
};
......@@ -382,17 +387,19 @@ class ExerciseRoutes implements RoutesManager {
}
private async createResult(req: express.Request, res: express.Response) {
const params: { exitCode: number, commit: Record<string, string>, results: ExerciseResultsFile, files: Array<IFileDirStat>, archiveBase64: string } = req.body;
const params: { exitCode: number, commit: Record<string, string>, results: ExerciseResultsFile, files: Array<IFileDirStat>, archiveBase64: string, sonarGatePass: string | undefined } = req.body;
const exercise: Exercise = req.boundParams.exercise!;
const sonarGate = params.sonarGatePass === "true";
const result = await db.result.create({
data: {
exerciseId: exercise.id,
exitCode : params.exitCode,
success : params.results.success!,
commit : params.commit,
results : params.results as unknown as Prisma.JsonObject,
files : params.files
exerciseId : exercise.id,
exitCode : params.exitCode,
success : params.results.success!,
sonarGatePass: sonarGate,
commit : params.commit,
results : params.results as unknown as Prisma.JsonObject,
files : params.files
}
});
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment