Skip to content

Release v1.17.0, September 2022

Compare
Choose a tag to compare
@markkuriekkinen markkuriekkinen released this 01 Sep 14:41
· 62 commits to master since this release

This release focuses on improving slow course build times.
Gitmanager v1.17.0 is compatible with A-plus v1.16 and MOOC-Grader v1.16.

Changes

  • Enabled multiple concurrent course build jobs. (#21)
    • Previously, only one build job could be running in the system at a time. Now, multiple course instances may have build jobs running concurrently. One course instance may have at most one build job running.
  • Added option to specify exclude patterns for git clean.
    • New option exclude_patterns in apps.meta under the course git repo.
    • Matched files are not removed during the clean at the start of a build.
    • For example, exclude_patterns = _build exercises lists two separate directores, _build and exercises.
    • This may be used to avoid deleting some of the previously built output files if their removal is time consuming.
  • Added option to build directly in the course publish directory.
    • Option "skip build failsafes" in the Git manager course instance settings.
    • When enabled, the recovery functionality does not work anymore: if the course build breaks something, the course will be broken until it is fixed with a new build.
    • Graders are configured during the aplus-json request (course import in the A+ frontend): every time someone clicks "apply" under the A+ Edit course section, the grader is configured again.
    • This mode speeds up the build time because there is no need to copy files between directories, and the grader is only configured during the aplus-json request.
    • It is not recommended to import the course in the A+ frontend (that is, send the aplus-json request) while a course is building in the gitmanager if this option is enabled. Since the build directly modifies the publish directory, the results of aplus-json become unpredictable during a running build.

For system administrators

  • Added Django manage.py command for flushing the Huey storage: manage.py flush_huey
    • Huey is the framework used for asynchronous task queue.
    • Huey stores a lock for the course build job so that multiple builds are not started concurrently.
    • If a course build is killed abrutly, the lock may stay in the storage and prevent new builds from starting.
    • The command is used to flush build job locks from the storage, which allows new builds to start when the locks have become stuck.
    • This should be only rarely needed.
  • If the new option "skip build failsafes" is used, it may be necessary to modify the build script in order to enable mounting the publish directory (setting COURSES_PATH) to the build container. Normally, the build is run in the separate build directory (BUILD_PATH) and not directly under the publish directory. The build script is defined with the setting BUILD_MODULE. It may be used to change the default script scripts/docker_build.py.

Release notes (the page will be published when A+ v1.17 is released):
https://apluslms.github.io/releases/v1_17.html