How are Community-theme-tutor and MFEs working in Open edX®?
A technical article about working with the Community-theme-tutor and MFEs in Open edX® projects.
WHAT IS TUTOR?
Tutor will help you setup an Open edX® platform for your university, your school or your company. Open edX® is feature-packed, modular and highly scalable, but you don't have to be an Open edX® expert to keep track of all the bugfixes, security announcements and new releases.Leave that job to us!
Tutor comes with state-of-the-art documentation, an intuitive plugin-driven system and a transparent, Docker-based deployment environment that makes it easy to install, debug, customize and upgrade Open edX platforms.
Tutor: Tutor is a piece of software that takes care of exactly three things.
- Project configuration: User-specific settings (such as secrets) are stored in a single config.yml file.
- Template rendering: All the files that are necessary to run your platform are generated from a set of templates and user-specific settings.
- Command-line interface (CLI): Frequently used administration commands are gathered in a convenient, unified CLI.
WHAT IS IN COMMUNITY-THEME-TUTOR AND MFES?
We are using tutor version 15.3.0 along Olive release in community-theme, but MFE's are derived from master branch. Overall, project is mostly using default tutor settings for everything.All customizations are there for the sake of MFE's.
HOW IS OUR ENVIRONMENT WORKING?
As mentioned above we haven’t customized tutor much, but we are using customized MFEs. We have created separate repos for tutor-config and MFEs as follow:
Community-theme-tutor (contains tutor configuration and customized MFEs repos configurations as shown in the following screenshot.
This repo also has a pipeline which contains the ansible roles to deploy tutor to "community.abzt.de" and we have rated this as Parent repository.
How is pipeline working at Parent repo?
- Whenever we push something to parent repo our GitHub workflow come into place and perform these Jobs:
- Build open edx docker image
- Build MFE docker image by fetching configuration from all MFEs repositories
- Push these images to docker registry
- Deploy to Babilonia server using Ansible Roles
Below are the MFEs repositories:
All these MFEs contains our customized configuration and the Home and Course-about MFEs are purely built by us.
How pipeline works from MFEs end when a developer push changes to any MFE?
Whenever a developer pushes their modifications to any micro front-end (MFE), several workflows are initiated to conduct tests on the code. Once these tests are successfully completed, the developer merges their changes to the main branch. Following this, a"tutor.yml" workflow automatically triggers and activates the primary community-theme-tutor" pipeline. This pipeline then proceeds to build the updated MFEs and push them to the designated Docker registry. Finally, the "deploy_job" deploys the newly updated MFEs to the "community.abzt.de" platform.
HOW GERMAN AND ITALIAN TRANSLATIONS ARE WORKING?
We have forked openedx Account, Learning and Profile MFEs master branches. The reason to choose this branch because it has a lot of languages facilities. We have downloaded account, learning and profile MFEs translated strings in json format from transifex and the perform the following steps:
- For each micro front-end (MFE) located in the "/src/i18n/messages" directory, there are two files named "de.json" and "it.json". We have updated the contents of these files by replacing them with the files that were downloaded from Transifex.
- After this we pushed these changes to every MFEs and pipeline re-build our MFE image and then deploy to server. Then if you open account MFE there is Site Preferences as below:
- As, you can see in the above image we have a lot of languages but our focus is on German and Italian. If you want to apply German or Italian just click on them and save.