mirror of https://github.com/getdnsapi/getdns.git
94 lines
3.4 KiB
Plaintext
94 lines
3.4 KiB
Plaintext
High level release procedure for formal release for the getdns API project.
|
|
|
|
1) Git branching for a release
|
|
-- Confirm with core team (preferably via email) that all commits to be included
|
|
in the release are in the develop branch. Development for the next release can
|
|
continue on develop.
|
|
-- Create a release branch. We use the pattern "release/v1.0.0-b3" for naming
|
|
release branches. This branch is used for testing
|
|
and bug fixing while preparing the release (which can take several days
|
|
if there are un-foreseen issues). Note that from this point forward _only_
|
|
bug fixes for this release should be committed to the release branch.
|
|
-- Once the release is published there should be no further commits on that
|
|
release branch.
|
|
|
|
2) Prepare the release
|
|
-- Clone the upstream to a _new_ local directory. (Do NOT re-use and
|
|
existing working copy as this can lead to issues).
|
|
|
|
# git clone -b v1.0.0-b3 https://github.com/getdnsapi/getdns.git getdns-1.0.0-b3
|
|
|
|
-- Update several files to reflect release number/date
|
|
./README.md
|
|
./ChangeLog
|
|
./configure.ac
|
|
- Check and change the values for:
|
|
- AC_INIT
|
|
- RELEASE_CANDIDATE
|
|
- GETDNS_NUMERIC_VERSION
|
|
- API_VERSION and API_NUMERUC_VERSION
|
|
- read the section "Library version" and update GETDNS_LIBVERSION carefully!
|
|
|
|
# autoreconf -fi
|
|
|
|
Commit these changes to the release branch
|
|
|
|
# git commit -a -m "release number and date updates"
|
|
# git push
|
|
|
|
3) Test
|
|
The unit and tpkg tests should be run on all the supported platforms. They must all
|
|
be able to fulfil all requirements. So they must have libidn, libev, libuv, libevent,
|
|
latest libunbound, latest openssl (at least 1.0.2) latest clang compiler
|
|
(for static analysis), latest valgrind. The tests can be run using:
|
|
|
|
# ${GETDNS_SRCDIR}/src/test/tpkg/run-all.sh
|
|
|
|
and evaluating the results.
|
|
|
|
4) Build and sign source distribution tarball
|
|
# rm -fr *
|
|
# git reset --hard
|
|
# git submodule update --init
|
|
# autoreconf -fi
|
|
# libtoolize -ci
|
|
# ./configure
|
|
# make pub
|
|
|
|
The resulting tarball must be built, installed and tested on all the supported
|
|
platforms. Be sure to use a user that was NOT used for the build, this will uncover
|
|
any issues related to absolute paths in the build
|
|
|
|
5) Fix any problems
|
|
-- If a build breaks or an install fails then commit fixes to the release branch.
|
|
Then re-run steps 3 and 4 for all supported platforms using the new code.
|
|
|
|
6) Merge branch changes back into master/develop
|
|
-- If this is a production release - then the release branch must be merged into master
|
|
Sign the merge tag if possible.
|
|
-- Now the release is ready, all the relevant commits on the release branch
|
|
should also be merged back into develop.
|
|
|
|
7) Create the tarball
|
|
# make clean
|
|
# make pub
|
|
This generates getdns-1.0.0-b3.tar.gz + checksums + signatures.
|
|
|
|
8) Upload source tarball and checksums and signatures to the getdnsapi.net site
|
|
|
|
# scp getdns-1.0.0-b3.tar.gz* getdnsapi.net:/usr/local/www/apache24/data/dist
|
|
|
|
9) Create and push signed tags to github
|
|
|
|
# git -s v1.0.0-b3
|
|
# git push --tags
|
|
|
|
10) Update getdnsapi.net web site
|
|
- Create an entry the the 'Checksum' page using the content of ChangeLog
|
|
- Create a new 'News' entry
|
|
|
|
11) Announce the release to the lists (make sure to sign the emails)
|
|
users@getdnsapi.net, spec@getdnsapi.net and maintainers@nlnetlabs.nl
|
|
|
|
|