Releases and Patching: Difference between revisions
Jump to navigation
Jump to search
(44 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
== Releases == | == Releases == | ||
The deliverables are: | The deliverables are: | ||
* the tar.gz | * the tar.gz binary file which could be the base for manual installs, and for RPMS. see https://get.openpetra.org/latest | ||
* the | |||
* the | === Things todo for an Open Source release === | ||
** | |||
==== Short version ==== | |||
* develop on dev branch. | |||
* Test with Appveyor (https://ci.openpetra.org), Test mysql on LBS (https://lbs.solidcharity.com/package/solidcharity/openpetra/openpetra-test-server-mysql). | |||
* update Release Notes in https://github.com/openpetra/openpetra/tree/dev/setup/petra0300/releasenotes; see python script get_issues.py https://gist.github.com/tpokorra/d608a8dde183e7bb51f135e052b301cc | |||
* merge into test branch. | |||
* update Weblate and Sync translations to/from Github: https://weblate.openpetra.org/ | |||
* build the binary tarball on lbs (https://lbs.solidcharity.com/package/solidcharity/openpetra/openpetra-bin-tarball) | |||
* done automatically: update https://get.openpetra.org/openpetra-latest-bin.tar.gz to point to the new tarball | |||
* install on demo.test.openpetra.org (similar to demo.openpetra.org) | |||
* try to run /home/openpetra/openpetra-server.sh update | |||
* build the latest demo databases: https://lbs.solidcharity.com/package/solidcharity/openpetra/demodb | |||
* then again build the binary tarball so that the latest base.yml.gz is included, and rebuild openpetranow-mysql-test | |||
* download the latest demo database to the demo.openpetra.org container | |||
* try restore demo database from command line. try running month end. try a report. try to edit partner | |||
* install on demo.openpetra.org | |||
* merge to master, and prod | |||
* Github: tag the release, set the milestone date, close the milestone | |||
* post release notes on the forum and on the github release, link on twitter/facebook, fediverse, and on OpenPetra Download Blog | |||
* build prod openpetranow package | |||
* install on hosted OpenPetra.com. test with my instance: "www.openpetra.com test Zugang" | |||
==== What can/should be done a day or even a few days before the actual release date==== | ==== What can/should be done a day or even a few days before the actual release date==== | ||
Performing all the steps that are listed here on this page can take - on average - a day if the last release has been some months ago. However, the time it takes on the day of the release can potentially be reduced by doing several steps a day or even a few days in advance. | Performing all the steps that are listed here on this page can take - on average - a day if the last release has been some months ago. However, the time it takes on the day of the release can potentially be reduced by doing several steps a day or even a few days in advance. | ||
These are the steps that can be done before the actual release: | These are the steps that can be done before the actual release: | ||
===== | ===== Testing the release packages before the release ===== | ||
* | * create a branch called test in https://github.com/tpokorra/openpetra | ||
* | * increase the version in db/version.txt to 2016.07.0-0 | ||
* build the test branch of the packages: | |||
* | ** https://lbs.solidcharity.com/package/solidcharity/openpetra/openpetra-bin-tarball | ||
** https://lbs.solidcharity.com/package/solidcharity/openpetra/openpetranow-mysql-test | |||
* | |||
* [[Manual tests before a release]] | |||
===== Preparing the text for the [[Releases and Patching#Release Notes|Release Notes]]===== | ===== Preparing the text for the [[Releases and Patching#Release Notes|Release Notes]]===== | ||
* Usually this can be done once the testing phase begins which precedes the release - that might even be a week before the release because even if there is still a major new functionality that might get added before the release will be done this will be known by now and can be written up already. | * Usually this can be done once the testing phase begins which precedes the release - that might even be a week before the release because even if there is still a major new functionality that might get added before the release will be done this will be known by now and can be written up already. | ||
** Obviously the text needs to be looked at carefully at the day of the release, but most of time-consuming work will have been done by then. | ** Obviously the text needs to be looked at carefully at the day of the release, but most of time-consuming work will have been done by then. | ||
=====Preparing up-to-date screenshots===== | =====Preparing up-to-date screenshots===== | ||
* Check which (if any) screenshots on the 'Screenshots' page of the OpenPetra website need updating. | * Check which (if any) screenshots on the 'Screenshots' page of the OpenPetra website need updating. | ||
Line 29: | Line 48: | ||
** Screenshots are listed on that page in a smaller size, and when one clicks on them the full size is shown. The smaller size can also already be prepared in advance. | ** Screenshots are listed on that page in a smaller size, and when one clicks on them the full size is shown. The smaller size can also already be prepared in advance. | ||
==== Update translations from/to | ==== Update translations from/to Weblate ==== | ||
* Download the latest language files from | * Download the latest language files from Weblate. Do a synchronization, and that might create a pull request. | ||
==== Release Notes ==== | ==== Release Notes ==== | ||
Line 115: | Line 61: | ||
====DB Patches==== | ====DB Patches==== | ||
* add new patch sql file to | * add new patch .cs and .sql file to https://github.com/openpetra/openpetra/tree/master/csharp/ICT/Petra/Server/lib/MSysMan/DBUpgrades | ||
* modify file <code>version.txt</code> in directory db/patches so it contains the Version Number of the OpenPetra release that you are creating. | * modify file <code>version.txt</code> in directory db/patches so it contains the Version Number of the OpenPetra release that you are creating. | ||
====Final Steps==== | ====Final Steps==== | ||
===== | ===== Building the release ===== | ||
* | * increase the version in db/version.txt | ||
* merge branch into master, and into test and prod branches | |||
* rebuild the package in LBS | |||
* | ** https://lbs.solidcharity.com/package/solidcharity/openpetra/openpetranow-mysql-test | ||
* | * create a tag and a release in https://github.com/openpetra/openpetra | ||
** | |||
* | |||
===== Making the Release Known to the Public ===== | ===== Making the Release Known to the Public ===== | ||
Line 165: | Line 95: | ||
*** Content of the emails: exactly the same as in the tweets - except if there is a News Update that corresponds with the release: in this case the content of what got posted in the 'News' section of the website. | *** Content of the emails: exactly the same as in the tweets - except if there is a News Update that corresponds with the release: in this case the content of what got posted in the 'News' section of the website. | ||
==== | == Patches == | ||
===== | === patching the database === | ||
OP_CUSTOMER=op_dev /home/openpetra/openpetra-server.sh upgradedb | |||
* | |||
=== Testing the server upgrade === | |||
* | on a testing machine: test.openpetra.org | ||
* Install the previous version on a clean container: | |||
curl https://get.openpetra.org | bash -s old | |||
* run the upgrade: | |||
/home/openpetra/openpetra-server.sh update | |||
* Test the login on https://test.openpetra.org | |||
== | === Reverting to previous version === | ||
export OLDVERSION="2020.04.0-3" | |||
export TagDemoDB="UsedForNUnitTests-202004" | |||
export OP_CUSTOMER=op_demo | |||
yum remove openpetranow-mysql-test | |||
yum install openpetranow-mysql-test-$OLDVERSION.x86_64 --enablerepo=lbs-solidcharity-openpetra | |||
MYSQL_CMD="drop database $OP_CUSTOMER" /home/openpetra/openpetra-server.sh mysql | |||
/home/openpetra/openpetra-server.sh initdb | |||
demodbfile=/tmp/demoWith1ledger.yml.gz | |||
curl --silent --location https://github.com/openpetra/demo-databases/raw/$TagDemoDB/demoWith1ledger.yml.gz > $demodbfile | |||
/home/openpetra/openpetra-server.sh loadYmlGz $demodbfile | |||
Now update: | |||
yum clean expire-cache --disablerepo="*" --enablerepo="lbs-solidcharity-openpetra" | |||
* | /home/openpetra/openpetra-server.sh update | ||
Latest revision as of 04:25, 27 October 2021
Releases
The deliverables are:
- the tar.gz binary file which could be the base for manual installs, and for RPMS. see https://get.openpetra.org/latest
Things todo for an Open Source release
Short version
- develop on dev branch.
- Test with Appveyor (https://ci.openpetra.org), Test mysql on LBS (https://lbs.solidcharity.com/package/solidcharity/openpetra/openpetra-test-server-mysql).
- update Release Notes in https://github.com/openpetra/openpetra/tree/dev/setup/petra0300/releasenotes; see python script get_issues.py https://gist.github.com/tpokorra/d608a8dde183e7bb51f135e052b301cc
- merge into test branch.
- update Weblate and Sync translations to/from Github: https://weblate.openpetra.org/
- build the binary tarball on lbs (https://lbs.solidcharity.com/package/solidcharity/openpetra/openpetra-bin-tarball)
- done automatically: update https://get.openpetra.org/openpetra-latest-bin.tar.gz to point to the new tarball
- install on demo.test.openpetra.org (similar to demo.openpetra.org)
- try to run /home/openpetra/openpetra-server.sh update
- build the latest demo databases: https://lbs.solidcharity.com/package/solidcharity/openpetra/demodb
- then again build the binary tarball so that the latest base.yml.gz is included, and rebuild openpetranow-mysql-test
- download the latest demo database to the demo.openpetra.org container
- try restore demo database from command line. try running month end. try a report. try to edit partner
- install on demo.openpetra.org
- merge to master, and prod
- Github: tag the release, set the milestone date, close the milestone
- post release notes on the forum and on the github release, link on twitter/facebook, fediverse, and on OpenPetra Download Blog
- build prod openpetranow package
- install on hosted OpenPetra.com. test with my instance: "www.openpetra.com test Zugang"
What can/should be done a day or even a few days before the actual release date
Performing all the steps that are listed here on this page can take - on average - a day if the last release has been some months ago. However, the time it takes on the day of the release can potentially be reduced by doing several steps a day or even a few days in advance.
These are the steps that can be done before the actual release:
Testing the release packages before the release
- create a branch called test in https://github.com/tpokorra/openpetra
- increase the version in db/version.txt to 2016.07.0-0
- build the test branch of the packages:
Preparing the text for the Release Notes
- Usually this can be done once the testing phase begins which precedes the release - that might even be a week before the release because even if there is still a major new functionality that might get added before the release will be done this will be known by now and can be written up already.
- Obviously the text needs to be looked at carefully at the day of the release, but most of time-consuming work will have been done by then.
Preparing up-to-date screenshots
- Check which (if any) screenshots on the 'Screenshots' page of the OpenPetra website need updating.
- If any need updating and these screens won't change any more until the release is done, take those screenshots now and store them until the day of the release has come as this process takes some time.
- If any screenshot is to be replaced check the file name of the existing screenshot and name the new one accordingly.
- Screenshots are listed on that page in a smaller size, and when one clicks on them the full size is shown. The smaller size can also already be prepared in advance.
Update translations from/to Weblate
- Download the latest language files from Weblate. Do a synchronization, and that might create a pull request.
Release Notes
- Update Release notes files in
setup/petra0300/releasenotes
. (English: releasenotes.html, German: releasenotes_de.html)- Format:
- never empty the contents of that file as it is meant to be cumulative!
- rather, add the Release Notes that pertain to the current release on top of the file.
- follow the format of the previous Release Notes.
- Format:
- Commit the changed files to Launchpad trunk using Bazaar.
DB Patches
- add new patch .cs and .sql file to https://github.com/openpetra/openpetra/tree/master/csharp/ICT/Petra/Server/lib/MSysMan/DBUpgrades
- modify file
version.txt
in directory db/patches so it contains the Version Number of the OpenPetra release that you are creating.
Final Steps
Building the release
- increase the version in db/version.txt
- merge branch into master, and into test and prod branches
- rebuild the package in LBS
- create a tag and a release in https://github.com/openpetra/openpetra
Making the Release Known to the Public
Website
- Screenshots
- see above for the preparation of up-to-date screenshots
- update the 'Screenshots' page of the website (English, German).
- Release Notes
- Post Release Notes on the 'Download' page of the website (English, German).
- Format of the Release Notes: refer to previous posts.
- Include download link for the Windows Installer and the Linux packages that pertain to this release.
- Include link to the static HTML file that contains the list of closed bugs that pertains to this release (created in an earlier step in these instructions).
- Post Release Notes on the 'Download' page of the website (English, German).
- News Update
- If there is a News Update that corresponds with the release (which often is the case): post news update in the 'News' section of the website (English, German).
- Format of the News Update: refer to previous posts.
- Include link to the 'Download' page of the website (English, German).
- If there is a News Update that corresponds with the release (which often is the case): post news update in the 'News' section of the website (English, German).
Notifications
- Send out a 'Tweet' on Twitter
- Tweet about the release on twitter (English [user: openpetraorg], German [user: openpetraorgde])
- Format of the Tweet: refer to previous tweets that pertain to releases.
- Mailing Lists
- Send out information on mailing lists (English, German).
- Content of the emails: exactly the same as in the tweets - except if there is a News Update that corresponds with the release: in this case the content of what got posted in the 'News' section of the website.
- Send out information on mailing lists (English, German).
Patches
patching the database
OP_CUSTOMER=op_dev /home/openpetra/openpetra-server.sh upgradedb
Testing the server upgrade
on a testing machine: test.openpetra.org
- Install the previous version on a clean container:
curl https://get.openpetra.org | bash -s old
- run the upgrade:
/home/openpetra/openpetra-server.sh update
- Test the login on https://test.openpetra.org
Reverting to previous version
export OLDVERSION="2020.04.0-3" export TagDemoDB="UsedForNUnitTests-202004" export OP_CUSTOMER=op_demo yum remove openpetranow-mysql-test yum install openpetranow-mysql-test-$OLDVERSION.x86_64 --enablerepo=lbs-solidcharity-openpetra MYSQL_CMD="drop database $OP_CUSTOMER" /home/openpetra/openpetra-server.sh mysql /home/openpetra/openpetra-server.sh initdb demodbfile=/tmp/demoWith1ledger.yml.gz curl --silent --location https://github.com/openpetra/demo-databases/raw/$TagDemoDB/demoWith1ledger.yml.gz > $demodbfile /home/openpetra/openpetra-server.sh loadYmlGz $demodbfile
Now update:
yum clean expire-cache --disablerepo="*" --enablerepo="lbs-solidcharity-openpetra" /home/openpetra/openpetra-server.sh update