Difference between revisions of "Steps for an official release"

From OpenEMR Project Wiki
 
(38 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Overview==
==Overview==
Steps detailing a release (5.0.2 is given as an example).
Steps detailing a release (7.0.2 is given as an example).


==1. Create a rel-502 branch from master in the git repo.==
==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.
:* 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.==
==2. Release an online development demo that uses the rel-702 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
:*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.==
==3. Publish installation, upgrade, and downloading instructions. Also set minimum php version.==
Line 12: Line 13:
:*[[OpenEMR_Upgrade_Guides|Upgrade documentation]]
:*[[OpenEMR_Upgrade_Guides|Upgrade documentation]]
:*Also update the Documentation/INSTALL file
:*Also update the Documentation/INSTALL file
:*Ensure have correct minimum php version [https://github.com/openemr/openemr/blob/master/common/compatibility/Checker.php#L19 set in OpenEMR].
:*Ensure have correct minimum php version [https://github.com/openemr/openemr/blob/master/src/Common/Compatibility/Checker.php#L19 set in OpenEMR].
:*Ensure [[OpenEMR_Wiki_Home_Page#API|API documentation]]
:* Ensure [[OpenEMR_7.0_B10|b10 documentation]]
:*ONC related items
::*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-502 branch.==
==4. Finalize the translations in the rel-702 branch.==


==5. Bug fix and finalize the rel-502 branch.==
==5. Bug fix and finalize the rel-702 branch.==
:* Update the copyright/acknowledgements page by copying the copyright page from [[Talk:OpenEMR_Acknowledgments|HERE]] to acknowledge_license_cert.html in openemr codebase
:* Update the copyright/acknowledgements page by copying the copyright page from [[Talk:OpenEMR_Acknowledgments|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)==
==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.]]
:* [[Release_Features|Page for maintaining the new feature lists.]]


==7. Prepare for docker upgrade==
==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 (in both master and rel-702 branch)
:# 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 (in both master and rel-702 branch)
:# Increment docker-version file (increment number by 1) in openemr sites/default directory
:# 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
:# 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)
:# 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. Prepare files for the Ubuntu/debian package==
==8. Release rel-702 branch by tagging in git repo with v7_0_2.==
::*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:
<pre>openemr (5.0.2-1) stable; urgency=low
 
  * New upstream version
 
-- Brady Miller <brady@sparmy.com>  Fri, 25 Mar 2011 22:46:08 -0700</pre>
:::*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.
::* 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 v5_0_0 rel-500
:::* 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


==10. Build the docker, tar.gz, zip and deb packages from v5_0_2.==
==9. Build the docker, tar.gz and zip packages from v7_0_2.==
:Use following script for the tar.gz, zip, and deb packages: https://gist.github.com/bradymiller/94409d7b6eadfd3ee34ff7b4363aac25
: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)


==11. Release packages on sourceforge==
==10. Release packages on sourceforge==
:*Upload via Project Admin
:*Upload via Project Admin
:*Upload release and a release notes file
:*Upload release and a release notes file
:*Set file properties appropriately
:*Set file properties appropriately


==12. Announce Release==
==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.
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
:*Sourceforge
:*Twitter
:*Twitter
:*Facebook
:*Facebook
:*google+
:*Diaspora
:*Diaspora
:*[[OpenEMR Mastodon Page|Mastodon]]
:*[[OpenEMR Mastodon Page|Mastodon]]
Line 82: Line 71:
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:
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
:*OpenHealthNews
:*HackerNews
:*HackerNews
Line 88: Line 76:
TODO: are there any other OSS sites that would be interested in having OpenEMR releases pop up in their feeds?
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.==
==12. Build and release the Cloud packages.==
# Update php.ini (xampp/php/php.ini)
# AWS
#* Uncomment extensions for ldap and openssl
# Update apache config (xampp/apache/conf/httpd.conf)
# Update mariadb innodb config (/xampp/mysql/bin/my.ini)
<br>
 
==14. Build and release the Cloud packages.==
<br>
<br>
<br>
<br>


[[Category:Release]][[Category:Linux Package]][[Category:Windows Package]][[Category:Ubuntu Package]][[Category:Debian Package]][[Category:XAMPP-OpenEMR Package]][[Category:Appliance]]
[[Category:Release]][[Category:Linux Package]][[Category:Windows Package]][[Category:Ubuntu Package]][[Category:Debian Package]][[Category:XAMPP-OpenEMR Package]][[Category:Appliance]]

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