Teak Sandbox and Release Preparation
This issue is for tracking the items to prepare https://github.com/overhangio/openedx-release-demo for Teak cutoff and eventually Teak release.
Teak cutoff is expected to take place on ~April 9, 2025~ April 24, 2025. Once the branches are out upstream, the community will be looking forward to sandbox provided by Edly. Tutor and tutor plugins will require teak branches with appropriate changes for the sandbox to complete.
A note: once the branches are created, any changes to main would need to be manually added to the teak branch. Therefore, a rebase on main whenever main changes would be required to ensure the teak branch is always up-to-date
This issue is meant for tracking the statuses of various repositories needed for sandbox and the release. It will act as a todo list to ensure that tutor and its plugins have teak branches created from main before the cutoff date (even though there will be potential failures on CI against it) and have a PR against release.
For sanity checks, make sure to run main image build and init task on local tutor <local/dev> do init --limit=pluginnname.
The sandbox script expects the branches to be available on the actual repository, not the fork. If you are assigned a repository but cannot push to it directly, please get in touch with @DawoudSheraz or the maintainer of the repository with git patch file so that they can create the PR in the appropriate repository with your provided changes
Tutor & Plugins Todo List
Available on launch
- [x] Tutor teak PR (https://github.com/overhangio/tutor/pull/1216 by @ahmed-arb)
- [x] Is main local image build working?
- [x] Is init working?
- [x] tutor-mfe teak PR (https://github.com/overhangio/tutor-mfe/pull/248 by @DawoudSheraz )
- [x] Is main local image build working?
- [x] Is init working?
- [x] tutor-indigo teak PR (https://github.com/overhangio/tutor-indigo/pull/138 by @HammadYousaf01 )
- [x] Is main local image build working?
- [x] Is init working?
Available within a week
- [x] tutor-discovery teak PR (https://github.com/overhangio/tutor-discovery/pull/102 by @mlabeeb03 )
- [x] Is main local image build working?
- [x] Is init working?
- [x] tutor-credentials teak PR (https://github.com/overhangio/tutor-credentials/pull/56 by @mlabeeb03 )
- [x] Is main local image build working?
- [x] Is init working?
- [x] tutor-forums teak PR (https://github.com/overhangio/tutor-forum/pull/68 by @DawoudSheraz, to be continued by @ghassanmas )
- [ ] Is main local image build working? -- N/A, there is no forum image after the release for v2
- [x] Is init working?
- [x] tutor-notes teak PR (https://github.com/overhangio/tutor-notes/pull/49 by @jfavellar90 )
- [x] Is main local image build working?
- [x] Is init working?
- [x] tutor-xqueue teak PR (https://github.com/overhangio/tutor-xqueue/pull/41 by @jfavellar90 )
- [x] Is main local image build working?
- [x] Is init working?
- [x] tutor-jupyter teak PR (https://github.com/overhangio/tutor-jupyter/pull/24 by @Abdul-Muqadim-Arbisoft )
- [x] Is main local image build working?
- [x] Is init working?
- [x] tutor-minio teak PR (https://github.com/overhangio/tutor-minio/pull/60 by @Danyal-Faheem )
- [x] Is init working?
- [x] tutor-webui teak PR (https://github.com/overhangio/tutor-webui/pull/26/files by @Abdul-Muqadim-Arbisoft)
- [x] Is main local image build working?
- [x] Is init working?
- [x] tutor-android teak PR (https://github.com/overhangio/tutor-android/pull/40 by @Abdul-Muqadim-Arbisoft)
- [x] Is main local image build working?
- [x] Is init working?
- [x] tutor-contrib-codejail PR (https://github.com/eduNEXT/tutor-contrib-codejail/pull/68 by @MoisesGSalas)
- [x] Is main local image build working?
- [x] Is init working?
- [x] tutor-contrib-aspects v2.0.0 (@bmtcril )
Not needed for sandbox
- [x] tutor-cairn teak PR (https://github.com/overhangio/tutor-cairn/pull/68 by @Danyal-Faheem )
- [ ] Is main local image build working?
- [ ] Is init working?
- [x] tutor-deck Teak PR (https://github.com/overhangio/tutor-deck/pull/15 by @mlabeeb03 )
Sandbox Repo Todo List
- [x] PR 1 (https://github.com/overhangio/openedx-release-demo/pull/73 by @ahmed-arb )
- [ ] ...
Context/Steps
Every six months, Tutor maintainers sync up with the Build/Test/Release working group to create the next version, both of Open edX and Tutor.
In the scenario below, we are upgrading Open edX from fictional “Delta” to “Epsilon”. Tutor will upgrade from v4 to v5 (“d”=4, “e”=5).
(these instructions are pulled and adapted from this old discussion topic)
Create New Release Branches
In Tutor core and all plugins, we must create “epsilon” branches off of the main branches. For each repo, this looks like the following:
git checkout main
git pull
git checkout -b epsilon
Push the created “epsilon” branch to the upstream repo: git push
Upgrade Tutor core and plugins
- Modify about.py:
- bump the version number to 5.0.0.
- in Tutor core, set the version_suffix to an empty string.
- In plugins’ pyproject.toml, bump the version of the “tutor” package that the plugin depends on:
dependencies=["tutor>=5.0.0,<6.0.0"],
optional-dependencies={"dev": ["tutor[dev]>=5.0.0,<6.0.0"]},
- Create a changelog entry with make changelog-entry: "💥[Feature] Upgrade to Epsilon. (by @YOURGITHUBUSERNAME)"
- Replace all instances of “[dD]elta” that make sense (i.e: not in the CHANGELOG.md!)
- Go through the Dockerfile templates and manually upgrade all the 3rd-party requirements that you can find (dockerize, ipdb, etc.). Sometimes it’s not desirable to upgrade some pieces of software: for instance node and python are expected to run a specific version. Those required version numbers are specified in the edx/configuration 5 repo. (look for SERVICENAME_VERSION variables)
- Make sure that the plugin images (if any) are built correctly: tutor images build all.
- Make sure that the plugin can be correctly initialized: tutor local do init --limit=pluginnname.
- If you need to make some changes to the docker-compose*.yml files and patches, make sure to backport these changes to the k8s-* patches, for compatibility with Kubernetes.
- Make sure that the plugins work correctly by doing some basic usage testing. Pay close attention to any log (warning or error) that come out of the plugin containers as well as the lms container.
- git commit -a -m v5.0.0
- Push the created “epsilon” branch to the upstream repo: git push
The release branches should be updated regularly to take into account the latest changes from the main branch. During the release process, it is frequent that changes are pushed to the release and main branches, and the latest “espilon” branch must have those changes as well. Be prepared to push --force the “epsilon” branches frequently.
:warning: Plugin tests will fail in the release branches, because the plugins can’t find tutor>=5.0.0 on pypi. To resolve that, we should update the test scripts to install tutor from source (pip install -e --config-settings editable_mode=compat https://github.com/overhangio/tutor@epsilon#egg=tutor). But it’s inconvenient to do that for each and every plugin. So maybe we should consider migrating to a centralized “tutor-test-plugin” GitHub action. This action would be versioned according to the Tutor major version (@5).
Pull Requests Checklist
When the PRs are created from teak against release branch, it is important to add some checklists on the PRs. Those checklists must be completed before the merge. Therefore, when you create the PR, please add the checklist in PR description. This is only applicable to plugins under Overhangio GitHub organization.
Tutor Core
v20.0.0 teak release
### Todos before merge
- [ ] Ensure **changelog-entry** exists for teak upgrade
- [ ] Ensure changelog exists for v20
- [ ] Ensure CI/Tests are working as expected
- [ ] Ensure teak branch is up-to-date with main (updated as of <date>)
- [ ] Ensure OPENEDX_COMMON_VERSION is pointing to correct tag open-release/teak.1
### Merge Option
- [ ] Ensure "Merge Commit" option is used to merge the branch into release (Responsible: @DawoudSheraz/ @ahmed-arb ). This is needed to ensure the commit history when release is merged back into main
Note: In Tutor core, we won't have open-release/teak.1 available until the actual release in June. Therefore, until June, OPENEDX_COMMON_VERSION should be pointed to open-release/teak.master and this should be changed to open-release/teak.1 before release
Tutor Plugins
v20.0.0 teak release
### Todos before merge
- [ ] Ensure **changelog-entry** exists for teak upgrade
- [ ] Ensure changelog exists for v20
- [ ] Ensure CI/Tests are working as expected
- [ ] Ensure teak branch is up-to-date with main (updated as of <date>)
### Merge Option
- [ ] Ensure "Merge Commit" option is used to merge the branch into release (Responsible: @DawoudSheraz/ @ahmed-arb ). This is needed to ensure the commit history when release is merged back into main
@jfavellar90 Hi, It's that time of year again when we need the release branches for sandbox prep. Since you are the maintainer for notes and xqueue, your contribution is needed.
@ghassanmas Hi, It's that time of year again when we need the release branches for sandbox prep. Since you are the maintainer of forum, your contribution is needed.
@MoisesGSalas Hi. Since you helped out during sumac with codejail plugin updates, I am mentioning you here for teak updates. Let me know if it needs to be routed to someone else.
Thank you all. Let me know if you have any questions
tutor-mfe teak PR https://github.com/overhangio/tutor-mfe/pull/248 is up.
- [x] Is main local image build working?
- [x] Is init working?
tutor-minio teak PR https://github.com/overhangio/tutor-minio/pull/60 is up.
- [x] Is init working
tutor Teak PR v20.0.0 teak release is up.
- [x] Is main local image build working?
- [x] Is init working?
tutor credentials Teak PR v20.0.0 teak release is up.
- [x] is main local image build working?
- [x] is init working?
tutor discovery Teak PR v20.0.0 teak release is up.
- [x] is main local image build working?
- [x] is init working?
Tutor indigo teak PR v20.0.0 teak release is up.
- [x] is main local image build working?
- [x] is init working
Hi @DawoudSheraz , Aspects v2.0.0 is ready to be added to the sandbox. Thanks!
Tutor Notes teak PR v20.0.0 teak release is up.
- [x] is main local image build working?
- [x] is init working
Tutor Xqueue teak PR v20.0.0 teak release is up.
- [x] is main local image build working?
- [x] is init working
Tutor Android teak PR v20.0.0 teak release is up.
-
[x] is main local image build working?
-
[x] is init working
Tutor Jupyter teak PR v20.0.0 teak release is up.
-
[x] is main local image build working?
-
[x] is init working
Tutor WebUI teak PR v20.0.0 teak release is up.
-
[x] is main local image build working?
-
[x] is init working
An update: the cutoff date for Teak has been moved to April 24, 2025. See https://openedx.slack.com/archives/C049JQZFR5E/p1743778154295529
tutor-contrib-codejail PR: https://github.com/eduNEXT/tutor-contrib-codejail/pull/68
- [x] is main local image build working?
- [x] is init working?
tutor-forum PR https://github.com/overhangio/tutor-forum/pull/68. @ghassanmas is not available, I have created this PR so that the plugin can be added in sandbox after cutoff tomorrow.
- [x] tutor-forums teak PR (https://github.com/overhangio/tutor-forum/pull/68 by @DawoudSheraz )
- [ ] Is main local image build working? -- N/A, there is no forum image after the release for v2
- [x] Is init working?
Teak sandbox is live on https://teak.demo.edly.io/. Except for minio, all the plugins are enabled. Some configs/toggles are not enabled yet. They will be done as soon as they are shared or PRs are created by Axim.
See https://github.com/overhangio/openedx-release-demo for credentials and other details.
Tutor deck Teak PR is up.
Small updates have been made to sandbox:
- tutor-contrib-scout-apm has been enabled on sandbox on request by @ormsbee. Thanks, Dave, for providing the apm key.
- Update tutor-contrib-aspects to v2.3.0.
The changes are already live on sandbox. They are being added to deploy script in https://github.com/overhangio/openedx-release-demo/pull/77 and https://github.com/overhangio/openedx-release-demo/pull/78 so that next sandbox build on Monday includes these changes automatically.
FYI @ahmed-arb
Tutor-minio has been enabled on sandbox https://github.com/overhangio/openedx-release-demo/pull/79
v20 of Tutor and Edly-supported Tutor plugins have been released to Pypi.