Release Procedure
Branch Overview
There are typically three types of branches on IXP Manager's GitHub repository:
- The
mainbranch is where new features, improvements and bug fixes are staged before release. These will not necessary have gone through our formal pre-release testing (unit tests, static code analysis, etc.), and so should not be considered safe for production. - The
release-vXbranches are where we stage code for release that is considered safe togit pullon an installation of IXP Manager already running at the most recent release. While we would not ordinarily include database migrations in these 'between release' commits, the standard upgrade process should be followed. - All other branches are work in progress.
Release Procedure
- Update the
.env.examplefile with new options and comments. - Draft release notes on GitHub.
- Ensure all third-party libraries and dependencies have been updated.
composer update - Ensure all asset libraries have been updated, and assets have been built for production,
npm update npm run prod - Update the IXP Manager automated installation script if necessary.
- Merge
mainintorelease-vX:git checkout release-vX git rebase/merge main - Update any necessary documentation on https://docs.ixpmanager.org/. Also update the current and development tags so that the versioned documenation will default to the new release major.minor if necessary.
- Run the full suite of PHPUnit tests and Pslam static code analysis:
If there are any issues, correct them and rerun. Once they run cleanly, copy the output for the release notes.
# in one tab: php artisan serve # in another: ./vendor/laravel/dusk/bin/chromedriver-mac-arm --port=9515 # and then run the tests: cp .env.ci .env cat data/ci/ci_test_db.sql | mysql -u root ixp_ci ./vendor/bin/phpunit # static code analysis: ./vendor/bin/psalm --clear-cache ./vendor/bin/psalm --use-baseline=psalm-baseline.xml - Push the release-vX branch to GitHub, and check for any remaining issues on Dependabot. If there are issues, address them.
- Ensure the GitHub Action's runner completes cleanly (GitHub runs of PHPUnit and psalm). If there are issues, address them.
- Update the version details and tag the GitHub release.
joe version.sh git tag vx.y.z git commit -am 'Tagging release vx.y.z' git push git push --tags - Update the draft release notes to reference the tag.
- Complete internal INEX change management procedures to approve the new release.
- Publish the new release on GitHub.
- Create two release announcements, one for the ixpmanager-announce mailing list and one for the discussion list.