-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathRELEASE-CHECKLIST
78 lines (50 loc) · 2.06 KB
/
RELEASE-CHECKLIST
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
STEPS BEFORE TAGGING A RELEASE
1. Examine CMakeLists.txt and aes_siv.h. Verify that the library version and
the LIBAES_SIV_VERSION_* macros are consistent with the version you plan
to tag.
2. Build and run the test suite:
git clean -dxf
cmake . && make && make test
Verify that it passes. Repeat this step on every available test platform.
3. Check coverage:
git clean -dxf
cmake -DENABLE_COVERAGE=1 -DENABLE_DEBUG_TINY_CHUNK_SIZE=1 . && make && make test
gcov CMakeFiles/runtests.dir/aes_siv_test.c.o
Check that gcov reports 100% coverage.
4. Verify a clean run from the undefined behavior sanitizer:
git clean -dxf
cmake -DENABLE_SANITIZER=undefined . && make && make test
Verify that the UB sanitizer doesn't flag any issues. Repeat this
step on every available test platform.
5. Verify a clean run under Valgrind:
git clean -dxf
cmake . && make
valgrind ./runtests > /dev/unll
Verify that valgrind reports no errors and that all memory is freed
before exiting. Repeat this step on every available test platform.
6. Run through ctgrind (ensure that valgrind has the ctgrind patch applied):
git clean -dxf
cmake -DENABLE_CTGRIND=1 . && make
valgrind ./runtests > /dev/null
Verify that no errors are reported when code from libaes_siv is at
the top of the stack. Verify that any errors reported with OpenSSL
at the top of the stack are due to known issues. Repeat this step on
every available test platform.
7. Run through the clang static analyzer:
git clean -dxf
scan-build cmake . && scan-build make
8. Run benchmarks:
git clean -dxf
cmake . && make bench
./bench
Verify absence of performance regressions. Repeat this step on every
available test platform.
9. Proofread README.md and the man pages. Ensure that their content is
up-to-date.
STEPS FOR ISSUING A RELEASE
1. Create and push a release tag:
git tag v<version>
git push --tags
2. Via the GitHub UI, create a release associated with the tag.
3. If the release contains security fixes, notify oss-security.
4. Notify other interested parties.