Replies: 7 comments 1 reply
-
Feedback from SK and programming meeting:
|
Beta Was this translation helpful? Give feedback.
-
It will be highly important to be able to debug failed runs. For now, this was one of the big benefits of Jenkins. You can take a look into all created files after a CI run (esp. if the build failed). |
Beta Was this translation helpful? Give feedback.
-
👍 for requirement to be able to debug Jenkins builds. Making Jenkins ‘stateless’ and constantly creating and deleting build plans for each build would have multiple disadvantages in my opinion:
To be able to debug the Jenkins builds, I guess the solution should not delete the build plans. However, I’m not sure how Jenkins will handle leaving thousands of build plans (since one is created per push per student) lying around. As far as I remember, the Jenkins build trigger already checks if the build plan exists or not and creates it on-demand. I would propose an approach that keeps the Jenkins state as it is right now, but removes the state-specific stuff from the general CI interfaces in Artemis and simplifies some other interactions:
|
Beta Was this translation helpful? Give feedback.
-
We definitely would like to remove the CI user management aspects in Artemis. This adds additional complexity and dependencies into the server code that increase the maintenance effort. I understand that inspecting build results and files would be important to understand issues. I wonder if we could implement this without user management? I don't think that creating and deleting build plans would lead to a high CPU usage. Creating those from scratch each time would allow specifying the build plan on demand and would avoid that Jenkins needs to fetch it from Artemis |
Beta Was this translation helpful? Give feedback.
-
Result of discussion (KIT, Passau, TUM, Austrian Universities) today: According to the knowledge in the current planning stage, the approach described below sounds feasible and sensible to all of us.
|
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
I started implementing a POC here: https://github.com/ls1intum/Artemis/tree/feat/stateless-ci-interface |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
We're currently discussing how to simplify the integration of external CI systems. The existing implementation of
ContinuousIntegrationService
was originally designed to work with Bamboo - and still has some methods that are not needed anymore. With the new LocalCI system and potential other stateless external CI systems it would make sense to refactor this interface.In this thread we wanna kick off the discussion how to do the transition.
Things that need to happen
(from @bensofficial and @Mtze perspective) - Feel free to critique and amend the suggestion!)
New version of
ContinuousIntegrationService
interfacebuild(participation) -> ID
The main trigger should be one simplebuild
method that handles all the necessary details internallystatus(participation) -> Status
: Returns the current state of the build for participationPOST /api/programming/public/exercise/<exerciseid>/submission/<submissionid>/status
health()
: Returns the health of the external systemThe implementations of
JenkinsService
andLocalCIService
need to be adapted to adhere to the new interfaceUpdate for the result handling - Suggestion: Split the ingest of build results (e.g. Tests) and the ingest of build logs.
POST /api/programming/public/exercise/<exerciseid>/submission/<submissionid>/result
(new DTO Type:ExternalBuildResult
)POST /api/programming/public/exercise/<exerciseid>/submission/<submissionid>/log
(existing DTO TypeList<BuildLogDTO>
)Beta Was this translation helpful? Give feedback.
All reactions