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

Config => Add repository creation timeout

parent 8b6788b0
No related branches found
No related tags found
No related merge requests found
...@@ -5,7 +5,9 @@ import { Exercise } from '../types/DatabaseTypes'; ...@@ -5,7 +5,9 @@ import { Exercise } from '../types/DatabaseTypes';
import JSON5 from 'json5'; import JSON5 from 'json5';
type ConfigGitlabBadge = { link: string, imageUrl: string } type ConfigGitlabBadge = {
link: string, imageUrl: string
}
class Config { class Config {
...@@ -13,7 +15,11 @@ class Config { ...@@ -13,7 +15,11 @@ class Config {
port: number port: number
}; };
public readonly requestClientValidation: { version: { [client: string]: string } }; // { version: { CLIENT: CONDITION } } public readonly requestClientValidation: {
version: {
[client: string]: string
}
}; // { version: { CLIENT: CONDITION } }
public readonly jwtConfig: { public readonly jwtConfig: {
secret: string; expiresIn: number; secret: string; expiresIn: number;
...@@ -28,15 +34,27 @@ class Config { ...@@ -28,15 +34,27 @@ class Config {
}; };
public readonly gitlab: { public readonly gitlab: {
urls: Array<string>; account: { id: number; username: string; token: string; }; group: { root: number; templates: number; assignments: number; exercises: number; }, badges: { pipeline: ConfigGitlabBadge } urls: Array<string>; repository: {
timeoutAfterCreation: number;
}; account: {
id: number; username: string; token: string;
}; group: {
root: number; templates: number; assignments: number; exercises: number;
}, badges: {
pipeline: ConfigGitlabBadge
}
}; };
public readonly assignment: { public readonly assignment: {
default: { description: string; initReadme: boolean; sharedRunnersEnabled: boolean; visibility: string; wikiEnabled: boolean; template: string }; baseFiles: Array<string>; filename: string default: {
description: string; initReadme: boolean; sharedRunnersEnabled: boolean; visibility: string; wikiEnabled: boolean; template: string
}; baseFiles: Array<string>; filename: string
}; };
public readonly exercise: { public readonly exercise: {
maxSameName: number; resultsFolder: string, pipelineResultsFolder: string; default: { description: string; visibility: string; }; maxSameName: number; resultsFolder: string, pipelineResultsFolder: string; default: {
description: string; visibility: string;
};
}; };
constructor() { constructor() {
...@@ -47,8 +65,7 @@ class Config { ...@@ -47,8 +65,7 @@ class Config {
this.requestClientValidation = JSON5.parse(process.env.REQUEST_CLIENT_VALIDATION || '{"version": {}}'); this.requestClientValidation = JSON5.parse(process.env.REQUEST_CLIENT_VALIDATION || '{"version": {}}');
this.jwtConfig = { this.jwtConfig = {
secret : process.env.JWT_SECRET_KEY || '', secret: process.env.JWT_SECRET_KEY || '', expiresIn: Number(process.env.SESSION_TIMEOUT || 0)
expiresIn: Number(process.env.SESSION_TIMEOUT || 0)
}; };
this.login = { this.login = {
...@@ -60,46 +77,29 @@ class Config { ...@@ -60,46 +77,29 @@ class Config {
}; };
this.gitlab = { this.gitlab = {
urls : JSON5.parse(process.env.GITLAB_URLS || '[]'), urls : JSON5.parse(process.env.GITLAB_URLS || '[]'), account: {
account: { id: Number(process.env.GITLAB_DOJO_ACCOUNT_ID || 0), username: process.env.GITLAB_DOJO_ACCOUNT_USERNAME || '', token: process.env.GITLAB_DOJO_ACCOUNT_TOKEN || ''
id : Number(process.env.GITLAB_DOJO_ACCOUNT_ID || 0), }, repository: {
username: process.env.GITLAB_DOJO_ACCOUNT_USERNAME || '', timeoutAfterCreation: Number(process.env.GITLAB_REPOSITORY_CREATION_TIMEOUT || 5000)
token : process.env.GITLAB_DOJO_ACCOUNT_TOKEN || '' }, group : {
}, root: Number(process.env.GITLAB_GROUP_ROOT_ID || 0), templates: Number(process.env.GITLAB_GROUP_TEMPLATES_ID || 0), assignments: Number(process.env.GITLAB_GROUP_ASSIGNMENTS_ID || 0), exercises: Number(process.env.GITLAB_GROUP_EXERCISES_ID || 0)
group : { }, badges : {
root : Number(process.env.GITLAB_GROUP_ROOT_ID || 0),
templates : Number(process.env.GITLAB_GROUP_TEMPLATES_ID || 0),
assignments: Number(process.env.GITLAB_GROUP_ASSIGNMENTS_ID || 0),
exercises : Number(process.env.GITLAB_GROUP_EXERCISES_ID || 0)
},
badges : {
pipeline: { pipeline: {
link : process.env.GITLAB_BADGE_PIPELINE_LINK || '', link: process.env.GITLAB_BADGE_PIPELINE_LINK || '', imageUrl: process.env.GITLAB_BADGE_PIPELINE_IMAGE_URL || ''
imageUrl: process.env.GITLAB_BADGE_PIPELINE_IMAGE_URL || ''
} }
} }
}; };
this.assignment = { this.assignment = {
default : { default : {
description : process.env.ASSIGNMENT_DEFAULT_DESCRIPTION?.convertWithEnvVars() ?? '', description: process.env.ASSIGNMENT_DEFAULT_DESCRIPTION?.convertWithEnvVars() ?? '', initReadme: process.env.ASSIGNMENT_DEFAULT_INIT_README?.toBoolean() ?? false, sharedRunnersEnabled: process.env.ASSIGNMENT_DEFAULT_SHARED_RUNNERS_ENABLED?.toBoolean() ?? true, visibility: process.env.ASSIGNMENT_DEFAULT_VISIBILITY || GitlabVisibility.PRIVATE, wikiEnabled: process.env.ASSIGNMENT_DEFAULT_WIKI_ENABLED?.toBoolean() ?? false, template: process.env.ASSIGNMENT_DEFAULT_TEMPLATE?.replace('{{USERNAME}}', this.gitlab.account.username).replace('{{TOKEN}}', this.gitlab.account.token) ?? ''
initReadme : process.env.ASSIGNMENT_DEFAULT_INIT_README?.toBoolean() ?? false, }, baseFiles: JSON5.parse(process.env.ASSIGNMENT_BASE_FILES || '[]'), filename: process.env.ASSIGNMENT_FILENAME || ''
sharedRunnersEnabled: process.env.ASSIGNMENT_DEFAULT_SHARED_RUNNERS_ENABLED?.toBoolean() ?? true,
visibility : process.env.ASSIGNMENT_DEFAULT_VISIBILITY || GitlabVisibility.PRIVATE,
wikiEnabled : process.env.ASSIGNMENT_DEFAULT_WIKI_ENABLED?.toBoolean() ?? false,
template : process.env.ASSIGNMENT_DEFAULT_TEMPLATE?.replace('{{USERNAME}}', this.gitlab.account.username).replace('{{TOKEN}}', this.gitlab.account.token) ?? ''
},
baseFiles: JSON5.parse(process.env.ASSIGNMENT_BASE_FILES || '[]'),
filename : process.env.ASSIGNMENT_FILENAME || ''
}; };
this.exercise = { this.exercise = {
maxSameName : Number(process.env.EXERCISE_MAX_SAME_NAME || 0), maxSameName: Number(process.env.EXERCISE_MAX_SAME_NAME || 0), resultsFolder: process.env.EXERCISE_RESULTS_FOLDER?.convertWithEnvVars() ?? '', pipelineResultsFolder: process.env.EXERCISE_PIPELINE_RESULTS_FOLDER ?? '', //Do not use convertWithEnvVars() because it is used in the exercise creation and muste be interpreted at exercise runtime
resultsFolder : process.env.EXERCISE_RESULTS_FOLDER?.convertWithEnvVars() ?? '',
pipelineResultsFolder: process.env.EXERCISE_PIPELINE_RESULTS_FOLDER ?? '', //Do not use convertWithEnvVars() because it is used in the exercise creation and muste be interpreted at exercise runtime
default : { default : {
description: process.env.EXERCISE_DEFAULT_DESCRIPTION?.convertWithEnvVars() ?? '', description: process.env.EXERCISE_DEFAULT_DESCRIPTION?.convertWithEnvVars() ?? '', visibility: process.env.EXERCISE_DEFAULT_VISIBILITY || GitlabVisibility.PRIVATE
visibility : process.env.EXERCISE_DEFAULT_VISIBILITY || GitlabVisibility.PRIVATE
} }
}; };
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment