2014-05-22 13:45:30 -05:00
|
|
|
High level release procedure that we follow to make a formal release for the
|
|
|
|
getdns API project. This is a recipe - if you have a better way to do it then
|
|
|
|
update this document and share it with us.
|
|
|
|
|
|
|
|
- code freeze
|
|
|
|
confirm with core team that all commits are in, from this point forward
|
2014-06-30 14:11:39 -05:00
|
|
|
only bug fixes should be committed to the release branch, once the release
|
|
|
|
is cut nothing should be committed to the release branch (make a new release)
|
2014-05-22 13:45:30 -05:00
|
|
|
|
|
|
|
- create a release branch
|
2016-07-21 05:19:39 -05:00
|
|
|
in git repository named for the release, e.g. "release/v1.0.0-b3"
|
|
|
|
we do this because folks may want to continue to work in the develop branch
|
2014-05-22 13:45:30 -05:00
|
|
|
and be free to commit changes without injuring the release process. Since
|
|
|
|
building and testing binaries for a release takes a few days we don't want to
|
|
|
|
force changes to queue up.
|
|
|
|
|
|
|
|
One might argue that a release can be cut more quickly, however there are
|
|
|
|
inevitably little tweaks that need to be made that get uncovered as a result
|
|
|
|
of the binary builds - these tweaks need to be included in the souces for
|
|
|
|
this release so building the source tarball can't be done until all of the
|
|
|
|
binaries have been built and tested.
|
|
|
|
|
|
|
|
- clone repo release branch to a clean local repo
|
|
|
|
this should be a brand spanking new directory - don't try to shortcut it and
|
|
|
|
use a working directory with lots of cruft - crap will find its way into the
|
|
|
|
release and embarass you:
|
|
|
|
|
2016-07-21 05:19:39 -05:00
|
|
|
# git clone -b v1.0.0-b3 https://github.com/getdnsapi/getdns.git getdns-1.0.0-b3
|
2014-05-22 13:45:30 -05:00
|
|
|
|
|
|
|
- update files to reflect release number/date
|
|
|
|
./README.md
|
|
|
|
./ChangeLog
|
2016-07-21 05:19:39 -05:00
|
|
|
./configure.ac
|
|
|
|
- Watch for and change values:
|
|
|
|
- AC_INIT
|
|
|
|
- RELEASE_CANDIDATE
|
|
|
|
- GETDNS_NUMERIC_VERSION
|
|
|
|
- API_VERSION and API_NUMERUC_VERSION
|
|
|
|
- read section "Library version" and
|
|
|
|
update GETDNS_LIBVERSION carefully!
|
2014-05-22 13:45:30 -05:00
|
|
|
|
2016-07-21 05:19:39 -05:00
|
|
|
# autoreconf -fi
|
2014-05-23 11:15:53 -05:00
|
|
|
|
2014-05-22 13:45:30 -05:00
|
|
|
commit these changes to the release branch
|
|
|
|
|
|
|
|
# git commit -a -m "release number and date updates"
|
|
|
|
# git push
|
|
|
|
|
2016-07-21 05:19:39 -05:00
|
|
|
- Do the unit tests on as many different systems as you can. They must all
|
|
|
|
be able to fulfill all requirements. So they have libidn, libev, libuv, libevent,
|
|
|
|
latest libunbound, latest openssl (at least 1.0.2) lastest clang compiler
|
|
|
|
(for static analysis), latest valigrind. Then run:
|
2014-06-19 09:11:21 -05:00
|
|
|
|
2016-07-21 05:19:39 -05:00
|
|
|
# ${GETDNS_SRCDIR}/src/test/tpkg/run-all.sh
|
2014-06-19 09:11:21 -05:00
|
|
|
|
2016-07-21 05:19:39 -05:00
|
|
|
and evaluate the results.
|
|
|
|
|
|
|
|
- build and sign source distribution tarball:
|
|
|
|
# rm -fr *
|
|
|
|
# git reset --hard
|
|
|
|
# git submodule update --init
|
|
|
|
# autoreconf -fi
|
|
|
|
# libtoolize -ci
|
2014-06-30 14:11:39 -05:00
|
|
|
# ./configure
|
2016-07-21 05:19:39 -05:00
|
|
|
# make pub
|
2014-06-30 14:11:39 -05:00
|
|
|
|
|
|
|
- test the resulting tar by building it and running the regression tests
|
2016-07-21 05:19:39 -05:00
|
|
|
on as many different systems as you can.
|
2014-05-23 16:12:52 -05:00
|
|
|
|
2014-05-22 13:45:30 -05:00
|
|
|
- install on each target platform
|
|
|
|
- make sure and use a user that was NOT used for the build, this will uncover
|
|
|
|
any silliness related to absolute paths in the build
|
|
|
|
|
|
|
|
- if a build breaks or an install fails then commit fixes to the relase branch
|
|
|
|
- rebuild EVERY binary using the changed release branch
|
|
|
|
|
2014-06-19 09:11:21 -05:00
|
|
|
- merge branch changes back into master
|
|
|
|
|
2014-05-22 13:45:30 -05:00
|
|
|
- once all binaries are built and tested clean, create source tar ball
|
2014-05-23 16:12:52 -05:00
|
|
|
|
|
|
|
you may need to run this as root to permit the chown
|
|
|
|
# make clean
|
2016-07-21 05:19:39 -05:00
|
|
|
# make pub
|
|
|
|
generates getdns-1.0.0-b3.tar.gz + checksums + signatures
|
2014-05-22 13:45:30 -05:00
|
|
|
|
2016-07-21 05:19:39 -05:00
|
|
|
- upload source tarball and checsums and signatures to the getdnsapi.net site
|
2014-06-30 14:11:39 -05:00
|
|
|
|
2016-07-21 05:19:39 -05:00
|
|
|
# scp getdns-1.0.0-b3.tar.gz* getdnsapi.net:/usr/local/www/apache24/data/dist
|
2014-05-22 13:45:30 -05:00
|
|
|
|
2016-07-21 05:19:39 -05:00
|
|
|
- Create and push signed tags to github
|
2014-05-22 13:45:30 -05:00
|
|
|
|
2016-07-21 05:19:39 -05:00
|
|
|
# git -s v1.0.0-b3
|
|
|
|
# git push --tags
|
2014-06-19 09:11:21 -05:00
|
|
|
|
2014-05-22 13:45:30 -05:00
|
|
|
- update getdnsapi.net web site
|
2016-07-21 05:19:39 -05:00
|
|
|
- create a getdns-1.0.0-b3.tar.gz.changelog and
|
|
|
|
getdns-1.0.0-b3.tar.gz.html in
|
2014-06-19 09:11:21 -05:00
|
|
|
/usr/local/www/apache24/data/dist
|
2016-07-21 05:19:39 -05:00
|
|
|
with the content of ChangeLog
|
|
|
|
and the release announcement respectively.
|
|
|
|
- Edit /usr/local/www/apache24/build_site.py.
|
|
|
|
Change latest entry and create a new news_item entry.
|
2014-06-19 09:11:21 -05:00
|
|
|
- rebuild website
|
2016-07-21 05:19:39 -05:00
|
|
|
# cd /usr/local/www/apache24
|
|
|
|
# ./build_site.py
|
2014-05-22 13:45:30 -05:00
|
|
|
|
|
|
|
- announce message to
|
2016-07-21 05:19:39 -05:00
|
|
|
users@getdnsapi.net, spec@getdnsapi.net and maintainers@nlnetlabs.nl
|
2014-05-23 16:12:52 -05:00
|
|
|
|
|
|
|
|