getdns/project-doc/release-procedure.txt

111 lines
3.9 KiB
Plaintext
Raw Normal View History

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-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:
2016-07-21 05:19:39 -05:00
# ${GETDNS_SRCDIR}/src/test/tpkg/run-all.sh
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
- 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-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
/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.
- 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