Skip to content

Commit 8653a81

Browse files
authored
Expand on RELEASE-PROCESS.md
1 parent 301d86e commit 8653a81

File tree

1 file changed

+87
-14
lines changed

1 file changed

+87
-14
lines changed

RELEASE-PROCESS.md

+87-14
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,89 @@
11
# Rough release process
22

3-
0. Update `CHANGES` & commit!
4-
1. `export VERSION=2...`
5-
2. `sed -i -e "/^AC_INIT/s,\[.*\],[$VERSION],g" configure.ac`
6-
3. `git commit -s -m "Release ${VERSION}" configure.ac`
7-
4. `git tag -s v${VERSION} -m "$VERSION"`
8-
5. `docker rmi radvd-autogen:latest`
9-
6. `./autogen-container.sh`
10-
7. `./configure`
11-
8. `make packages`
12-
9. `gh release create v${VERSION} radvd-${VERSION}.tar.{xz,gz}{,.asc,.sha256,.sha512}`
13-
14-
15-
## Tools
16-
https://cli.github.com/
3+
## Update `CHANGES`
4+
5+
Go through `git log` and ensure that each relevant change is documented in
6+
the `CHANGES file.
7+
8+
## Ensure version consistency
9+
10+
The version identifier needs to be consistent amongst the `CHANGES` file, the
11+
`configure.ac` file, and the git tag. First, determine the currently-configured
12+
version identifier, such as by running:
13+
14+
```
15+
grep AC_INIT configure.ac | cut -d[ -f 2 | cut -d] -f 1
16+
grep Release CHANGES | head -1
17+
```
18+
19+
When preparing a release candidate build, the version string should end with
20+
`_rcN`, where N is the candidate build number.
21+
22+
Conventionally, the `CHANGES` file will contain a string in the format
23+
`v<version>`, such as `v2.20_rc1` or `v2.20`, while the git tag and
24+
`configure.ac` file will contain a string in the format `<version>`, such as
25+
`2.20_rc1` or `2.20.`
26+
27+
Edit the `CHANGES` file and note the new version identifier.
28+
29+
## Update `configure.ac`
30+
31+
After manually updating the `CHANGES` file, update the `configure.ac` file
32+
with a matching version identifier, such as:
33+
34+
```
35+
export VERSION="$(grep Release CHANGES | head -1 | sed s/'.*Release v'//g)"
36+
echo "New version identifier is: $VERSION"
37+
sed -i -e "/^AC_INIT/s,\[.*\],[$VERSION],g" configure.ac
38+
```
39+
40+
## Validate, commit, and tag
41+
42+
Next, examine the changes to ensure accuracy:
43+
44+
```
45+
git diff CHANGES configure.ac
46+
```
47+
48+
If everything looks good, commit the changes and create the tag. Note that
49+
this will create a signed tag, so ensure that you have GPG configured
50+
appropriately.
51+
52+
```
53+
git commit -s -m "Release ${VERSION}" CHANGES configure.ac
54+
git tag -s v${VERSION} -m "$VERSION"
55+
```
56+
57+
## Build release archives
58+
59+
### Clean up Docker environment
60+
61+
To build the release archives, first delete the container manually to ensure
62+
the build works with a clean container (this command may fail if hte container
63+
does not exist):
64+
65+
```
66+
docker rmi radvd-autogen:latest
67+
```
68+
69+
### Perform a package build
70+
71+
The `autogen-container.sh` script will run `autoreconf` in a clean environment.
72+
Afterward, the `./configure` script can be run in order to configure the build
73+
environment. Finally, `make packages` will create package archives suitable
74+
for release.
75+
76+
```
77+
./autogen-container.sh
78+
./configure
79+
make packages
80+
```
81+
82+
### Release the new version on GitHub
83+
84+
To perform this step, first install and configure the
85+
[GitHub CLI](https://cli.github.com/).
86+
87+
```
88+
gh release create v${VERSION} radvd-${VERSION}.tar.{xz,gz}{,.asc,.sha256,.sha512}`
89+
```

0 commit comments

Comments
 (0)