-
Notifications
You must be signed in to change notification settings - Fork 148
Storing courses and tasks in Git repositories #1058
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
base: main
Are you sure you want to change the base?
Conversation
93d996b to
2872d0e
Compare
|
Open question: How do we handle task migration with common directories? Suppose we have We migrate Now suppose that |
With the addition of the GitFSProvider, many Git-related helpers will be added. In order to keep the tests clearly organized, filesystem-related tests are move in a dedicated python submodule.
|
With this push, we moved away from |
2b32697 to
37b97a4
Compare
The GitFSProvider relies on Gitolite as the main authorization layer for the project. This interface abstracts some gitolite configuration manipulations such as adding a new course or a new task to a given course.
Python3.10 will be EOL by the end of 2026. We now use string formatting feature added with 3.12, hence we deprecate older versions for INGInious v0.10.0
Upon course creation, we ensure that the course and its $common submodule are initialized on the remote through gitolite configuration update. We then locally create the course and the $common submodule repositories. They contains the descriptors defined through the web interface. The course and its $common submodule are then pushed on the remote. This requires storing a private SSH key for users and propagating credential information within the Git FSP to ensure commits authorship and remote authentication. This commit also improves the gitolite interface tests and adds specific tests for the Git FSP.
This commit contains multiple changes. First, the core containers have been bumped to RockyLinux 10 to access the packaged version of python3.12. Second, the initial DB setup script has been updated to load an initial SSH private key for the superadmin. This key is used to authenticate on the gitolite instance. The frontend service image has been updated to leverage this extension of the DB setup script on service startup. Third, previous commits leverage a patched version of pygit2. While the patch libgit2/pygit2#1395 is not available through PyPi, we have to leverage a custom build of pygit2. However, the packaged libgit2 version on RL10 is too old for current versions of pygit2, hence we also have to custom build libgit2 and libssh2.
Upon task content edition, the modifications are versioned, and the task submodule at the course level is updated.
|
After discussing with @anthonygego and @AlexandreDoneux, this PR will remain on hold until the course and task factories are correctly refactored. |
This PR lays down the basics for #1059 and related features. For more details, see #1059.
TODO list
Git-based courses and tasks
- [ ] For each task, create a task-scoped sub-module.- [ ] Handling $i18n directory?- [ ] Automated signed commit upon task / course modification at the web GUI.