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 branches found
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;
......@@ -38,6 +38,7 @@ model Assignment {
language Language @default(other)
useSonar Boolean @default(false)
allowSonarFailure Boolean @default(true)
sonarKey String?
sonarCreationInfo Json? @db.Json
sonarGate String?
......@@ -73,6 +74,7 @@ model Result {
exerciseId String @db.Char(36)
dateTime DateTime @default(now())
success Boolean
sonarGatePass Boolean?
exitCode Int
commit Json @db.Json
results Json @db.Json
......
......@@ -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,14 +283,16 @@ 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!,
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