Skip to content
Snippets Groups Projects
Commit 1d9a5e92 authored by michael.minelli's avatar michael.minelli
Browse files

AssignmentCreation => Add secret in CI/CD env vars

parent 77967b25
No related branches found
No related tags found
No related merge requests found
Pipeline #31766 failed
...@@ -29,30 +29,31 @@ import DojoModelsHelper from '../helpers/DojoModelsHelper'; ...@@ -29,30 +29,31 @@ import DojoModelsHelper from '../helpers/DojoModelsHelper';
import SonarManager from '../managers/SonarManager'; import SonarManager from '../managers/SonarManager';
import SonarProjectCreation from '../shared/types/Sonar/SonarProjectCreation'; import SonarProjectCreation from '../shared/types/Sonar/SonarProjectCreation';
import SharedSonarManager from '../shared/managers/SharedSonarManager'; import SharedSonarManager from '../shared/managers/SharedSonarManager';
import { v4 as uuidv4 } from 'uuid';
class AssignmentRoutes implements RoutesManager { class AssignmentRoutes implements RoutesManager {
private readonly assignmentValidator: ExpressValidator.Schema = { private readonly assignmentValidator: ExpressValidator.Schema = {
name : { name : {
trim : true, trim : true,
notEmpty: true notEmpty: true
}, },
members : { members : {
trim : true, trim : true,
notEmpty : true, notEmpty : true,
customSanitizer: DojoValidators.jsonSanitizer customSanitizer: DojoValidators.jsonSanitizer
}, },
template : { template: {
trim : true, trim : true,
custom : DojoValidators.templateUrlValidator, custom : DojoValidators.templateUrlValidator,
customSanitizer: DojoValidators.templateUrlSanitizer customSanitizer: DojoValidators.templateUrlSanitizer
}, },
useSonar : { useSonar: {
trim : true, trim : true,
notEmpty : true, notEmpty : true,
isBoolean: true, isBoolean: true
}, },
language : { language: {
trim : true, trim : true,
notEmpty: true, notEmpty: true,
custom : DojoValidators.supportedLanguageValidator custom : DojoValidators.supportedLanguageValidator
...@@ -107,11 +108,13 @@ class AssignmentRoutes implements RoutesManager { ...@@ -107,11 +108,13 @@ class AssignmentRoutes implements RoutesManager {
params.members = [ await req.session.profile.gitlabProfile.value, ...params.members ]; params.members = [ await req.session.profile.gitlabProfile.value, ...params.members ];
params.members = params.members.removeObjectDuplicates(gitlabUser => gitlabUser.id); params.members = params.members.removeObjectDuplicates(gitlabUser => gitlabUser.id);
if (useSonar && !(await SharedSonarManager.isSonarSupported())) { if ( useSonar && !(await SharedSonarManager.isSonarSupported()) ) {
return req.session.sendResponse(res, StatusCodes.UNPROCESSABLE_ENTITY, {}, `Sonar integration is not supported`, DojoStatusCode.ASSIGNMENT_CREATION_SONAR_ERROR); return req.session.sendResponse(res, StatusCodes.UNPROCESSABLE_ENTITY, {}, `Sonar integration is not supported`, DojoStatusCode.ASSIGNMENT_CREATION_SONAR_ERROR);
} }
let repository: GitlabRepository; let repository: GitlabRepository;
const secret: string = uuidv4();
try { try {
repository = await GitlabManager.createRepository(params.name, Config.assignment.default.description.replace('{{ASSIGNMENT_NAME}}', params.name), Config.assignment.default.visibility, Config.assignment.default.initReadme, Config.gitlab.group.assignments, Config.assignment.default.sharedRunnersEnabled, Config.assignment.default.wikiEnabled, params.template); repository = await GitlabManager.createRepository(params.name, Config.assignment.default.description.replace('{{ASSIGNMENT_NAME}}', params.name), Config.assignment.default.visibility, Config.assignment.default.initReadme, Config.gitlab.group.assignments, Config.assignment.default.sharedRunnersEnabled, Config.assignment.default.wikiEnabled, params.template);
} catch ( error ) { } catch ( error ) {
...@@ -134,6 +137,9 @@ class AssignmentRoutes implements RoutesManager { ...@@ -134,6 +137,9 @@ class AssignmentRoutes implements RoutesManager {
try { try {
await GitlabManager.protectBranch(repository.id, '*', true, GitlabAccessLevel.DEVELOPER, GitlabAccessLevel.DEVELOPER, GitlabAccessLevel.OWNER); await GitlabManager.protectBranch(repository.id, '*', true, GitlabAccessLevel.DEVELOPER, GitlabAccessLevel.DEVELOPER, GitlabAccessLevel.OWNER);
await GitlabManager.addRepositoryVariable(repository.id, 'DOJO_ASSIGNMENT_NAME', repository.name, false, true);
await GitlabManager.addRepositoryVariable(repository.id, 'DOJO_ASSIGNMENT_SECRET', secret, false, true);
await GitlabManager.addRepositoryBadge(repository.id, Config.gitlab.badges.pipeline.link, Config.gitlab.badges.pipeline.imageUrl, 'Pipeline Status'); await GitlabManager.addRepositoryBadge(repository.id, Config.gitlab.badges.pipeline.link, Config.gitlab.badges.pipeline.imageUrl, 'Pipeline Status');
} catch ( error ) { } catch ( error ) {
return GlobalHelper.repositoryCreationError('Repo params error', error, req, res, DojoStatusCode.ASSIGNMENT_CREATION_GITLAB_ERROR, DojoStatusCode.ASSIGNMENT_CREATION_INTERNAL_ERROR, repository); return GlobalHelper.repositoryCreationError('Repo params error', error, req, res, DojoStatusCode.ASSIGNMENT_CREATION_GITLAB_ERROR, DojoStatusCode.ASSIGNMENT_CREATION_INTERNAL_ERROR, repository);
...@@ -165,11 +171,11 @@ class AssignmentRoutes implements RoutesManager { ...@@ -165,11 +171,11 @@ class AssignmentRoutes implements RoutesManager {
// Create Sonar project // Create Sonar project
let sonarProject: SonarProjectCreation | undefined = undefined; let sonarProject: SonarProjectCreation | undefined = undefined;
if (useSonar) { if ( useSonar ) {
try { try {
sonarProject = await SonarManager.createProjectFromGitlab(repository.id); sonarProject = await SonarManager.createProjectFromGitlab(repository.id);
} catch ( error ) { } catch ( error ) {
logger.error("Sonar project creation error"); logger.error('Sonar project creation error');
logger.error(error); logger.error(error);
return GlobalHelper.repositoryCreationError('Sonar error', error, req, res, DojoStatusCode.ASSIGNMENT_CREATION_SONAR_ERROR, DojoStatusCode.ASSIGNMENT_CREATION_INTERNAL_ERROR, repository); return GlobalHelper.repositoryCreationError('Sonar error', error, req, res, DojoStatusCode.ASSIGNMENT_CREATION_SONAR_ERROR, DojoStatusCode.ASSIGNMENT_CREATION_INTERNAL_ERROR, repository);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment