1
0
mirror of https://github.com/pgbackrest/pgbackrest.git synced 2024-12-14 10:13:05 +02:00
pgbackrest/doc/RELEASE.md

201 lines
6.1 KiB
Markdown
Raw Normal View History

# Release Build Instructions
## 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">
```
Edit version in `src/version.h`, e.g.:
```
#define PROJECT_VERSION "2.14dev"
```
to:
```
#define PROJECT_VERSION "2.14"
```
## Update code counts
```
2022-07-18 15:32:30 +02:00
pgbackrest/test/test.pl --code-count
```
## Build release documentation. Be sure to install latex using the instructions from the Vagrantfile before running this step.
```
2022-07-18 15:32:30 +02:00
pgbackrest/doc/release.pl --build
```
## Commit release branch and push to CI for testing
```
git commit -m "Release test"
git push origin release-ci
```
## 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
```
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
```
v2.35: Binary Protocol IMPORTANT NOTE: The log level for copied files in the backup/restore commands has been changed to detail. This makes the info log level less noisy but if these messages are required then set the log level for the backup/restore commands to detail. Bug Fixes: * Detect errors in S3 multi-part upload finalize. (Reviewed by Cynthia Shang, Marco Montagna. Reported by Marco Montagna, Lev Kokotov, Anderson A. Mallmann.) * Fix detection of circular symlinks. (Reviewed by Stefan Fercot. Reported by Rohit Raveendran.) * Only pass selected repo options to the remote. (Reviewed by David Christensen, Cynthia Shang. Reported by Greg Sabino Mullane, David Christensen.) Improvements: * Binary protocol. (Reviewed by Cynthia Shang.) * Automatically create data directory on restore. (Contributed by Stefan Fercot. Reviewed by David Steele. Suggested by Chris Bandy.) * Allow restore --type=lsn. (Contributed by Stefan Fercot. Reviewed by Cynthia Shang. Suggested by James Coleman.) * Change level of backup/restore copied file logging to detail. (Reviewed by Stefan Fercot. Suggested by Jens Wilke.) * Loop while waiting for checkpoint LSN to reach replay LSN. (Contributed by Stefan Fercot. Reviewed by David Steele. Suggested by Fatih Mencutekin.) * Log backup file total and restore size/file total. (Reviewed by Cynthia Shang.) Documentation Bug Fixes: * Fix incorrect host names in user guide. (Reviewed by Stefan Fercot. Reported by Greg Sabino Mullane.) Documentation Improvements: * Update contributing documentation and add pull request template. (Contributed by Cynthia Shang. Reviewed by David Steele.) * Rearrange backup documentation in user guide. (Reviewed by Cynthia Shang.) * Clarify restore --type behavior in command reference. (Contributed by Cynthia Shang. Reviewed by David Steele.) * Fix documentation and comment typos. (Contributed by Eric Radman. Reviewed by David Steele.) Test Suite Improvements: * Add check for test path inside repo path. (Reviewed by Greg Sabino Mullane. Suggested by Greg Sabino Mullane.) * Add CodeQL static code analysis. (Reviewed by Cynthia Shang.) * Update tests to use standard patterns. (Contributed by Cynthia Shang. Reviewed by David Steele.)
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-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:
```
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.
## 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
```
## Deploy web documentation to `doc/site`
```
2022-07-18 15:32:30 +02:00
pgbackrest/doc/release.pl --deploy
```
## 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.)
Improvements:
2021-10-21 19:31:22 +02:00
* Bypass database checks when stanza-delete issued with force. (Contributed by User. Suggested by User.)
* Add configure script for improved multi-platform support.
Documentation Features:
* Add user guide for Debian.
```
Commit to integration with the above message and push to CI.
## Push to main
Push release commit to main once CI testing is complete.
## 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.)
**Improvements**:
2021-10-21 19:31:22 +02:00
- Bypass database checks when stanza-delete issued with force. (Contributed by User. Suggested by User.)
- Add configure script for improved multi-platform support.
**Documentation Features**:
- Add user guide for Debian.
```
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!**
## Push web documentation to main and deploy
```
2022-07-18 15:32:30 +02:00
cd pgbackrest/doc/site
git commit -m "v2.14 documentation."
git push origin main
```
Deploy the documentation on `pgbackrest.org`.
## Notify packagers of new release
## Announce release on Twitter
2019-05-20 18:23:40 +02:00
## Publish a postgresql.org news item when there are major new features
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.
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">
```
Edit version in `src/version.h`, e.g.:
2019-05-20 18:23:40 +02:00
```
#define PROJECT_VERSION "2.14"
2019-05-20 18:23:40 +02:00
```
to:
```
#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
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
```
v2.27: Expiration Improvements and Compression Drivers Bug Fixes: * Fix issue checking if file links are contained in path links. (Reviewed by Cynthia Shang. Reported by Christophe Cavallié.) * Allow pg-path1 to be optional for synchronous archive-push. (Reviewed by Cynthia Shang. Reported by Jerome Peng.) * The expire command now checks if a stop file is present. (Fixed by Cynthia Shang. Reviewed by David Steele.) * Handle missing reason phrase in HTTP response. (Reviewed by Cynthia Shang. Reported by Tenuun.) * Increase buffer size for lz4 compression flush. (Reviewed by Cynthia Shang. Reported by Eric Radman.) * Ignore pg-host* and repo-host* options for the remote command. (Reviewed by Cynthia Shang. Reported by Pavel Suderevsky.) * Fix possibly missing pg1-* options for the remote command. (Reviewed by Cynthia Shang. Reported by Andrew L'Ecuyer.) Features: * Time-based retention for full backups. The --repo-retention-full-type option allows retention of full backups based on a time period, specified in days. (Contributed by Cynthia Shang, Pierre Ducroquet. Reviewed by David Steele.) * Ad hoc backup expiration. Allow the user to remove a specified backup regardless of retention settings. (Contributed by Cynthia Shang. Reviewed by David Steele.) * Zstandard compression support. Note that setting compress-type=zst will make new backups and archive incompatible (unrestorable) with prior versions of pgBackRest. (Reviewed by Cynthia Shang.) * bzip2 compression support. Note that setting compress-type=bz2 will make new backups and archive incompatible (unrestorable) with prior versions of pgBackRest. (Contributed by Stephen Frost. Reviewed by David Steele, Cynthia Shang.) * Add backup/expire running status to the info command. (Contributed by Stefan Fercot. Reviewed by David Steele.) Improvements: * Expire WAL archive only when repo-retention-archive threshold is met. WAL prior to the first full backup was previously expired after the first full backup. Now it is preserved according to retention settings. (Contributed by Cynthia Shang. Reviewed by David Steele.) * Add local MD5 implementation so S3 works when FIPS is enabled. (Reviewed by Cynthia Shang, Stephen Frost. Suggested by Brian Almeida, John Kelley.) * PostgreSQL 13 beta1 support. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace. (Reviewed by Cynthia Shang.) * Reduce buffer-size default to 1MiB. (Reviewed by Stephen Frost.) * Throw user-friendly error if expire is not run on repository host. (Contributed by Cynthia Shang. Reviewed by David Steele.)
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.
Check the latest version of `automake` and see if it is > `1.16.5`:
v2.27: Expiration Improvements and Compression Drivers Bug Fixes: * Fix issue checking if file links are contained in path links. (Reviewed by Cynthia Shang. Reported by Christophe Cavallié.) * Allow pg-path1 to be optional for synchronous archive-push. (Reviewed by Cynthia Shang. Reported by Jerome Peng.) * The expire command now checks if a stop file is present. (Fixed by Cynthia Shang. Reviewed by David Steele.) * Handle missing reason phrase in HTTP response. (Reviewed by Cynthia Shang. Reported by Tenuun.) * Increase buffer size for lz4 compression flush. (Reviewed by Cynthia Shang. Reported by Eric Radman.) * Ignore pg-host* and repo-host* options for the remote command. (Reviewed by Cynthia Shang. Reported by Pavel Suderevsky.) * Fix possibly missing pg1-* options for the remote command. (Reviewed by Cynthia Shang. Reported by Andrew L'Ecuyer.) Features: * Time-based retention for full backups. The --repo-retention-full-type option allows retention of full backups based on a time period, specified in days. (Contributed by Cynthia Shang, Pierre Ducroquet. Reviewed by David Steele.) * Ad hoc backup expiration. Allow the user to remove a specified backup regardless of retention settings. (Contributed by Cynthia Shang. Reviewed by David Steele.) * Zstandard compression support. Note that setting compress-type=zst will make new backups and archive incompatible (unrestorable) with prior versions of pgBackRest. (Reviewed by Cynthia Shang.) * bzip2 compression support. Note that setting compress-type=bz2 will make new backups and archive incompatible (unrestorable) with prior versions of pgBackRest. (Contributed by Stephen Frost. Reviewed by David Steele, Cynthia Shang.) * Add backup/expire running status to the info command. (Contributed by Stefan Fercot. Reviewed by David Steele.) Improvements: * Expire WAL archive only when repo-retention-archive threshold is met. WAL prior to the first full backup was previously expired after the first full backup. Now it is preserved according to retention settings. (Contributed by Cynthia Shang. Reviewed by David Steele.) * Add local MD5 implementation so S3 works when FIPS is enabled. (Reviewed by Cynthia Shang, Stephen Frost. Suggested by Brian Almeida, John Kelley.) * PostgreSQL 13 beta1 support. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace. (Reviewed by Cynthia Shang.) * Reduce buffer-size default to 1MiB. (Reviewed by Stephen Frost.) * Throw user-friendly error if expire is not run on repository host. (Contributed by Cynthia Shang. Reviewed by David Steele.)
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]'
v2.27: Expiration Improvements and Compression Drivers Bug Fixes: * Fix issue checking if file links are contained in path links. (Reviewed by Cynthia Shang. Reported by Christophe Cavallié.) * Allow pg-path1 to be optional for synchronous archive-push. (Reviewed by Cynthia Shang. Reported by Jerome Peng.) * The expire command now checks if a stop file is present. (Fixed by Cynthia Shang. Reviewed by David Steele.) * Handle missing reason phrase in HTTP response. (Reviewed by Cynthia Shang. Reported by Tenuun.) * Increase buffer size for lz4 compression flush. (Reviewed by Cynthia Shang. Reported by Eric Radman.) * Ignore pg-host* and repo-host* options for the remote command. (Reviewed by Cynthia Shang. Reported by Pavel Suderevsky.) * Fix possibly missing pg1-* options for the remote command. (Reviewed by Cynthia Shang. Reported by Andrew L'Ecuyer.) Features: * Time-based retention for full backups. The --repo-retention-full-type option allows retention of full backups based on a time period, specified in days. (Contributed by Cynthia Shang, Pierre Ducroquet. Reviewed by David Steele.) * Ad hoc backup expiration. Allow the user to remove a specified backup regardless of retention settings. (Contributed by Cynthia Shang. Reviewed by David Steele.) * Zstandard compression support. Note that setting compress-type=zst will make new backups and archive incompatible (unrestorable) with prior versions of pgBackRest. (Reviewed by Cynthia Shang.) * bzip2 compression support. Note that setting compress-type=bz2 will make new backups and archive incompatible (unrestorable) with prior versions of pgBackRest. (Contributed by Stephen Frost. Reviewed by David Steele, Cynthia Shang.) * Add backup/expire running status to the info command. (Contributed by Stefan Fercot. Reviewed by David Steele.) Improvements: * Expire WAL archive only when repo-retention-archive threshold is met. WAL prior to the first full backup was previously expired after the first full backup. Now it is preserved according to retention settings. (Contributed by Cynthia Shang. Reviewed by David Steele.) * Add local MD5 implementation so S3 works when FIPS is enabled. (Reviewed by Cynthia Shang, Stephen Frost. Suggested by Brian Almeida, John Kelley.) * PostgreSQL 13 beta1 support. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace. (Reviewed by Cynthia Shang.) * Reduce buffer-size default to 1MiB. (Reviewed by Stephen Frost.) * Throw user-friendly error if expire is not run on repository host. (Contributed by Cynthia Shang. Reviewed by David Steele.)
2020-05-26 14:11:50 +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.
v2.27: Expiration Improvements and Compression Drivers Bug Fixes: * Fix issue checking if file links are contained in path links. (Reviewed by Cynthia Shang. Reported by Christophe Cavallié.) * Allow pg-path1 to be optional for synchronous archive-push. (Reviewed by Cynthia Shang. Reported by Jerome Peng.) * The expire command now checks if a stop file is present. (Fixed by Cynthia Shang. Reviewed by David Steele.) * Handle missing reason phrase in HTTP response. (Reviewed by Cynthia Shang. Reported by Tenuun.) * Increase buffer size for lz4 compression flush. (Reviewed by Cynthia Shang. Reported by Eric Radman.) * Ignore pg-host* and repo-host* options for the remote command. (Reviewed by Cynthia Shang. Reported by Pavel Suderevsky.) * Fix possibly missing pg1-* options for the remote command. (Reviewed by Cynthia Shang. Reported by Andrew L'Ecuyer.) Features: * Time-based retention for full backups. The --repo-retention-full-type option allows retention of full backups based on a time period, specified in days. (Contributed by Cynthia Shang, Pierre Ducroquet. Reviewed by David Steele.) * Ad hoc backup expiration. Allow the user to remove a specified backup regardless of retention settings. (Contributed by Cynthia Shang. Reviewed by David Steele.) * Zstandard compression support. Note that setting compress-type=zst will make new backups and archive incompatible (unrestorable) with prior versions of pgBackRest. (Reviewed by Cynthia Shang.) * bzip2 compression support. Note that setting compress-type=bz2 will make new backups and archive incompatible (unrestorable) with prior versions of pgBackRest. (Contributed by Stephen Frost. Reviewed by David Steele, Cynthia Shang.) * Add backup/expire running status to the info command. (Contributed by Stefan Fercot. Reviewed by David Steele.) Improvements: * Expire WAL archive only when repo-retention-archive threshold is met. WAL prior to the first full backup was previously expired after the first full backup. Now it is preserved according to retention settings. (Contributed by Cynthia Shang. Reviewed by David Steele.) * Add local MD5 implementation so S3 works when FIPS is enabled. (Reviewed by Cynthia Shang, Stephen Frost. Suggested by Brian Almeida, John Kelley.) * PostgreSQL 13 beta1 support. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace. (Reviewed by Cynthia Shang.) * Reduce buffer-size default to 1MiB. (Reviewed by Stephen Frost.) * Throw user-friendly error if expire is not run on repository host. (Contributed by Cynthia Shang. Reviewed by David Steele.)
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'
v2.27: Expiration Improvements and Compression Drivers Bug Fixes: * Fix issue checking if file links are contained in path links. (Reviewed by Cynthia Shang. Reported by Christophe Cavallié.) * Allow pg-path1 to be optional for synchronous archive-push. (Reviewed by Cynthia Shang. Reported by Jerome Peng.) * The expire command now checks if a stop file is present. (Fixed by Cynthia Shang. Reviewed by David Steele.) * Handle missing reason phrase in HTTP response. (Reviewed by Cynthia Shang. Reported by Tenuun.) * Increase buffer size for lz4 compression flush. (Reviewed by Cynthia Shang. Reported by Eric Radman.) * Ignore pg-host* and repo-host* options for the remote command. (Reviewed by Cynthia Shang. Reported by Pavel Suderevsky.) * Fix possibly missing pg1-* options for the remote command. (Reviewed by Cynthia Shang. Reported by Andrew L'Ecuyer.) Features: * Time-based retention for full backups. The --repo-retention-full-type option allows retention of full backups based on a time period, specified in days. (Contributed by Cynthia Shang, Pierre Ducroquet. Reviewed by David Steele.) * Ad hoc backup expiration. Allow the user to remove a specified backup regardless of retention settings. (Contributed by Cynthia Shang. Reviewed by David Steele.) * Zstandard compression support. Note that setting compress-type=zst will make new backups and archive incompatible (unrestorable) with prior versions of pgBackRest. (Reviewed by Cynthia Shang.) * bzip2 compression support. Note that setting compress-type=bz2 will make new backups and archive incompatible (unrestorable) with prior versions of pgBackRest. (Contributed by Stephen Frost. Reviewed by David Steele, Cynthia Shang.) * Add backup/expire running status to the info command. (Contributed by Stefan Fercot. Reviewed by David Steele.) Improvements: * Expire WAL archive only when repo-retention-archive threshold is met. WAL prior to the first full backup was previously expired after the first full backup. Now it is preserved according to retention settings. (Contributed by Cynthia Shang. Reviewed by David Steele.) * Add local MD5 implementation so S3 works when FIPS is enabled. (Reviewed by Cynthia Shang, Stephen Frost. Suggested by Brian Almeida, John Kelley.) * PostgreSQL 13 beta1 support. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace. (Reviewed by Cynthia Shang.) * Reduce buffer-size default to 1MiB. (Reviewed by Stephen Frost.) * Throw user-friendly error if expire is not run on repository host. (Contributed by Cynthia Shang. Reviewed by David Steele.)
2020-05-26 14:11:50 +02:00
```