Steps for an official release
Overview
Steps detailing a release (5.0.2 is given as an example).
1. Create a rel-502 branch from master in the git repo.
- Create this in github (very straightforward) and protect the branch to not allow force pushing and also only allow integrator group to write to it.
- Also need to update Github Actions related stuff in .github/workflows/ and at top of main README.md
2. Release an online development demo that uses the rel-502 branch and updates daily.
- Also provide links for downloading rel-502 daily builds/packages(zip and tarball) to allow testing of installation and upgrading by testers
3. Publish installation, upgrade, and downloading instructions. Also set minimum php version.
- Installation documention
- Upgrade documentation
- Also update the Documentation/INSTALL file
- Ensure have correct minimum php version set in OpenEMR.
4. Finalize the translations in the rel-502 branch.
5. Bug fix and finalize the rel-502 branch.
- Update the copyright/acknowledgements page by copying the copyright page from HERE to acknowledge_license_cert.html in openemr codebase
6. Create a list of new features in the rel-502 branch (since the last official release)
7. Prepare for docker upgrade
- Increment docker-version file (increment number by 1) in docker /root/
- Increment docker-version file (increment number by 1) in openemr base directory
- Increment docker-version file (increment number by 1) in openemr sites/default directory
- Create fsupgrade-<number-incremented-to-above>.sh in docker /root/ and at least set priorOpenemrVersion and do the database upgrade
- Edit Dockerfile to bring in the fsupgrade-<number-incremented-to-above>.sh and docker-version file into the docker (these are in the upgrade directory in the repo)
8. Prepare files for the Ubuntu/debian package
- Ensure following files are updated at openemr/contrib/util/ubuntu_package_scripts/production/ in codebase:
- control
- Update Version
- Update Installed-Size (just estimate it, doesn't need to be accurate)
- Add new package dependencies (if pertinent, for example in 4.1.0, adding php5-soap and also a Pre-Depends:debconf)
- README.Debian
- Change the dates at bottom of file to release date (use date -R to get correctly formatted date).
- changelog.Debian
- Add entry for new version:
openemr (5.0.2-1) stable; urgency=low * New upstream version -- Brady Miller <brady@sparmy.com> Fri, 25 Mar 2011 22:46:08 -0700
- copyright
- Add current date near top (use date -R to get correctly formatted date)
- Modify the copyright years (two of them), if needed
- preinst
- Update the algorithm to upgrade the previous version correctly
9. Release rel-502 branch by tagging in git repo with v5_0_2.
- Things to remember before tagging the release.
- Remove -dev from $v_tag (make it blank) in the version.php file
- Ensure the 'allow_debug_language' global in locale section in library/globals.inc.php is defaulted to 0
- Login into the sourceforge shell and go to the git repo and type:
git tag v5_0_0 rel-500
10. Build the docker, tar.gz, zip and deb packages from v5_0_2.
- Use following script for the tar.gz, zip, and deb packages: https://gist.github.com/bradymiller/94409d7b6eadfd3ee34ff7b4363aac25
11. Release packages on sourceforge
- Upload via Project Admin
- Upload release and a release notes file
- Set file properties appropriately
12. Announce Release
Use the follow social channels to announce the release in ~140 characters or less with a link to the formal release marketing piece or, if the release is a minor or patch release, a link to the wiki release changelog.
- Sourceforge
- google+
- Diaspora
- Mastodon
- https://www.reddit.com/r/OpenEMR
- Announce to registered users
Update the OpenEMR Wikipedia entry:
- Wikipedia
If the release is a major release (as opposed to minor or patch releases), it is best to put together a nice marketing piece describing the release changes (screenshots are encouraged with new features!). Use https://www.prnewswire.com/news-releases/openemr-achieves-complete-meaningful-use-certification-with-release-50-300415752.html as inspiration. This release announcement should be posted on the following sites:
- Linuxmednews
- OpenHealthNews
- HackerNews
TODO: are there any other OSS sites that would be interested in having OpenEMR releases pop up in their feeds?
13. Build and release the Windows XAMPP package.
- Update php.ini (xampp/php/php.ini)
- Standard php settings
- Uncomment extensions for ldap and openssl
- Update apache config (xampp/apache/conf/httpd.conf)
- Update mariadb innodb config (/xampp/mysql/bin/my.ini)
- innodb_buffer_pool_size from 16M to 256M
- innodb_log_file_size from 5M to 64M
14. Build and release the Cloud packages.
- AWS