2019-02-20 15:48:14 +02:00
# Release Build Instructions
2019-05-20 17:51:58 +02:00
## Create a branch to test the release
```
git checkout -b release-ci
```
## Update the date, version, and release title
Edit the latest release in `doc/xml/release.xml` , e.g.:
```
< release date = "XXXX-XX-XX" version = "2.14dev" title = "UNDER DEVELOPMENT" >
```
to:
```
< release date = "2019-05-20" version = "2.14" title = "Bug Fix and Improvements" >
```
2020-03-10 23:57:02 +02:00
Edit version in `src/version.h` , e.g.:
2019-05-20 17:51:58 +02:00
```
2020-03-10 23:57:02 +02:00
#define PROJECT_VERSION "2.14dev"
2019-05-20 17:51:58 +02:00
```
to:
```
2020-03-10 23:57:02 +02:00
#define PROJECT_VERSION "2.14"
2019-05-20 17:51:58 +02:00
```
2020-10-05 17:51:45 +02:00
## Update code counts
2019-05-20 17:51:58 +02:00
```
2022-07-18 15:32:30 +02:00
pgbackrest/test/test.pl --code-count
2019-05-20 17:51:58 +02:00
```
2020-10-05 17:51:45 +02:00
## Build release documentation. Be sure to install latex using the instructions from the Vagrantfile before running this step.
2019-05-20 17:51:58 +02:00
```
2022-07-18 15:32:30 +02:00
pgbackrest/doc/release.pl --build
2019-05-20 17:51:58 +02:00
```
## Commit release branch and push to CI for testing
```
git commit -m "Release test"
2019-09-03 22:39:32 +02:00
git push origin release-ci
2019-05-20 17:51:58 +02:00
```
2021-08-12 13:49:59 +02:00
## Perform stress testing on release
- Build the documentation with stress testing enabled:
```
2022-07-18 15:32:30 +02:00
pgbackrest/doc/doc.pl --out=html --include=user-guide --require=/stress --var=stress=y --var=stress-scale-table=100 --var=stress-scale-data=1000 --pre --no-cache
2021-08-12 13:49:59 +02:00
```
During data load the archive-push and archive-get processes can be monitored with:
```
docker exec -it doc-pg-primary tail -f /var/log/pgbackrest/demo-archive-push-async.log
docker exec -it doc-pg-standby tail -f /var/log/pgbackrest/demo-archive-get-async.log
```
During backup/restore the processes can be monitored with:
```
docker exec -it doc-repository tail -f /var/log/pgbackrest/demo-backup.log
docker exec -it doc-pg-standby tail -f /var/log/pgbackrest/demo-restore.log
```
2021-08-23 12:52:51 +02:00
Processes can generally be monitored using 'top'. Once `top` is running, press `o` then enter `COMMAND=pgbackrest` . This will filter output to pgbackrest processes.
2021-08-12 13:49:59 +02:00
2021-10-21 19:31:22 +02:00
- Check for many log entries in the `archive-push` /`archive-get` logs to ensure async archiving was enabled:
2021-08-12 13:49:59 +02:00
```
docker exec -it doc-pg-primary vi /var/log/pgbackrest/demo-archive-push-async.log
docker exec -it doc-pg-standby vi /var/log/pgbackrest/demo-archive-get-async.log
```
- Check the backup log to ensure the correct tables/data were created and backed up. It should look something like:
```
INFO: full backup size = 14.9GB, file total = 101004
```
- Check the restore log to ensure the correct tables/data were restored. The size and file total should match exactly.
2019-05-20 17:51:58 +02:00
## Clone web documentation into `doc/site`
```
2022-07-18 15:32:30 +02:00
cd pgbackrest/doc
2019-05-24 13:41:55 +02:00
git clone git@github.com:pgbackrest/website.git site
2019-05-20 17:51:58 +02:00
```
## Deploy web documentation to `doc/site`
```
2022-07-18 15:32:30 +02:00
pgbackrest/doc/release.pl --deploy
2019-05-20 17:51:58 +02:00
```
## Final commit of release to integration
Create release notes based on the pattern in prior git commits (this should be automated at some point), e.g.
```
v2.14: Bug Fix and Improvements
Bug Fixes:
2021-10-21 19:31:22 +02:00
* Fix segfault when process-max > 8 for archive-push/archive-get. (Reported by User.)
2019-05-20 17:51:58 +02:00
Improvements:
2021-10-21 19:31:22 +02:00
* Bypass database checks when stanza-delete issued with force. (Contributed by User. Suggested by User.)
2019-05-20 17:51:58 +02:00
* Add configure script for improved multi-platform support.
Documentation Features:
2021-10-28 21:15:49 +02:00
* Add user guide for Debian.
2019-05-20 17:51:58 +02:00
```
Commit to integration with the above message and push to CI.
2021-10-13 18:01:53 +02:00
## Push to main
2019-05-20 17:51:58 +02:00
2021-10-13 18:01:53 +02:00
Push release commit to main once CI testing is complete.
2019-05-20 17:51:58 +02:00
## Create release on github
Create release notes based on pattern in prior releases (this should be automated at some point), e.g.
```
v2.14: Bug Fix and Improvements
**Bug Fixes**:
2021-10-21 19:31:22 +02:00
- Fix segfault when process-max > 8 for archive-push/archive-get. (Reported by User.)
2019-05-20 17:51:58 +02:00
**Improvements**:
2021-10-21 19:31:22 +02:00
- Bypass database checks when stanza-delete issued with force. (Contributed by User. Suggested by User.)
2019-05-20 17:51:58 +02:00
- Add configure script for improved multi-platform support.
**Documentation Features**:
2021-10-28 21:15:49 +02:00
- Add user guide for Debian.
2019-05-20 17:51:58 +02:00
```
2021-10-13 18:01:53 +02:00
The first line will be the release title and the rest will be the body. The tag field should be updated with the current version so a tag is created from main. **Be sure to select the release commit explicitly rather than auto-tagging the last commit in main!**
2019-05-20 17:51:58 +02:00
2021-10-13 18:01:53 +02:00
## Push web documentation to main and deploy
2019-05-20 17:51:58 +02:00
```
2022-07-18 15:32:30 +02:00
cd pgbackrest/doc/site
2019-05-20 17:51:58 +02:00
git commit -m "v2.14 documentation."
2021-10-13 18:01:53 +02:00
git push origin main
2019-05-20 17:51:58 +02:00
```
Deploy the documentation on `pgbackrest.org` .
## Notify packagers of new release
## Announce release on Twitter
2019-05-20 18:23:40 +02:00
2021-05-03 15:34:22 +02:00
## Publish a postgresql.org news item when there are major new features
2020-07-28 17:20:07 +02:00
2021-05-03 15:34:22 +02:00
Start from NEWS.md and update with the new date, version, and interesting features added since the last release. News items are automatically sent to the `pgsql-announce` mailing list once they have been approved.
2020-07-28 17:20:07 +02:00
2024-01-25 15:41:20 +02:00
## Update PostgreSQL ecosystem wiki
Update version, date, and minimum supported version (when changed): https://wiki.postgresql.org/wiki/Ecosystem:Backup#pgBackRest
2019-05-20 18:23:40 +02:00
## Prepare for the next release
Add new release in `doc/xml/release.xml` , e.g.:
```
< release date = "XXXX-XX-XX" version = "2.15dev" title = "UNDER DEVELOPMENT" >
```
2020-03-10 23:57:02 +02:00
Edit version in `src/version.h` , e.g.:
2019-05-20 18:23:40 +02:00
```
2020-03-10 23:57:02 +02:00
#define PROJECT_VERSION "2.14"
2019-05-20 18:23:40 +02:00
```
to:
```
2020-03-10 23:57:02 +02:00
#define PROJECT_VERSION "2.15dev"
2019-06-25 14:42:20 +02:00
```
Run deploy to generate git history (ctrl-c as soon as the file is generated):
```
2022-07-18 15:32:30 +02:00
pgbackrest/doc/release.pl --build
2019-06-25 14:42:20 +02:00
```
2019-05-20 18:23:40 +02:00
2024-03-25 00:22:53 +02:00
Run code count to add new release file:
```
pgbackrest/test/test.pl --code-count
```
2019-05-20 18:23:40 +02:00
Commit and push to integration:
```
git commit -m "Begin v2.15 development."
2019-12-12 16:05:10 +02:00
git push origin integration
2019-05-20 18:23:40 +02:00
```
2020-05-26 14:11:50 +02:00
## Update automake/config scripts
These scripts are required by `src/config` and should be updated after each release, when needed. Note that these files are updated very infrequently.
2021-11-01 15:11:43 +02:00
Check the latest version of `automake` and see if it is > `1.16.5` :
2020-05-26 14:11:50 +02:00
```
https://git.savannah.gnu.org/gitweb/?p=automake.git
```
If so, update the version above and copy `lib/install-sh` from the `automake` repo to the `pgbackrest` repo at `[repo]/src/build/install-sh` :
```
2022-07-18 15:32:30 +02:00
wget -O pgbackrest/src/build/install-sh '[URL]'
2020-05-26 14:11:50 +02:00
```
2020-07-20 17:08:18 +02:00
Get the latest versions of `config.sub` and `config.guess` . These files are not versioned so the newest version is pulled at the beginning of the release cycle to allow time to test stability.
2020-05-26 14:11:50 +02:00
```
2022-07-18 15:32:30 +02:00
wget -O pgbackrest/src/build/config.guess 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD'
wget -O pgbackrest/src/build/config.sub 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD'
2020-05-26 14:11:50 +02:00
```