You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: RELEASE_STEPS.md
+33-13Lines changed: 33 additions & 13 deletions
Original file line number
Diff line number
Diff line change
@@ -19,47 +19,63 @@ will be released for a oneAPI release. Once all changes planned for UMF release
19
19
we follow the process (described in more detail below):
20
20
21
21
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 takes the form
24
25
`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 downstream projects to utilize the release tag. If any issues arise
28
29
from integration, apply any necessary hot fixes to `v$VER.x`
29
30
branch and go back to step 2 - to create a patch release. This step can also be tested
30
31
using `rc` version, potentially followed by another `rc` tag.
31
32
32
33
## Make a release locally
33
34
34
35
Do changes for a release:
35
-
- Start of appropriate branch:
36
+
- Start of appropriate up-to-date branch:
37
+
- Fetch remotes
38
+
-`git remote update`
36
39
- For patch release, do it from a stable branch:
37
40
-`git checkout v$VER.x` (e.g., checkout `v0.1.x` if this is a `v0.1.1` patch)
38
41
- If previously we decided not to create such branch, create it now, based on the appropriate minor or major tag
39
42
- For major/minor release start from the `main` branch
40
43
- 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
44
+
- For major releases mention API and ABI compatibility with the previous releases
42
45
- For major and minor releases, update `UMF_VERSION_CURRENT` in `include/umf/base.h` (the API version)
43
46
- 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
45
48
- 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
46
53
- Commit these changes and tag the release:
47
54
-`git commit -a -S -m "$VERSION release"`
48
55
-`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`
49
59
- For major/minor release:
50
60
- If stable branch for this release is required, create it:
51
61
-`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 we may omit creation of the branch
53
63
- 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`
57
67
- 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
58
69
59
70
## Publish changes
60
71
61
72
As patch releases should be done on the stable branches, pushing tags and branches differ a little.
62
73
74
+
**Note:**
75
+
> Before pushing to "upstream" it's preferred to push changes into your own fork.
76
+
> This way branch and tag can be verified manually in GitHub interface, and it will
77
+
> trigger the CI on your fork.
78
+
63
79
For patch release:
64
80
-`git push upstream HEAD:v$VER.x v$VERSION` - push branch and tag
65
81
@@ -70,12 +86,16 @@ For major/minor release:
70
86
-`git checkout v$VER.x`
71
87
-`git push upstream HEAD:v$VER.x`
72
88
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
+
73
94
## Announce release
74
95
75
96
To make the release official:
76
97
- Go to [GitHub's releases tab](https://github.com/oneapi-src/unified-memory-framework/releases/new):
77
98
- 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.
0 commit comments