Mage-os.org 22. Apr. 2023
Building
Mage-OS
Or: DIY Magento Releases
Mage-os.org 22. Apr. 2023
Mage-OS is an open
initiative to ensure the
accessibility, longevity,
and success of the
Magento® platform
and ecosystem.
The Mage-OS
Distribution
is a community
owned fork
of Magento Open
Source.
Building a
Distribution
Mage-os.org 22. Apr. 2023
How are Mage-OS release packages built?
Mage-os.org 22. Apr. 2023
Back when we started: the first ideas…
Magento is many modules in a mono-repo
> Symfony uses splitsh/lite, maybe we can use it!
> There also are other existing tools…
Mage-os.org 22. Apr. 2023
First experiments
Splitting the magento repo into subrepos took ~36 hours!
Mage-os.org 22. Apr. 2023
Okay, something custom then!
“The Plan”
- Clone repo
- List all tags
- For each "version" tag…
- Iterate over all folders in app/code/Magento
- Zip the folder as a composer package using the name and version in the
composer.json file in each directory
- Use composer/satis to use the directory with the zips as an artifact type repo
Mage-os.org 22. Apr. 2023
Time to build!
Ivan: Let’s create a Rust repo-splitter that keeps the git repo
in-memory so no working copy is needed!
Vinai: Let’s keep it simple and write a shell script version, too!
> The more implementations we get, the better our understanding of the problem will be and the more
people will be able to work on it (rust, bash, js, …) <
Mage-os.org 22. Apr. 2023
One tool made it to production 🎉
The JavaScript implementation started as an
experiment.
Turned out to be good enough!
Also available as a docker image
magece/mageos-repo-js
to build your own Mage-OS repositories!
Mage-os.org 22. Apr. 2023
Beside the module & framework packages
magento/project-community-edition metapackage (e.g. 2.4.5-p2)
depends on ⬇️
magento/product-community-edition metapackage (e.g. 2.4.5-p2)
depends on ⬇️
EVERY MAGENTO PACKAGE included in 2.4.5-p2 in a specific version (e.g. 103.0.2)
and also ⬇️
magento/magento2-base (2.4.5-p2)
Mage-os.org 22. Apr. 2023
The magento2-base package
Contains base directory filesystem structure, i.e. app/code, bin/, dev/, ...
Mage-os.org 22. Apr. 2023
The magento2-base package
It depends on magento/magento-composer-installer.
It declares extra.map in composer.json.
The magento/magento-composer-installer
copies the extra.map files and folders
from the package into the project base.
Mage-os.org 22. Apr. 2023
There is no way to determine the extra.map contents programmatically.
From what is visible outside of Magento/Adobe, the map seems to be maintained manually.
The magento2-base package
Mage-os.org 22. Apr. 2023
Solution for mirror packages:
copy the magento2-base composer.json of
all past releases from upstream
The magento2-base package
Mage-os.org 22. Apr. 2023
There be Dragons Inconsistencies!
The git repos don’t match the old Magento releases exactly…
- Version mismatch in package composer.json and base package composer.json
- No version in package composer.json
- Missing release tags
- Branches with version name instead of a tag (did that branch change after the release??)
- For some releases, no commit in public repo matches the released code exactly
(file missing or file is different)
Mage-os.org 22. Apr. 2023
Workarounds
Each problem requires a
different workaround,
e.g. adding missing tags or files.
Mage-os.org 22. Apr. 2023
You did this for all versions of Magento 2?
Nope.
We only support releases since 2.3.7-p2.
Mage-os.org 22. Apr. 2023
Finally: it installs!
Mage-os.org 22. Apr. 2023
Why is there no 2FA for Admin login?
Mage-os.org 22. Apr. 2023
Ups! There is more than one git repo!
- https://github.com/mage-os/mirror-security-package
- https://github.com/mage-os/mirror-inventory
- https://github.com/mage-os/mirror-magento2-page-builder
- https://github.com/mage-os/mirror-inventory-composer-installer
- https://github.com/mage-os/mirror-adobe-ims
- https://github.com/mage-os/mirror-adobe-stock-integration
- https://github.com/mage-os/mirror-magento-composer-installer
- https://github.com/mage-os/mirror-composer-root-update-plugin
- https://github.com/mage-os/mirror-composer-dependency-version-audit-plugin
- https://github.com/mage-os/mirror-magento2-sample-data (not a direct dep)
- https://github.com/mage-os/mirror-commerce-data-export (not a direct dep)
Mage-os.org 22. Apr. 2023
Different repos, different Structures
- Single package repos, like mage-os/mirror-inventory-composer-installer
- Multiple packages in base, like mage-os/mirror-security-package
- Meta-package in _metapackage dir, like mage-os/mirror-security-package
- Special case subdirectory package, like
mage-os/mirror-magento2/tree/2.4-develop/lib/internal/Magento/Framework/Amqp
- Repos that change the directory structure, like mage-os/mirror-inventory
(first a clone of magento/magento2, then only app/code/Magento/* folders + _metapackage)
Mage-os.org 22. Apr. 2023
Additional dependencies!
The dependency on the packages from those repos are added to the magento/product-
community-edition package.
Mage-os.org 22. Apr. 2023
Bundled Core Extensions
- amzn/amazon-pay-and-login-magento-2-module
- dotmailer/dotmailer-magento2-extension
- klarna/m2-payments
- paypal/module-braintree
- temando/module-shipping
- vertex/product-magento-module
- yotpo/magento2-module-yotpo-reviews
Mage-os.org 22. Apr. 2023
Bundled Core Extensions
- Magento forked the public upstream repos
- These forks are not public
- Solution for mirror:
copy released packages from upstream
- Solution for Mage-OS distro:
no core bundled modules
Mage-os.org 22. Apr. 2023
Are you sure everything is working now?
Mage-os.org 22. Apr. 2023
Quality Assurance
- Install release from mirror.mage-os.org
- Install release from repo.magento.com
- Compare versions and files
Mage-os.org 22. Apr. 2023
We have mirror releases ✅
Mage-os.org 22. Apr. 2023
We have mirror releases ✅
Next step: nightly builds!
Mage-os.org 22. Apr. 2023
What is different from a mirror build?
Use the head of a branch instead of a git tag.
Figure out a nightly-build version for each package instead of relying on a version
in composer.json.
Mage-os.org 22. Apr. 2023
Nightly Package Versions
After considering many options, we now use
- get the latest release tag of the repo
- get the version of all packages
- if less than 4 parts are present: increment last part of the current version,
otherwise increment the last part
- if there is no stability suffix, add an -aYYYYMMDD suffix to version
- otherwise keep the stability suffix and add YYYYMMDD
Mage-os.org 22. Apr. 2023
What deps to use in the base package?
- clone repo
- run composer install
- use github.com/mage-os/php-dependency-list to scan every .php, .phtml and di.xml file
- For each referenced PHP class
- Use the composer autoloader to determine which package contains the class
- Record the package name and version as a composer dependency for the base package
Mage-os.org 22. Apr. 2023
Upstream Nightly Releases ✅
composer create-project magento/project-community-edition 
--repository-url https://upstream-nightly.mage-os.org 
--stability alpha ./current-nightly
Mage-os.org 22. Apr. 2023
Mage-OS Nightly Releases ✅
The same process as upstream-nightly works
for the mageos-nightly builds, too!
Mage-os.org 22. Apr. 2023
New upstream Magento Open Source release?
- copy project-community-edition, product-community-edition and base-package composer.json into
the respective resources/history/magento/* folder with the release version as the name
- run the build
- install and validate new version
- add workarounds for missing tags and such to build config, re-build and test until everything works
- PR to github.com/mage-os/generate-mirror-repo-js, run action against preview-mirror.mage-os.org
- Merge PR, new packages are built and deployed to mirror.mage-os.org
Mage-os.org 22. Apr. 2023
GitHub Actions
Mage-os.org 22. Apr. 2023
Time for a wee bit of code?
Mage-os.org 22. Apr. 2023
The Build Config
Everything is declared in
“the build config”.
Base config extended by build type
(mirror, upstream-nightly or mageos-nightly)
Config is processed by the build script to
generate the package ZIP files.
Mage-os.org 22. Apr. 2023
The Build Config
Mage-os.org 22. Apr. 2023
Next steps
Come! Pls halp!
Mage-os.org 22. Apr. 2023
Next steps
Active Projects:
- Generate a real Mage-OS release
- Faster Integration & Unit Tests - (hi Adam + Damien!)
- New Features - (hey Gowri + Ivan!)
- Content!
Mage-os.org 22. Apr. 2023
Join our Community
Adam Crossland (UK)
Alexander Buch (DE)
Andreas Mautz (DE)
Anton Siniorg (EE)
Arron Moss (UK)
Barbaros Selim Büyükelçi (TR)
Benno Lippert (DE)
Bernard Robbins (US)
Brent Peterson (US)
Christian Münch (DE)
Damien Retzinger (US)
Daniel Fahlke (DE)
Daniel Sloof (NL)
David Lambauer (DE)
Dominik Rammert (DE)
Erik Hanson (US)
Gowri Sankar (AU)
Jisse Reitsma (NL)
John Prendergast (IE)
Nicole Mentzen (DE)
Roland Haselager (NL)
Sergei Derzap (BY)
Tim Bucciarelli (US)
Timon de Groot (NL)
Vitaliy Golomozy (UA)
Willem Wigman (NL)
Wouter Steenmeijer (NL)
Thank you to the contributors!
Mage-os.org 22. Apr. 2023
Mage-OS
Fork it, Own it, Grow it, Better!
TOGETHER

More Related Content

PPT
ASP.NET MVC Presentation
PPTX
Distributed Transaction in Microservice
PDF
Introduction to Git
PDF
Kinh nghiệm triển khai Microservices tại Sapo.vn
PPTX
.Net Core
PDF
Git basics
PPTX
Github
PPTX
Introduction git
ASP.NET MVC Presentation
Distributed Transaction in Microservice
Introduction to Git
Kinh nghiệm triển khai Microservices tại Sapo.vn
.Net Core
Git basics
Github
Introduction git

What's hot (20)

PDF
초보자를 위한 Git & GitHub
PPTX
Beginner's guide to git and github
PPTX
Write microservice in golang
PDF
Thiết kế hệ thống E-Commerce yêu cầu mở rộng
PPTX
Angular
ODP
Basics of VueJS
PDF
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
PPTX
Understanding GIT and Version Control
PPTX
Tiki.vn - How we scale as a tech startup
PDF
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | Edureka
PPTX
Software architecture for high traffic website
PPTX
Introduction to Gitlab | Gitlab 101 | Training Session
PDF
Monorepo at Pinterest
PDF
Sapo Microservices Architecture
PDF
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
PDF
Angular
ODP
An Introduction to Vuejs
PDF
Why Vue.js?
PPTX
Jenkins CI
PDF
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...
초보자를 위한 Git & GitHub
Beginner's guide to git and github
Write microservice in golang
Thiết kế hệ thống E-Commerce yêu cầu mở rộng
Angular
Basics of VueJS
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
Understanding GIT and Version Control
Tiki.vn - How we scale as a tech startup
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | Edureka
Software architecture for high traffic website
Introduction to Gitlab | Gitlab 101 | Training Session
Monorepo at Pinterest
Sapo Microservices Architecture
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
Angular
An Introduction to Vuejs
Why Vue.js?
Jenkins CI
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...
Ad

Similar to Building Mage-OS - MageTitans 2023 (20)

PDF
DevHub 3 - Composer plus Magento
PDF
Magento Fireside Chat: "Wiring Mageno Projects"
PPTX
Mage Titans USA 2016 M2 deployment
PPTX
How to edit the core
PDF
Magento 2 Development
PDF
Rock-solid Magento Development and Deployment Workflows
PPTX
Magento & Cloud - Korostelov Avexey
PDF
Magento 2 Capistrano Deploy
PDF
Modern tools for magento development
PDF
Debugging and Magento
PPTX
Sergii Shymko: Magento 2: Composer for Extensions Distribution
PPTX
Magento 2 Composer for Extensions Distribution
PDF
Dependency management in Magento with Composer
PDF
Tools out of the box with Magento 2 in PHPSTORM
PPTX
Magento 2 Deploy Strategies
PDF
Composer and Git in Magento
PDF
Magento Docker Setup.pdf
PPTX
Zendcon magento101
PPTX
Composer for Magento 1.x and Magento 2
PDF
Effectively Reuse the Code Between PHP Projects
DevHub 3 - Composer plus Magento
Magento Fireside Chat: "Wiring Mageno Projects"
Mage Titans USA 2016 M2 deployment
How to edit the core
Magento 2 Development
Rock-solid Magento Development and Deployment Workflows
Magento & Cloud - Korostelov Avexey
Magento 2 Capistrano Deploy
Modern tools for magento development
Debugging and Magento
Sergii Shymko: Magento 2: Composer for Extensions Distribution
Magento 2 Composer for Extensions Distribution
Dependency management in Magento with Composer
Tools out of the box with Magento 2 in PHPSTORM
Magento 2 Deploy Strategies
Composer and Git in Magento
Magento Docker Setup.pdf
Zendcon magento101
Composer for Magento 1.x and Magento 2
Effectively Reuse the Code Between PHP Projects
Ad

More from vinaikopp (20)

PDF
Hyvä: Compatibility Modules
PDF
Hyvä from a developer perspective
PDF
Property Based Testing in PHP
PDF
Property based testing - MageTestFest 2019
PDF
Becoming Certified - MageTitansMCR 2018
PDF
SOS UiComponents
PDF
ClojureScript in Magento 2 - PHPUGMRN
PDF
Magento 2 TDD Code Kata
PDF
Magento 2 TDD Code Kata Intro
PDF
Testing Magento 2
PDF
ClojureScript in Magento 2 - MageTitansMCR 2017
PDF
Lizards & Pumpkins Catalog Replacement at mm17de
PDF
Stories from the other side
PDF
Writing Testable Code (for Magento 1 and 2) 2016 Romaina
PDF
Writing Testable Code (for Magento 1 and 2)
PDF
Writing testable Code (MageTitans Mini 2016)
PDF
Getting your Hands Dirty Testing Magento 2 (at London Meetup)
PDF
Getting your hands dirty testing Magento 2 (at MageTitansIT)
PDF
Architecture in-the-small-slides
PPT
Modern Module Architecture
Hyvä: Compatibility Modules
Hyvä from a developer perspective
Property Based Testing in PHP
Property based testing - MageTestFest 2019
Becoming Certified - MageTitansMCR 2018
SOS UiComponents
ClojureScript in Magento 2 - PHPUGMRN
Magento 2 TDD Code Kata
Magento 2 TDD Code Kata Intro
Testing Magento 2
ClojureScript in Magento 2 - MageTitansMCR 2017
Lizards & Pumpkins Catalog Replacement at mm17de
Stories from the other side
Writing Testable Code (for Magento 1 and 2) 2016 Romaina
Writing Testable Code (for Magento 1 and 2)
Writing testable Code (MageTitans Mini 2016)
Getting your Hands Dirty Testing Magento 2 (at London Meetup)
Getting your hands dirty testing Magento 2 (at MageTitansIT)
Architecture in-the-small-slides
Modern Module Architecture

Recently uploaded (20)

PPTX
Computer Software - Technology and Livelihood Education
DOCX
Modern SharePoint Intranet Templates That Boost Employee Engagement in 2025.docx
PPTX
Plex Media Server 1.28.2.6151 With Crac5 2022 Free .
PDF
Guide to Food Delivery App Development.pdf
PPTX
Trending Python Topics for Data Visualization in 2025
PDF
Ableton Live Suite for MacOS Crack Full Download (Latest 2025)
PPTX
Tech Workshop Escape Room Tech Workshop
PDF
Practical Indispensable Project Management Tips for Delivering Successful Exp...
PPTX
Python is a high-level, interpreted programming language
PDF
Wondershare Recoverit Full Crack New Version (Latest 2025)
PDF
CCleaner 6.39.11548 Crack 2025 License Key
PDF
PDF-XChange Editor Plus 10.7.0.398.0 Crack Free Download Latest 2025
PDF
The Dynamic Duo Transforming Financial Accounting Systems Through Modern Expe...
PDF
How Tridens DevSecOps Ensures Compliance, Security, and Agility
DOCX
How to Use SharePoint as an ISO-Compliant Document Management System
PDF
AI/ML Infra Meetup | Beyond S3's Basics: Architecting for AI-Native Data Access
PDF
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
PDF
DuckDuckGo Private Browser Premium APK for Android Crack Latest 2025
PDF
Visual explanation of Dijkstra's Algorithm using Python
PDF
E-Commerce Website Development Companyin india
Computer Software - Technology and Livelihood Education
Modern SharePoint Intranet Templates That Boost Employee Engagement in 2025.docx
Plex Media Server 1.28.2.6151 With Crac5 2022 Free .
Guide to Food Delivery App Development.pdf
Trending Python Topics for Data Visualization in 2025
Ableton Live Suite for MacOS Crack Full Download (Latest 2025)
Tech Workshop Escape Room Tech Workshop
Practical Indispensable Project Management Tips for Delivering Successful Exp...
Python is a high-level, interpreted programming language
Wondershare Recoverit Full Crack New Version (Latest 2025)
CCleaner 6.39.11548 Crack 2025 License Key
PDF-XChange Editor Plus 10.7.0.398.0 Crack Free Download Latest 2025
The Dynamic Duo Transforming Financial Accounting Systems Through Modern Expe...
How Tridens DevSecOps Ensures Compliance, Security, and Agility
How to Use SharePoint as an ISO-Compliant Document Management System
AI/ML Infra Meetup | Beyond S3's Basics: Architecting for AI-Native Data Access
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
DuckDuckGo Private Browser Premium APK for Android Crack Latest 2025
Visual explanation of Dijkstra's Algorithm using Python
E-Commerce Website Development Companyin india

Building Mage-OS - MageTitans 2023

  • 1. Mage-os.org 22. Apr. 2023 Building Mage-OS Or: DIY Magento Releases
  • 2. Mage-os.org 22. Apr. 2023 Mage-OS is an open initiative to ensure the accessibility, longevity, and success of the Magento® platform and ecosystem. The Mage-OS Distribution is a community owned fork of Magento Open Source. Building a Distribution
  • 3. Mage-os.org 22. Apr. 2023 How are Mage-OS release packages built?
  • 4. Mage-os.org 22. Apr. 2023 Back when we started: the first ideas… Magento is many modules in a mono-repo > Symfony uses splitsh/lite, maybe we can use it! > There also are other existing tools…
  • 5. Mage-os.org 22. Apr. 2023 First experiments Splitting the magento repo into subrepos took ~36 hours!
  • 6. Mage-os.org 22. Apr. 2023 Okay, something custom then! “The Plan” - Clone repo - List all tags - For each "version" tag… - Iterate over all folders in app/code/Magento - Zip the folder as a composer package using the name and version in the composer.json file in each directory - Use composer/satis to use the directory with the zips as an artifact type repo
  • 7. Mage-os.org 22. Apr. 2023 Time to build! Ivan: Let’s create a Rust repo-splitter that keeps the git repo in-memory so no working copy is needed! Vinai: Let’s keep it simple and write a shell script version, too! > The more implementations we get, the better our understanding of the problem will be and the more people will be able to work on it (rust, bash, js, …) <
  • 8. Mage-os.org 22. Apr. 2023 One tool made it to production 🎉 The JavaScript implementation started as an experiment. Turned out to be good enough! Also available as a docker image magece/mageos-repo-js to build your own Mage-OS repositories!
  • 9. Mage-os.org 22. Apr. 2023 Beside the module & framework packages magento/project-community-edition metapackage (e.g. 2.4.5-p2) depends on ⬇️ magento/product-community-edition metapackage (e.g. 2.4.5-p2) depends on ⬇️ EVERY MAGENTO PACKAGE included in 2.4.5-p2 in a specific version (e.g. 103.0.2) and also ⬇️ magento/magento2-base (2.4.5-p2)
  • 10. Mage-os.org 22. Apr. 2023 The magento2-base package Contains base directory filesystem structure, i.e. app/code, bin/, dev/, ...
  • 11. Mage-os.org 22. Apr. 2023 The magento2-base package It depends on magento/magento-composer-installer. It declares extra.map in composer.json. The magento/magento-composer-installer copies the extra.map files and folders from the package into the project base.
  • 12. Mage-os.org 22. Apr. 2023 There is no way to determine the extra.map contents programmatically. From what is visible outside of Magento/Adobe, the map seems to be maintained manually. The magento2-base package
  • 13. Mage-os.org 22. Apr. 2023 Solution for mirror packages: copy the magento2-base composer.json of all past releases from upstream The magento2-base package
  • 14. Mage-os.org 22. Apr. 2023 There be Dragons Inconsistencies! The git repos don’t match the old Magento releases exactly… - Version mismatch in package composer.json and base package composer.json - No version in package composer.json - Missing release tags - Branches with version name instead of a tag (did that branch change after the release??) - For some releases, no commit in public repo matches the released code exactly (file missing or file is different)
  • 15. Mage-os.org 22. Apr. 2023 Workarounds Each problem requires a different workaround, e.g. adding missing tags or files.
  • 16. Mage-os.org 22. Apr. 2023 You did this for all versions of Magento 2? Nope. We only support releases since 2.3.7-p2.
  • 17. Mage-os.org 22. Apr. 2023 Finally: it installs!
  • 18. Mage-os.org 22. Apr. 2023 Why is there no 2FA for Admin login?
  • 19. Mage-os.org 22. Apr. 2023 Ups! There is more than one git repo! - https://github.com/mage-os/mirror-security-package - https://github.com/mage-os/mirror-inventory - https://github.com/mage-os/mirror-magento2-page-builder - https://github.com/mage-os/mirror-inventory-composer-installer - https://github.com/mage-os/mirror-adobe-ims - https://github.com/mage-os/mirror-adobe-stock-integration - https://github.com/mage-os/mirror-magento-composer-installer - https://github.com/mage-os/mirror-composer-root-update-plugin - https://github.com/mage-os/mirror-composer-dependency-version-audit-plugin - https://github.com/mage-os/mirror-magento2-sample-data (not a direct dep) - https://github.com/mage-os/mirror-commerce-data-export (not a direct dep)
  • 20. Mage-os.org 22. Apr. 2023 Different repos, different Structures - Single package repos, like mage-os/mirror-inventory-composer-installer - Multiple packages in base, like mage-os/mirror-security-package - Meta-package in _metapackage dir, like mage-os/mirror-security-package - Special case subdirectory package, like mage-os/mirror-magento2/tree/2.4-develop/lib/internal/Magento/Framework/Amqp - Repos that change the directory structure, like mage-os/mirror-inventory (first a clone of magento/magento2, then only app/code/Magento/* folders + _metapackage)
  • 21. Mage-os.org 22. Apr. 2023 Additional dependencies! The dependency on the packages from those repos are added to the magento/product- community-edition package.
  • 22. Mage-os.org 22. Apr. 2023 Bundled Core Extensions - amzn/amazon-pay-and-login-magento-2-module - dotmailer/dotmailer-magento2-extension - klarna/m2-payments - paypal/module-braintree - temando/module-shipping - vertex/product-magento-module - yotpo/magento2-module-yotpo-reviews
  • 23. Mage-os.org 22. Apr. 2023 Bundled Core Extensions - Magento forked the public upstream repos - These forks are not public - Solution for mirror: copy released packages from upstream - Solution for Mage-OS distro: no core bundled modules
  • 24. Mage-os.org 22. Apr. 2023 Are you sure everything is working now?
  • 25. Mage-os.org 22. Apr. 2023 Quality Assurance - Install release from mirror.mage-os.org - Install release from repo.magento.com - Compare versions and files
  • 26. Mage-os.org 22. Apr. 2023 We have mirror releases ✅
  • 27. Mage-os.org 22. Apr. 2023 We have mirror releases ✅ Next step: nightly builds!
  • 28. Mage-os.org 22. Apr. 2023 What is different from a mirror build? Use the head of a branch instead of a git tag. Figure out a nightly-build version for each package instead of relying on a version in composer.json.
  • 29. Mage-os.org 22. Apr. 2023 Nightly Package Versions After considering many options, we now use - get the latest release tag of the repo - get the version of all packages - if less than 4 parts are present: increment last part of the current version, otherwise increment the last part - if there is no stability suffix, add an -aYYYYMMDD suffix to version - otherwise keep the stability suffix and add YYYYMMDD
  • 30. Mage-os.org 22. Apr. 2023 What deps to use in the base package? - clone repo - run composer install - use github.com/mage-os/php-dependency-list to scan every .php, .phtml and di.xml file - For each referenced PHP class - Use the composer autoloader to determine which package contains the class - Record the package name and version as a composer dependency for the base package
  • 31. Mage-os.org 22. Apr. 2023 Upstream Nightly Releases ✅ composer create-project magento/project-community-edition --repository-url https://upstream-nightly.mage-os.org --stability alpha ./current-nightly
  • 32. Mage-os.org 22. Apr. 2023 Mage-OS Nightly Releases ✅ The same process as upstream-nightly works for the mageos-nightly builds, too!
  • 33. Mage-os.org 22. Apr. 2023 New upstream Magento Open Source release? - copy project-community-edition, product-community-edition and base-package composer.json into the respective resources/history/magento/* folder with the release version as the name - run the build - install and validate new version - add workarounds for missing tags and such to build config, re-build and test until everything works - PR to github.com/mage-os/generate-mirror-repo-js, run action against preview-mirror.mage-os.org - Merge PR, new packages are built and deployed to mirror.mage-os.org
  • 34. Mage-os.org 22. Apr. 2023 GitHub Actions
  • 35. Mage-os.org 22. Apr. 2023 Time for a wee bit of code?
  • 36. Mage-os.org 22. Apr. 2023 The Build Config Everything is declared in “the build config”. Base config extended by build type (mirror, upstream-nightly or mageos-nightly) Config is processed by the build script to generate the package ZIP files.
  • 37. Mage-os.org 22. Apr. 2023 The Build Config
  • 38. Mage-os.org 22. Apr. 2023 Next steps Come! Pls halp!
  • 39. Mage-os.org 22. Apr. 2023 Next steps Active Projects: - Generate a real Mage-OS release - Faster Integration & Unit Tests - (hi Adam + Damien!) - New Features - (hey Gowri + Ivan!) - Content!
  • 40. Mage-os.org 22. Apr. 2023 Join our Community Adam Crossland (UK) Alexander Buch (DE) Andreas Mautz (DE) Anton Siniorg (EE) Arron Moss (UK) Barbaros Selim Büyükelçi (TR) Benno Lippert (DE) Bernard Robbins (US) Brent Peterson (US) Christian Münch (DE) Damien Retzinger (US) Daniel Fahlke (DE) Daniel Sloof (NL) David Lambauer (DE) Dominik Rammert (DE) Erik Hanson (US) Gowri Sankar (AU) Jisse Reitsma (NL) John Prendergast (IE) Nicole Mentzen (DE) Roland Haselager (NL) Sergei Derzap (BY) Tim Bucciarelli (US) Timon de Groot (NL) Vitaliy Golomozy (UA) Willem Wigman (NL) Wouter Steenmeijer (NL) Thank you to the contributors!
  • 41. Mage-os.org 22. Apr. 2023 Mage-OS Fork it, Own it, Grow it, Better! TOGETHER

Editor's Notes

  • #2: I’m so happy to see you, and have the opportunity to talk about Mage-OS! My name is Vinai, and I’m happy I can be with you in person today, as with all previous MageTitans events here in Manchester! I’ve got very, very fond memories of MageTitans, it’s the best! Let’s get started!
  • #3: In a nutshell: this is what is on our website: “Mage-OS is an open initiative…[read left side of slide]” The foundation of Mage-OS is the Mage-OS Distribution. “The Mage-OS distribution is a…[read right side of slide]” What does community-owned mean? It’s easy to gloss over that, but it’s actually the heart of everything. What is community?
  • #5: > Magento is many modules in a single repo, (a.k.a. “mono-as-poly”) > Synfony uses splitsh/lite, maybe we can use it! > There also are other tools that can be used to build packages from a monorepo
  • #6: Thanks to Rafael Kassner for his work on https://github.com/magefm/repository-generator
  • #9: The name “generate-mirror-repo-js” is not fitting any more! A better name would be “generate-mageos-composer-repo”.
  • #26: Thanks to Daniel Sloof! 🙌🏻
  • #27: Next: nightly releases of upstream!
  • #28: Next: nightly releases of upstream!
  • #35: Special shoutout to Damien Retzinger of Mappia helm chart fame.
  • #41: There are dozens of people who already have helped and contributed to Mage-OS, even though we are only just getting started. Thank you to everyone who took joint ownership and move Mage-OS forward!
  • #42: We look forward to creating the future together with you! Thank you!