Skip to content

Commit ab1f655

Browse files
Merge pull request #1453 from lukaszstolarczuk/rel-steps
Update Release Steps
2 parents eb7eee2 + 196d64f commit ab1f655

File tree

1 file changed

+38
-18
lines changed

1 file changed

+38
-18
lines changed

RELEASE_STEPS.md

Lines changed: 38 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ This document contains all the steps required to make a new release of UMF.
44

55
As a helper, we use in this guide these 2 variables:
66
```bash
7-
set $VERSION = new full version (e.g., 0.1.0-rc1) # -rc1 included just as an example
8-
set $VER = new major+minor only version (e.g., 0.1)
7+
$VERSION=1.1.0-rc1 # New full version, including optional rc suffix as an example
8+
$VER=1.1 # New major+minor only version
99
```
1010

1111
**Note:**
@@ -19,47 +19,63 @@ will be released for a oneAPI release. Once all changes planned for UMF release
1919
we follow the process (described in more detail below):
2020

2121
1. Checkout the appropriate branch (`main` or "stable" `v$VER.x`).
22-
2. Make changes for the release.
23-
3. Create a new tag based on the latest commit - it takes the form
22+
1. Make sure remotes are up-to-date on your machine (`git remote update`).
23+
1. Make changes for the release.
24+
1. Create a new tag based on the latest commit - it should follow the format:
2425
`v<major>.<minor>.<patch>` (e.g., `v0.1.0`).
25-
4. Push the tag and branch to the upstream.
26-
5. Create a new GitHub release using the tag created in the previous step.
27-
6. Update downstream projects to utilize the release tag. If any issues arise
26+
1. Push the tag and branch to the upstream.
27+
1. Create a new GitHub release using the tag created in the previous step.
28+
1. Update dependent/downstream projects to use the new release tag. If any issues arise
2829
from integration, apply any necessary hot fixes to `v$VER.x`
2930
branch and go back to step 2 - to create a patch release. This step can also be tested
3031
using `rc` version, potentially followed by another `rc` tag.
3132

3233
## Make a release locally
3334

34-
Do changes for a release:
35-
- Start of appropriate branch:
35+
Prepare changes for the release:
36+
- Start of appropriate up-to-date branch:
37+
- Fetch remotes
38+
- `git remote update`
3639
- For patch release, do it from a stable branch:
3740
- `git checkout v$VER.x` (e.g., checkout `v0.1.x` if this is a `v0.1.1` patch)
3841
- If previously we decided not to create such branch, create it now, based on the appropriate minor or major tag
3942
- For major/minor release start from the `main` branch
40-
- Add an entry to ChangeLog, remember to change the day of the week in the release date
41-
- For major and minor (prior 1.0.0) releases mention API and ABI compatibility with the previous release
43+
- Add a new entry to the `ChangeLog`, remember to change the day of the week in the release date
44+
- For major releases mention API and ABI compatibility with the previous releases
4245
- For major and minor releases, update `UMF_VERSION_CURRENT` in `include/umf/base.h` (the API version)
4346
- For changes in ops structures, update corresponding UMF_*_OPS_VERSION_CURRENT
44-
- For major and minor (prior 1.0.0) releases update ABI version in `.map` and `.def` files
47+
- For major and minor releases update ABI version in `.map` and `.def` files
4548
- These files are defined for all public libraries (`libumf` and `proxy_lib`, at the moment)
49+
- For minor releases acceptable is only adding new functions/symbols!
50+
- Once all changes are done, build locally (and/or verify changes on CI), including:
51+
- Verify if scanners/linters/checkers passed
52+
- Verify if version is set properly, especially in `.dll` and `.so` files
4653
- Commit these changes and tag the release:
4754
- `git commit -a -S -m "$VERSION release"`
4855
- `git tag -a -s -m "Version $VERSION" v$VERSION`
56+
- Verify if commit and tag are properly signed:
57+
- `git verify-commit <commit's sha>`
58+
- `git verify-tag v$VERSION`
4959
- For major/minor release:
5060
- If stable branch for this release is required, create it:
5161
- `git checkout -b v$VER.x`
52-
- For some early versions (like `0.1.0`) we may omit creation of the branch
62+
- For some short-lived versions, creation of this branch may be skipped
5363
- For major/minor release, when release is done, add an extra "dev" tag on the `main` branch:
54-
- `git tag -a -s -m "Development version $VERSION+1" v$VERSION+1-dev`
55-
- for example, when `v0.1.0` is released, the dev tag would be `v0.2.0-dev`
56-
- if needed, further in time, an extra dev tag can be introduced, e.g. `v0.2.0-dev1`
64+
- `git tag -a -s -m "Development version $VERSION+1 - dev1" v$VERSION+1-dev1`
65+
- for example, when `v0.1.0` is released, the dev tag would be `v0.2.0-dev1`
66+
- if needed, further in time, an extra dev tag can be introduced, e.g. `v0.2.0-dev2`
5767
- This way, the `main` branch will introduce itself as the next version
68+
- "dev" tag can and should be added right after we merge changes from stable to main
5869

5970
## Publish changes
6071

6172
As patch releases should be done on the stable branches, pushing tags and branches differ a little.
6273

74+
**Note:**
75+
> Before pushing to "upstream" it's preferred to push changes into your own fork.
76+
> This allows you to verify the branch and tag manually in GitHub interface, and it will
77+
> trigger the CI on your fork.
78+
6379
For patch release:
6480
- `git push upstream HEAD:v$VER.x v$VERSION` - push branch and tag
6581

@@ -70,13 +86,17 @@ For major/minor release:
7086
- `git checkout v$VER.x`
7187
- `git push upstream HEAD:v$VER.x`
7288

89+
When final release is done it's best to merge back changes from stable branch to main.
90+
This situation can happen if the stable branch was created before the final release (e.g.
91+
with one of the RC versions). Thanks to that all the changes, including ChangeLog will land
92+
on the main branch. After such merge-back it's advised to add "dev" tag (described above).
93+
7394
## Announce release
7495

7596
To make the release official:
7697
- Go to [GitHub's releases tab](https://github.com/oneapi-src/unified-memory-framework/releases/new):
7798
- Tag version: `v$VERSION`, release title: UMF $VERSION, description: copy entry from ChangeLog and format it with no tabs and no characters limit in line
78-
- Prior to version 1.0.0, check the *Set as a pre-release* tick box.
79-
- Announce the release, where needed
99+
- Announce the release in all appropriate channels
80100

81101
## More information
82102

0 commit comments

Comments
 (0)