Add release templates and dev cycle docs, update changelog process
This commit is contained in:
		
							parent
							
								
									485f4f72ce
								
							
						
					
					
						commit
						75d0415bec
					
				
							
								
								
									
										101
									
								
								.github/ISSUE_TEMPLATE/minor_release.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								.github/ISSUE_TEMPLATE/minor_release.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,101 @@ | |||||||
|  | --- | ||||||
|  | name: Minor Release | ||||||
|  | about: Create a new minor release [for release managers only] | ||||||
|  | title: 'Release MAJOR.MINOR+1.0' | ||||||
|  | labels: 'release' | ||||||
|  | assignees: '' | ||||||
|  | 
 | ||||||
|  | --- | ||||||
|  | 
 | ||||||
|  | ## Create a new minor release | ||||||
|  | 
 | ||||||
|  | ### Summary | ||||||
|  | 
 | ||||||
|  | <--release summary to be used in announcements--> | ||||||
|  | 
 | ||||||
|  | ### Commit | ||||||
|  | 
 | ||||||
|  | <--latest commit ID to include in this release--> | ||||||
|  | 
 | ||||||
|  | ### Changelog | ||||||
|  | 
 | ||||||
|  | <--add notices from PRs merged since the prior release, see ["keep a changelog"]--> | ||||||
|  | 
 | ||||||
|  | ### Checklist | ||||||
|  | 
 | ||||||
|  | Release numbering must follow [Semantic Versioning]. These steps assume the current `master` | ||||||
|  | branch **development** version is *MAJOR.MINOR.0*. | ||||||
|  | 
 | ||||||
|  | #### On the day of the feature freeze | ||||||
|  | 
 | ||||||
|  | Change the `master` branch to the next MINOR+1 version: | ||||||
|  | 
 | ||||||
|  | - [ ] Switch to the `master` branch. | ||||||
|  | - [ ] Create a new PR branch called `bump_dev_MAJOR_MINOR+1`, eg. `bump_dev_0_22`. | ||||||
|  | - [ ] Bump the `bump_dev_MAJOR_MINOR+1` branch to the next development MINOR+1 version. | ||||||
|  |   - Change the `Cargo.toml` version value to `MAJOR.MINOR+1.0`. | ||||||
|  |   - The commit message should be "Bump version to MAJOR.MINOR+1.0". | ||||||
|  | - [ ] Create PR and merge the `bump_dev_MAJOR_MINOR+1` branch to `master`. | ||||||
|  |   - Title PR "Bump version to MAJOR.MINOR+1.0". | ||||||
|  | 
 | ||||||
|  | Create a new release branch: | ||||||
|  | 
 | ||||||
|  | - [ ] Double check that your local `master` is up-to-date with the upstream repo. | ||||||
|  | - [ ] Create a new branch called `release/MAJOR.MINOR+1` from `master`. | ||||||
|  | 
 | ||||||
|  | Add a release candidate tag, this is optional and only needed for major `bdk-ffi` changes that  | ||||||
|  | require a longer testing cycle:  | ||||||
|  | 
 | ||||||
|  | - [ ] Bump the `release/MAJOR.MINOR+1` branch to `MAJOR.MINOR+1.0-rc.1` version. | ||||||
|  |   - Change the `Cargo.toml` version value to `MAJOR.MINOR+1.0-rc.1`. | ||||||
|  |   - The commit message should be "Bump version to MAJOR.MINOR+1.0-rc.1". | ||||||
|  | - [ ] Add a tag to the `HEAD` commit in the `release/MAJOR.MINOR+1` branch. | ||||||
|  |   - The tag name should be `vMAJOR.MINOR+1.0-rc.1` | ||||||
|  |   - Use message "Release MAJOR.MINOR+1.0 rc.1". | ||||||
|  |   - Make sure the tag is signed, for extra safety use the explicit `--sign` flag. | ||||||
|  | - [ ] Push the `release/MAJOR.MINOR` branch and new tag to the `bitcoindevkit/bdk` repo. | ||||||
|  |   - Use `git push --tags` option to push the new `vMAJOR.MINOR+1.0-rc.1` tag. | ||||||
|  | 
 | ||||||
|  | If any issues need to be fixed before the *MAJOR.MINOR+1.0* version is released: | ||||||
|  | 
 | ||||||
|  | - [ ] Merge fix PRs to the `master` branch. | ||||||
|  | - [ ] Git cherry-pick fix commits to the `release/MAJOR.MINOR+1` branch. | ||||||
|  | - [ ] Verify fixes in `release/MAJOR.MINOR+1` branch. | ||||||
|  | - [ ] Bump the `release/MAJOR.MINOR+1` branch to `MAJOR.MINOR+1.0-rc.x+1` version. | ||||||
|  |   - Change the `Cargo.toml` version value to `MAJOR.MINOR+1.0-rc.x+1`. | ||||||
|  |   - The commit message should be "Bump version to MAJOR.MINOR+1.0-rc.x+1". | ||||||
|  | - [ ] Add a tag to the `HEAD` commit in the `release/MAJOR.MINOR+1` branch. | ||||||
|  |   - The tag name should be `vMAJOR.MINOR+1.0-rc.x+1`, where x is the current release candidate number. | ||||||
|  |   - Use tag message "Release MAJOR.MINOR+1.0 rc.x+1". | ||||||
|  |   - Make sure the tag is signed, for extra safety use the explicit `--sign` flag. | ||||||
|  | - [ ] Push the new tag to the `bitcoindevkit/bdk` repo. | ||||||
|  |   - Use `git push --tags` option to push the new `vMAJOR.MINOR+1.0-rc.x+1` tag. | ||||||
|  | 
 | ||||||
|  | #### On the day of the release | ||||||
|  | 
 | ||||||
|  | Tag and publish new release: | ||||||
|  | 
 | ||||||
|  | - [ ] Bump the `release/MAJOR.MINOR+1` branch to `MAJOR.MINOR+1.0` version. | ||||||
|  |   - Change the `Cargo.toml` version value to `MAJOR.MINOR+1.0`. | ||||||
|  |   - The commit message should be "Bump version to MAJOR.MINOR+1.0". | ||||||
|  | - [ ] Add a tag to the `HEAD` commit in the `release/MAJOR.MINOR+1` branch. | ||||||
|  |   - The tag name should be `vMAJOR.MINOR+1.0` | ||||||
|  |   - The first line of the tag message should be "Release MAJOR.MINOR+1.0". | ||||||
|  |   - In the body of the tag message put a copy of the **Summary** and **Changelog** for the release. | ||||||
|  |   - Make sure the tag is signed, for extra safety use the explicit `--sign` flag. | ||||||
|  | - [ ] Wait for the CI to finish one last time. | ||||||
|  | - [ ] Push the new tag to the `bitcoindevkit/bdk` repo. | ||||||
|  | - [ ] Create the release on GitHub. | ||||||
|  |   - Go to "tags", click on the dots on the right and select "Create Release". | ||||||
|  |   - Set the title to `Release MAJOR.MINOR+1.0`. | ||||||
|  |   - In the release notes body put the **Summary** and **Changelog**. | ||||||
|  |   - Use the "+ Auto-generate release notes" button to add details from included PRs. | ||||||
|  |   - Until we reach a `1.0.0` release check the "Pre-release" box. | ||||||
|  | - [ ] After downstream language repos are also updated announce the release, using the **Summary**,   | ||||||
|  |       on Discord, Twitter and Mastodon. | ||||||
|  | - [ ] Celebrate 🎉 | ||||||
|  | 
 | ||||||
|  | [Semantic Versioning]: https://semver.org/ | ||||||
|  | [crates.io]: https://crates.io/crates/bdk | ||||||
|  | [docs.rs]: https://docs.rs/bdk/latest/bdk | ||||||
|  | ["keep a changelog"]: https://keepachangelog.com/en/1.0.0/ | ||||||
							
								
								
									
										69
									
								
								.github/ISSUE_TEMPLATE/patch_release.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								.github/ISSUE_TEMPLATE/patch_release.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,69 @@ | |||||||
|  | --- | ||||||
|  | name: Patch Release | ||||||
|  | about: Create a new patch release [for release managers only] | ||||||
|  | title: 'Release MAJOR.MINOR.PATCH+1' | ||||||
|  | labels: 'release' | ||||||
|  | assignees: '' | ||||||
|  | 
 | ||||||
|  | --- | ||||||
|  | 
 | ||||||
|  | ## Create a new patch release | ||||||
|  | 
 | ||||||
|  | ### Summary | ||||||
|  | 
 | ||||||
|  | <--release summary to be used in announcements--> | ||||||
|  | 
 | ||||||
|  | ### Commit | ||||||
|  | 
 | ||||||
|  | <--latest commit ID to include in this release--> | ||||||
|  | 
 | ||||||
|  | ### Changelog | ||||||
|  | 
 | ||||||
|  | <--add notices from PRs merged since the prior release, see ["keep a changelog"]--> | ||||||
|  | 
 | ||||||
|  | ### Checklist | ||||||
|  | 
 | ||||||
|  | Release numbering must follow [Semantic Versioning]. These steps assume the current `master` | ||||||
|  | branch **development** version is *MAJOR.MINOR.PATCH*. | ||||||
|  | 
 | ||||||
|  | ### On the day of the patch release | ||||||
|  | 
 | ||||||
|  | Change the `master` branch to the new PATCH+1 version: | ||||||
|  | 
 | ||||||
|  | - [ ] Switch to the `master` branch. | ||||||
|  | - [ ] Create a new PR branch called `bump_dev_MAJOR_MINOR_PATCH+1`, eg. `bump_dev_0_22_1`. | ||||||
|  | - [ ] Bump the `bump_dev_MAJOR_MINOR` branch to the next development PATCH+1 version. | ||||||
|  |   - Change the `Cargo.toml` version value to `MAJOR.MINOR.PATCH+1`. | ||||||
|  |   - The commit message should be "Bump version to MAJOR.MINOR.PATCH+1". | ||||||
|  | - [ ] Create PR and merge the `bump_dev_MAJOR_MINOR_PATCH+1` branch to `master`. | ||||||
|  |   - Title PR "Bump version to MAJOR.MINOR.PATCH+1". | ||||||
|  | 
 | ||||||
|  | Cherry-pick, tag and publish new PATCH+1 release: | ||||||
|  | 
 | ||||||
|  | - [ ] Merge fix PRs to the `master` branch. | ||||||
|  | - [ ] Git cherry-pick fix commits to the `release/MAJOR.MINOR` branch to be patched. | ||||||
|  | - [ ] Verify fixes in `release/MAJOR.MINOR` branch. | ||||||
|  | - [ ] Bump the `release/MAJOR.MINOR.PATCH+1` branch to `MAJOR.MINOR.PATCH+1` version. | ||||||
|  |   - Change the `Cargo.toml` version value to `MAJOR.MINOR.MINOR.PATCH+1`. | ||||||
|  |   - The commit message should be "Bump version to MAJOR.MINOR.PATCH+1". | ||||||
|  | - [ ] Add a tag to the `HEAD` commit in the `release/MAJOR.MINOR` branch. | ||||||
|  |   - The tag name should be `vMAJOR.MINOR.PATCH+1` | ||||||
|  |   - The first line of the tag message should be "Release MAJOR.MINOR.PATCH+1". | ||||||
|  |   - In the body of the tag message put a copy of the **Summary** and **Changelog** for the release. | ||||||
|  |   - Make sure the tag is signed, for extra safety use the explicit `--sign` flag. | ||||||
|  | - [ ] Wait for the CI to finish one last time. | ||||||
|  | - [ ] Push the new tag to the `bitcoindevkit/bdk` repo. | ||||||
|  | - [ ] Create the release on GitHub. | ||||||
|  |   - Go to "tags", click on the dots on the right and select "Create Release". | ||||||
|  |   - Set the title to `Release MAJOR.MINOR.PATCH+1`. | ||||||
|  |   - In the release notes body put the **Summary** and **Changelog**. | ||||||
|  |   - Use the "+ Auto-generate release notes" button to add details from included PRs. | ||||||
|  |   - Until we reach a `1.0.0` release check the "Pre-release" box. | ||||||
|  | - [ ] After downstream language repos are also updated announce the release, using the **Summary**,   | ||||||
|  |       on Discord, Twitter and Mastodon. | ||||||
|  | - [ ] Celebrate 🎉 | ||||||
|  | 
 | ||||||
|  | [Semantic Versioning]: https://semver.org/ | ||||||
|  | [crates.io]: https://crates.io/crates/bdk | ||||||
|  | [docs.rs]: https://docs.rs/bdk/latest/bdk | ||||||
|  | ["keep a changelog"]: https://keepachangelog.com/en/1.0.0/ | ||||||
							
								
								
									
										6
									
								
								.github/pull_request_template.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/pull_request_template.md
									
									
									
									
										vendored
									
									
								
							| @ -9,6 +9,11 @@ | |||||||
| <!-- In this section you can include notes directed to the reviewers, like explaining why some parts | <!-- In this section you can include notes directed to the reviewers, like explaining why some parts | ||||||
| of the PR were done in a specific way --> | of the PR were done in a specific way --> | ||||||
| 
 | 
 | ||||||
|  | ### Changelog notice | ||||||
|  | 
 | ||||||
|  | <!-- Notice the release manager should include in the release tag message changelog --> | ||||||
|  | <!-- See https://keepachangelog.com/en/1.0.0/ for examples --> | ||||||
|  | 
 | ||||||
| ### Checklists | ### Checklists | ||||||
| 
 | 
 | ||||||
| #### All Submissions: | #### All Submissions: | ||||||
| @ -21,7 +26,6 @@ of the PR were done in a specific way --> | |||||||
| 
 | 
 | ||||||
| * [ ] I've added tests for the new feature | * [ ] I've added tests for the new feature | ||||||
| * [ ] I've added docs for the new feature | * [ ] I've added docs for the new feature | ||||||
| * [ ] I've updated `CHANGELOG.md` |  | ||||||
| 
 | 
 | ||||||
| #### Bugfixes: | #### Bugfixes: | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,5 +1,8 @@ | |||||||
| # Changelog | # Changelog | ||||||
| All notable changes to this project will be documented in this file. | All notable changes to this project prior to release **0.9.0** are documented in this file. Future | ||||||
|  | changelog information can be found in each release's git tag and can be viewed with `git tag -ln100 "v*"`. | ||||||
|  | Changelog info is also documented on the [GitHub releases](https://github.com/bitcoindevkit/bdk-ffi/releases) | ||||||
|  | page. See [DEVELOPMENT_CYCLE.md](DEVELOPMENT_CYCLE.md) for more details. | ||||||
| 
 | 
 | ||||||
| The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | ||||||
| and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | ||||||
|  | |||||||
							
								
								
									
										35
									
								
								DEVELOPMENT_CYCLE.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								DEVELOPMENT_CYCLE.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,35 @@ | |||||||
|  | # Development Cycle | ||||||
|  | 
 | ||||||
|  | This project follows a regular releasing schedule similar to the one [used by the Rust language]  | ||||||
|  | except releases always follow the latest [`bdk`] release by one to two weeks.  In short, this means  | ||||||
|  | that a new release is made at a regular cadence, with all the feature/bugfixes that made it to  | ||||||
|  | `master` in time. This ensures that we don't keep delaying releases waiting for  | ||||||
|  | "just one more little thing". | ||||||
|  | 
 | ||||||
|  | After making a new `bdk-ffi` release tag all downstream language bindings should also be updated. | ||||||
|  | 
 | ||||||
|  | This project uses [Semantic Versioning], but is currently at MAJOR version zero (0.y.z) meaning it  | ||||||
|  | is still in initial development. Anything MAY change at any time. The public API SHOULD NOT be  | ||||||
|  | considered stable. Until we reach version `1.0.0` we will do our best to document any breaking API  | ||||||
|  | changes in the changelog info attached to each release tag. | ||||||
|  | 
 | ||||||
|  | We decided to maintain a faster release cycle while the library is still in "beta", i.e. before  | ||||||
|  | release `1.0.0`: since we are constantly adding new features and, even more importantly, fixing  | ||||||
|  | issues, we want developers to have access to those updates as fast as possible. For this reason we  | ||||||
|  | will make a release **every 4 weeks**. | ||||||
|  | 
 | ||||||
|  | Once the project reaches a more mature state (>= `1.0.0`), we will very likely switch to longer  | ||||||
|  | release cycles of **6 weeks**. | ||||||
|  | 
 | ||||||
|  | The "feature freeze" will happen when [`bdk`] releases a release candidate. This project will then  | ||||||
|  | be updated and tested with [`bdk`] release candidates until a final release is published. This  | ||||||
|  | means a new branch will be created originating from the `master` tip at that time, and in that  | ||||||
|  | branch we will stop adding new features and only focus on ensuring the ones we've added are working  | ||||||
|  | properly. | ||||||
|  | 
 | ||||||
|  | To create a new release a release manager will create a new issue using a `Release` template and  | ||||||
|  | follow the template instructions. | ||||||
|  | 
 | ||||||
|  | [used by the Rust language]: https://doc.rust-lang.org/book/appendix-07-nightly-rust.html | ||||||
|  | [Semantic Versioning]: https://semver.org/ | ||||||
|  | [`bdk`]: https://github.com/bitcoindevkit/bdk | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user