Part 7: Releasing your extension
This is the seventh part of Extension development: the book. A release turns "the code in my repository" into "version 1.2.3, which you can install and rely on". It is a promise: that this version will always mean exactly these files. This part shows how to make that promise carefully, because once a version is published, it cannot be taken back.
The chapters
| Chapter | What it answers |
|---|---|
| Versioning rules | what the numbers mean, and how the last position counts on |
| Choosing the next version number | looking up what is already published, correctly sorted |
| Tags and releases are permanent | why a pushed tag is never moved, and what to do instead |
| Bumping ezinfo.php and extension.xml | the version inside the extension, before the tag |
| Composer and Packagist | registering the package so composer require finds it |
| The Packagist webhook | why a new tag does not show up, and how to fix it |
| Changelogs | writing what changed, from the commit messages |
| GitHub releases and release notes | the release page users read |
| filelist.md5 and the upgrade check | checksums for extensions that ship them |
| Packages (.ezpkg) and the package creator | the other way to distribute |
| Testing before a release | what to run before you tag |
| Announcing a release | telling the people who use it |
| The maintenance life cycle | from the first release to the last |
| The release checklist | the whole procedure on one page |
The one rule
Never move, delete or re-create a tag that has been pushed, and never replace the files of a published release. If a release is wrong, publish the next version with the fix and say what was wrong in its notes. The reasons are in Tags and releases are permanent; everything else in this part is about getting it right the first time.
Related pages
- Previous: Where the designers' help continues
- Next: Versioning rules
- Extension metadata specification
- Contribute extensions back
- Extension development: the book
- Free documentation: this page is free to copy, translate and improve under the GNU FDL 1.3.
Become an Exponential Partner
Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.