Skip to content
Snippets Groups Projects
Commit 8d20df1a authored by joel.vonderwe's avatar joel.vonderwe
Browse files

Add allowSonarFailure feature

parent 06dda5f3
No related tags found
No related merge requests found
Pipeline #38948 passed
-- AlterTable
ALTER TABLE `Result` ADD COLUMN `sonarGatePass` BOOLEAN NULL;
-- AlterTable
ALTER TABLE `Assignment` ADD COLUMN `allowSonarFailure` BOOLEAN NOT NULL DEFAULT true;
......@@ -37,11 +37,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[]
......@@ -70,13 +71,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)
......
......@@ -53,6 +53,11 @@ class AssignmentRoutes implements RoutesManager {
notEmpty : true,
isBoolean: true
},
allowSonarFailure: {
trim : true,
notEmpty : false,
isBoolean: true
},
language: {
trim : true,
notEmpty: true,
......@@ -100,9 +105,10 @@ class AssignmentRoutes implements RoutesManager {
private async createAssignment(req: express.Request, res: express.Response) {
const params: {
name: string, members: Array<GitlabUser>, template: string, useSonar: string, sonarGate: string, sonarProfiles: string, language: string
name: string, members: Array<GitlabUser>, 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);
......@@ -205,6 +211,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,
......
......@@ -68,6 +68,11 @@ class ExerciseRoutes implements RoutesManager {
archiveBase64: {
isBase64: true,
notEmpty: true
},
sonarGatePass: {
trim : true,
notEmpty : false,
isBoolean: true
}
};
......@@ -278,17 +283,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