Difference between revisions of "Steps for an official release"

From OpenEMR Project Wiki
 
(110 intermediate revisions by 2 users not shown)
Line 1: Line 1:
==Overview==
==Overview==
Steps detailing a release (4.0 is given as an example).
Steps detailing a release (7.0.2 is given as an example).


==1. Create a rel-400 branch from master in the git repo.==
==1. Create a rel-702 branch from master in the git repo.==
==2. Release an online development demo that uses the rel-400 branch and updates daily.==
:* 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 provide links for downloading rel-400 daily builds/packages(zip and tarball) to allow testing of installation and upgrading by testers
:* Also need to update Github Actions related stuff in .github/workflows/ and at top of main README.md


==3. Publish installation, upgrade, and downloading instructions==
==2. Release an online development demo that uses the rel-702 branch and updates daily.==
==3. Finalize the translations in the rel-400 branch.==
:*Also provide links for downloading rel-702 daily builds/packages(zip and tarball) to allow testing of installation and upgrading by testers
==4. Bug fix and finalize the rel-400 branch.==
==5. Create a list of new features in the rel-400 branch (since the last official release)==
:* [[Release_Features|Page for maintaining the new feature lists.]]


==6. Prepare files for the Ubuntu/debian package==
==3. Publish installation, upgrade, and downloading instructions. Also set minimum php version.==
::*('''NOTE there will be a large refactoring of this package in 4.1 release to ensure it works well with ubuntu 11.04''')
:*[[OpenEMR_Installation_Guides|Installation documention]]
::*Ensure following files are updated at openemr/contrib/util/ubuntu_package_scripts/production/ in codebase:
:*[[OpenEMR_Upgrade_Guides|Upgrade documentation]]
:::*control
:*Also update the Documentation/INSTALL file
::::*Update Version
:*Ensure have correct minimum php version [https://github.com/openemr/openemr/blob/master/src/Common/Compatibility/Checker.php#L19 set in OpenEMR].
::::*Update Installed-Size (just estimate it, doesn't need to be accurate)
:*Ensure [[OpenEMR_Wiki_Home_Page#API|API documentation]]
::::*Add new package dependencies (if pertinent, for example in 4.0.0, added php5-curl and php5-mcrypt)
:* Ensure [[OpenEMR_7.0_B10|b10 documentation]]
:::*README.Debian
:*ONC related items
::::*Change the dates at bottom of file to release date (use date -R to get correctly formatted date).
::*Ensure have the ONC requirements page created and linked in instruction sets (install set, upgrade set, download webpage).
:::*changelog.Debian
::*The https://www.open-emr.org/wiki/index.php/OpenEMR_7.0.0_API is published as the link for API documentation and as the link for posting Service Base URLs. Thus that link will always need to be redirected to the most current OpenEMR_7.0.x_API version API page. It will be easy for 7.0.0 since will just keep what have (note do need to adjust the links in the page to go to correct branch and not master and also need to adjust the fhir demo links). When got to 7.0.1 will need to redirect OpenEMR_7.0.0_API to OpenEMR_7.0.1_API and move OpenEMR_7.0.0_API original material to another page (maybe OpenEMR_7.0.0_API-prior) again updating links and fhir demo links. When go to 7.0.2 just simply need to redirect OpenEMR_7.0.0_API to OpenEMR_7.0.2_API (which is copy of OpenEMR_7.0.1_API with updated links) and keep OpenEMR_7.0.1_API same name. Note that Service Based URLs is a template (at [[template:ServiceBaseURLs]]) so will show in every API page (which is what we want).
::::* Add entry for new version:
::*Also need to manage the https://www.open-emr.org/wiki/index.php/OpenEMR_7.0_B10 which is akin to how do the API pages above.
<pre>openemr (4.0.0-1) stable; urgency=low


  * New upstream version
==4. Finalize the translations in the rel-702 branch.==


-- Brady Miller <brady@sparmy.com>  Fri, 25 Mar 2011 22:46:08 -0700</pre>
==5. Bug fix and finalize the rel-702 branch.==
:::*copyright
:* Update the copyright/acknowledgements page by copying the copyright page from [[Talk:OpenEMR_Acknowledgments|HERE]] to acknowledge_license_cert.html in openemr codebase
::::*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 (note that the release after 4.0.0 will need to add some code for the differences in where the version is stored in pre vs post 4.0)


==7. Release rel-400 branch by tagging in git repo with v4_0_0.==
==6. Create a list of new features in the rel-702 branch (since the last official release)==
:* [[Release_Features|Page for maintaining the new feature lists.]]
 
==7. Prepare for docker upgrade==
:# Increment docker-version file (increment number by 1) in openemr base directory (in both master and rel-702 branch)
:# Increment docker-version file (increment number by 1) in openemr sites/default directory (in both master and rel-702 branch)
:# Increment docker-version file (increment number by 1) in docker /root/ (this is in the upgrade directory in the repo)  (do this for both 7.0.2 and future 7.0.3 dockers)
:# Create fsupgrade-<number-incremented-to-above>.sh in docker /root/ and at least set priorOpenemrVersion and do the database upgrade (this is in the upgrade directory in the repo) (do this for both 7.0.2 and future 7.0.3 dockers)
:# 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) (do this for both 7.0.2 and future 7.0.3 dockers)
 
==8. Release rel-702 branch by tagging in git repo with v7_0_2.==
::* Things to remember before tagging the release.
::* Things to remember before tagging the release.
:::* Remove -dev from $v_tag (make it blank) in the version.php file
:::* 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
:::* 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:
:::* Set version in images in the following docker-compose.yml scripts: docker/production/docker-compose.yml, docker/production-arm/docker-compose.yml
  git tag v4_0_0 rel-400
:::* In _rest_routes.inc.php, set openemr version and do a api docs build
:::* Set version in composer.json
::* In git repo:
  git tag v7_0_2 rel-702


==8. Build the tar.gz, zip and deb packages from v4_0_0.==
==9. Build the docker, tar.gz and zip packages from v7_0_2.==
:Use following script for the tar.gz and zip packages: https://gist.github.com/bradymiller/94409d7b6eadfd3ee34ff7b4363aac25
:Build the docker via the github action for the docker (and ensure it gets the `latest` tag)


:Here is a script that automates the below release builds below: http://gist.github.com/884734
==10. Release packages on sourceforge==
:*Upload via Project Admin
:*Upload release and a release notes file
:*Set file properties appropriately


===Download release from sourceforge git repository===
==11. Announce Release==
git clone git://openemr.git.sourceforge.net/gitroot/openemr/openemr
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.
cd openemr
:*Sourceforge
git checkout v4_0_0
:*Twitter
cd ../
:*Facebook
rm -fr openemr/.git
:*Diaspora
:*[[OpenEMR Mastodon Page|Mastodon]]
:*Linkedin
:*https://www.reddit.com/r/OpenEMR
:*Announce to registered users


===Set permissions for tarball and zip===
Update the OpenEMR Wikipedia entry:
cp -a openemr/ openemr-4.0.0/
:*Wikipedia
chmod -R u+w openemr-4.0.0
chmod -R a+w openemr-4.0.0/sites/default/documents
chmod -R a+w openemr-4.0.0/sites/default/edi
chmod -R a+w openemr-4.0.0/sites/default/era
chmod -R a+w openemr-4.0.0/sites/default/letter_templates
chmod a+w openemr-4.0.0/sites/default/sqlconf.php
chmod a+w openemr-4.0.0/sites/default/config.php
chmod -R a+w openemr-4.0.0/gacl/admin/templates_c
chmod -R a+w openemr-4.0.0/interface/main/calendar/modules/PostCalendar/pntemplates/cache
chmod -R a+w openemr-4.0.0/interface/main/calendar/modules/PostCalendar/pntemplates/compiled


===Build tarball (Linux)===
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:
tar zcpf openemr-4.0.0.tar.gz openemr-4.0.0


===Build zip (Windows)===
:*OpenHealthNews
zip -r openemr-4.0.0.zip openemr-4.0.0
:*HackerNews


===Build deb (Debian/Ubuntu package)===
TODO: are there any other OSS sites that would be interested in having OpenEMR releases pop up in their feeds?
mkdir -p debian/DEBIAN
mkdir -p debian/usr/share/applications
mkdir -p debian/usr/share/doc/openemr/
mkdir -p debian/usr/share/man/man8
mkdir -p debian/var/www
cp openemr/contrib/util/ubuntu_package_scripts/production/control debian/DEBIAN/
cp openemr/contrib/util/ubuntu_package_scripts/production/preinst debian/DEBIAN/
cp openemr/contrib/util/ubuntu_package_scripts/production/postinst debian/DEBIAN/
cp openemr/contrib/util/ubuntu_package_scripts/production/prerm debian/DEBIAN/
cp openemr/contrib/util/ubuntu_package_scripts/production/postrm debian/DEBIAN/
chmod +x debian/DEBIAN/preinst
chmod +x debian/DEBIAN/postinst
chmod +x debian/DEBIAN/prerm
chmod +x debian/DEBIAN/postrm
cp openemr/contrib/util/ubuntu_package_scripts/production/openemr.desktop debian/usr/share/applications/
cp openemr/contrib/util/ubuntu_package_scripts/production/changelog.Debian debian/usr/share/doc/openemr/
gzip --best debian/usr/share/doc/openemr/changelog.Debian
cp openemr/contrib/util/ubuntu_package_scripts/production/copyright debian/usr/share/doc/openemr/
cp openemr/contrib/util/ubuntu_package_scripts/production/README.Debian debian/usr/share/doc/openemr/
cp openemr/contrib/util/ubuntu_package_scripts/production/openemr.8 debian/usr/share/man/man8/
gzip --best debian/usr/share/man/man8/openemr.8
cp -a openemr/ debian/var/www/openemr/
fakeroot dpkg-deb --build debian
mv debian.deb openemr_4.0.0-1_all.deb
lintian openemr_4.0.0-1_all.deb


==9. Release packages on sourceforge==
==12. Build and release the Cloud packages.==
:*Upload via Project Admin
# AWS
:*Upload release and a release notes file
<br>
:*Set file properties appropriately
<br>


==10. Build and release the Appliance.==
[[Category:Release]][[Category:Linux Package]][[Category:Windows Package]][[Category:Ubuntu Package]][[Category:Debian Package]][[Category:XAMPP-OpenEMR Package]][[Category:Appliance]]
==11. Build and release the Windows XAMPP package.==

Latest revision as of 06:14, 23 March 2024

Overview

Steps detailing a release (7.0.2 is given as an example).

1. Create a rel-702 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-702 branch and updates daily.

  • Also provide links for downloading rel-702 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.

  • Ensure have the ONC requirements page created and linked in instruction sets (install set, upgrade set, download webpage).
  • The https://www.open-emr.org/wiki/index.php/OpenEMR_7.0.0_API is published as the link for API documentation and as the link for posting Service Base URLs. Thus that link will always need to be redirected to the most current OpenEMR_7.0.x_API version API page. It will be easy for 7.0.0 since will just keep what have (note do need to adjust the links in the page to go to correct branch and not master and also need to adjust the fhir demo links). When got to 7.0.1 will need to redirect OpenEMR_7.0.0_API to OpenEMR_7.0.1_API and move OpenEMR_7.0.0_API original material to another page (maybe OpenEMR_7.0.0_API-prior) again updating links and fhir demo links. When go to 7.0.2 just simply need to redirect OpenEMR_7.0.0_API to OpenEMR_7.0.2_API (which is copy of OpenEMR_7.0.1_API with updated links) and keep OpenEMR_7.0.1_API same name. Note that Service Based URLs is a template (at template:ServiceBaseURLs) so will show in every API page (which is what we want).
  • Also need to manage the https://www.open-emr.org/wiki/index.php/OpenEMR_7.0_B10 which is akin to how do the API pages above.

4. Finalize the translations in the rel-702 branch.

5. Bug fix and finalize the rel-702 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-702 branch (since the last official release)

7. Prepare for docker upgrade

  1. Increment docker-version file (increment number by 1) in openemr base directory (in both master and rel-702 branch)
  2. Increment docker-version file (increment number by 1) in openemr sites/default directory (in both master and rel-702 branch)
  3. Increment docker-version file (increment number by 1) in docker /root/ (this is in the upgrade directory in the repo) (do this for both 7.0.2 and future 7.0.3 dockers)
  4. Create fsupgrade-<number-incremented-to-above>.sh in docker /root/ and at least set priorOpenemrVersion and do the database upgrade (this is in the upgrade directory in the repo) (do this for both 7.0.2 and future 7.0.3 dockers)
  5. 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) (do this for both 7.0.2 and future 7.0.3 dockers)

8. Release rel-702 branch by tagging in git repo with v7_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
  • Set version in images in the following docker-compose.yml scripts: docker/production/docker-compose.yml, docker/production-arm/docker-compose.yml
  • In _rest_routes.inc.php, set openemr version and do a api docs build
  • Set version in composer.json
  • In git repo:
git tag v7_0_2 rel-702

9. Build the docker, tar.gz and zip packages from v7_0_2.

Use following script for the tar.gz and zip packages: https://gist.github.com/bradymiller/94409d7b6eadfd3ee34ff7b4363aac25
Build the docker via the github action for the docker (and ensure it gets the `latest` tag)

10. Release packages on sourceforge

  • Upload via Project Admin
  • Upload release and a release notes file
  • Set file properties appropriately

11. 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.

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:

  • OpenHealthNews
  • HackerNews

TODO: are there any other OSS sites that would be interested in having OpenEMR releases pop up in their feeds?

12. Build and release the Cloud packages.

  1. AWS