Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Programming exercises: Fix build results not available after file import #10458

Open
wants to merge 5 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ public ProgrammingExercise importProgrammingExerciseFromFile(ProgrammingExercise
var oldShortName = getProgrammingExerciseFromDetailsFile(importExerciseDir).getShortName();
programmingExerciseService.validateNewProgrammingExerciseSettings(originalProgrammingExercise, course);
// TODO: creating the whole exercise (from template) is a bad solution in this case, we do not want the template content, instead we want the file content of the zip
newProgrammingExercise = programmingExerciseService.createProgrammingExercise(originalProgrammingExercise, true);
newProgrammingExercise = programmingExerciseService.createProgrammingExercise(originalProgrammingExercise);
if (Boolean.TRUE.equals(originalProgrammingExercise.isStaticCodeAnalysisEnabled())) {
staticCodeAnalysisService.createDefaultCategories(newProgrammingExercise);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -315,7 +315,7 @@ public ProgrammingExercise importProgrammingExercise(ProgrammingExercise origina

if (recreateBuildPlans) {
// Create completely new build plans for the exercise
programmingExerciseService.setupBuildPlansForNewExercise(newProgrammingExercise, false);
programmingExerciseService.setupBuildPlansForNewExercise(newProgrammingExercise);
}
else {
// We have removed the automatic build trigger from test to base for new programming exercises.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -272,12 +272,11 @@ public ProgrammingExerciseService(ProgrammingExerciseRepository programmingExerc
* </ol>
*
* @param programmingExercise The programmingExercise that should be setup
* @param isImportedFromFile defines if the programming exercise is imported from a file
* @return The new setup exercise
* @throws GitAPIException If something during the communication with the remote Git repository went wrong
* @throws IOException If the template files couldn't be read
*/
public ProgrammingExercise createProgrammingExercise(ProgrammingExercise programmingExercise, boolean isImportedFromFile) throws GitAPIException, IOException {
public ProgrammingExercise createProgrammingExercise(ProgrammingExercise programmingExercise) throws GitAPIException, IOException {
final User exerciseCreator = userRepository.getUser();
VersionControlService versionControl = versionControlService.orElseThrow();

Expand Down Expand Up @@ -344,7 +343,7 @@ public ProgrammingExercise createProgrammingExercise(ProgrammingExercise program
channelService.createExerciseChannel(savedProgrammingExercise, Optional.ofNullable(programmingExercise.getChannelName()));

// Step 10: Setup build plans for template and solution participation
setupBuildPlansForNewExercise(savedProgrammingExercise, isImportedFromFile);
setupBuildPlansForNewExercise(savedProgrammingExercise);
savedProgrammingExercise = programmingExerciseRepository.findForCreationByIdElseThrow(savedProgrammingExercise.getId());

// Step 11: Update task from problem statement
Expand Down Expand Up @@ -511,10 +510,8 @@ public void validateCheckoutDirectoriesUnchanged(ProgrammingExercise originalPro
*
* @param programmingExercise Programming exercise for the build plans should be generated. The programming
* exercise should contain a fully initialized template and solution participation.
* @param isImportedFromFile defines if the programming exercise is imported from a file, if the
* exercise is imported, the build plans will not be triggered to prevent erroneous builds
*/
public void setupBuildPlansForNewExercise(ProgrammingExercise programmingExercise, boolean isImportedFromFile) throws JsonProcessingException {
public void setupBuildPlansForNewExercise(ProgrammingExercise programmingExercise) throws JsonProcessingException {
String projectKey = programmingExercise.getProjectKey();
// Get URLs for repos
var exerciseRepoUri = programmingExercise.getVcsTemplateRepositoryUri();
Expand All @@ -541,13 +538,9 @@ public void setupBuildPlansForNewExercise(ProgrammingExercise programmingExercis
programmingExerciseBuildConfigRepository.saveAndFlush(programmingExercise.getBuildConfig());
}

// if the exercise is imported from a file, the changes fixing the project name will trigger a first build anyway, so
// we do not trigger them here
if (!isImportedFromFile) {
// trigger BASE and SOLUTION build plans once here
continuousIntegrationTriggerService.orElseThrow().triggerBuild(programmingExercise.getTemplateParticipation());
continuousIntegrationTriggerService.orElseThrow().triggerBuild(programmingExercise.getSolutionParticipation());
}
// trigger BASE and SOLUTION build plans once here
continuousIntegrationTriggerService.orElseThrow().triggerBuild(programmingExercise.getTemplateParticipation());
continuousIntegrationTriggerService.orElseThrow().triggerBuild(programmingExercise.getSolutionParticipation());
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ public ResponseEntity<ProgrammingExercise> createProgrammingExercise(@RequestBod

try {
// Setup all repositories etc
ProgrammingExercise newProgrammingExercise = programmingExerciseService.createProgrammingExercise(programmingExercise, false);
ProgrammingExercise newProgrammingExercise = programmingExerciseService.createProgrammingExercise(programmingExercise);

// Create default static code analysis categories
if (Boolean.TRUE.equals(programmingExercise.isStaticCodeAnalysisEnabled())) {
Expand Down
Loading