This repo holds the continuous deployment (CD) scripts to deploy the Open edX release demo platforms. As of October 23, 2024, it is used to deploy and configure a test instance of the Sumac release.
⚠ THIS REPO IS NOT FOR PUBLIC CONSUMPTION ⚠ It is only used to deploy and configure a test instance for the Build/Test/Release working group. Detected issues should be reported to the working group.
URLs:
You may log in with the following credentials:
- Student user:
- username: student
- email: [email protected]
- password: student
- Administrator user:
- username: admin
- email: [email protected]
- password: admin
The platform is reset weekly, every Monday at 2 am UTC.
The deployment script is included in this repository. If you are working on testing the latest release and you would like to modify this script, please open a pull request.
The following plugins are enabled on the demo platform:
- tutor-android (PR by @muhammadali286 & @Abdul-Muqadim-Arbisoft)
- The mobile apk can be downloaded from https://mobile.sumac.demo.edly.io/app.apk.
tutor-cairn (TBA)- tutor-contrib-aspects (v1.2.0)
- aspects has been enabled in place of cairn for testing of certain Product features.
- tutor-contrib-codejail (PR by @MoisesGSalas)
- tutor-credentials (PR by @Faraz32123)
- tutor-discovery (PR by @Faraz32123)
- tutor-ecommerce (PR by @Faraz32123)
- tutor-forum (PR by @ghassanmas)
- tutor-indigo (PR by @hinakhadim)
- tutor-mfe (PR by @hinakhadim and @DawoudSheraz)
- tutor-minio (PR by @Faraz32123)
- tutor-notes (PR by @jfavellar90)
- tutor-webui (PR by @Abdul-Muqadim-Arbisoft & @hinakhadim)
- tutor-xqueue (PR by @jfavellar90)
- tutor-jupyter (PR by @Abdul-Muqadim-Arbisoft)
- LTI passport is
jupyterhub:openedx:jupyter-lti-password
.
- LTI passport is
If you are interested in upgrading these plugins to Sumac, please submit a PR by following the regular plugin upgrade instructions.
The deployment script can be tested with act. Define your secrets::
# edit the resulting .secrets file
cp .secrets.sample .secrets
Note that multi-line strings are not supported in secrets files, so you should replace carriage returns with "\n".
Then run::
act workflow_dispatch
We need to be careful not to exceed the disk space and the server memory to avoid filled disks, excessive build times and crashes.
We must configure the docker builder not to use more than 4 CPU and always leave some free space on disk. Edit buildkit.toml
and add the following content:
# https://docs.docker.com/build/buildkit/toml-configuration/
# Apply configuration by stopping and removing build container:
#
# docker stop buildx_buildkit_max4cpu0
# docker rm buildx_buildkit_max4cpu0
# docker buildx create --use --name=max4cpu --node=max4cpu0 --config=./buildkitd.toml
# docker buildx inspect --bootstrap
# docker exec buildx_buildkit_max4cpu0 cat /etc/buildkit/buildkitd.toml
# Enable debug mode, such that we can log gc events and detect them with:
#
# docker logs -f buildx_buildkit_max4cpu0 2>&1 | grep garbage
debug = true
[worker.oci]
max-parallelism = 4
gc = true
# Keep some space for cache
reservedSpace = "25GB"
# Always leave some free space
minFreeSpace = "10GB"
Then create the builder with:
docker buildx create --use --name=max4cpu --config=./buildkitd.toml
In case we are updating an existing builder, we need to stop and delete the container to apply the changes:
docker buildx create --use --name=max4cpu --node=max4cpu0 --config=./buildkitd.toml
docker stop buildx_buildkit_max4cpu0
docker container rm buildx_buildkit_max4cpu0
First, we need to limit the amount of space used by Docker images. This can be achieved with the help of docuum:
mkdir -p ~/apps/docuum
cd ~/apps/docuum
vim docker-compose.yml
Add the following services:
services:
# auto-clean least-recently used docker images
docuum:
image: stephanmisc/docuum:latest
init: true
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data/docuum:/root/.local/share/docuum
command: "--threshold=50GB"
restart: unless-stopped
And start it with:
docker compose up -d
This work is licensed under the terms of the GNU Affero General Public License (AGPL).