mirror of https://github.com/getdnsapi/getdns.git
Merge pull request #205 from saradickinson/merge/doc_changes
Merge/doc changes
This commit is contained in:
commit
7f2fcca80d
|
@ -1,61 +1,52 @@
|
||||||
High level release procedure that we follow to make a formal release for the
|
High level release procedure for formal release for the getdns API project.
|
||||||
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
|
1) Git branching for a release
|
||||||
confirm with core team that all commits are in, from this point forward
|
-- Confirm with core team (preferably via email) that all commits to be included
|
||||||
only bug fixes should be committed to the release branch, once the release
|
in the release are in the develop branch. Development for the next release can
|
||||||
is cut nothing should be committed to the release branch (make a new release)
|
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.
|
||||||
|
|
||||||
- create a release branch
|
2) Prepare the release
|
||||||
in git repository named for the release, e.g. "release/v1.0.0-b3"
|
-- Clone the upstream to a _new_ local directory. (Do NOT re-use and
|
||||||
we do this because folks may want to continue to work in the develop branch
|
existing working copy as this can lead to issues).
|
||||||
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:
|
|
||||||
|
|
||||||
# git clone -b v1.0.0-b3 https://github.com/getdnsapi/getdns.git getdns-1.0.0-b3
|
# git clone -b v1.0.0-b3 https://github.com/getdnsapi/getdns.git getdns-1.0.0-b3
|
||||||
|
|
||||||
- update files to reflect release number/date
|
-- Update several files to reflect release number/date
|
||||||
./README.md
|
./README.md
|
||||||
./ChangeLog
|
./ChangeLog
|
||||||
./configure.ac
|
./configure.ac
|
||||||
- Watch for and change values:
|
- Check and change the values for:
|
||||||
- AC_INIT
|
- AC_INIT
|
||||||
- RELEASE_CANDIDATE
|
- RELEASE_CANDIDATE
|
||||||
- GETDNS_NUMERIC_VERSION
|
- GETDNS_NUMERIC_VERSION
|
||||||
- API_VERSION and API_NUMERUC_VERSION
|
- API_VERSION and API_NUMERUC_VERSION
|
||||||
- read section "Library version" and
|
- read the section "Library version" and update GETDNS_LIBVERSION carefully!
|
||||||
update GETDNS_LIBVERSION carefully!
|
|
||||||
|
|
||||||
# autoreconf -fi
|
# autoreconf -fi
|
||||||
|
|
||||||
commit these changes to the release branch
|
Commit these changes to the release branch
|
||||||
|
|
||||||
# git commit -a -m "release number and date updates"
|
# git commit -a -m "release number and date updates"
|
||||||
# git push
|
# git push
|
||||||
|
|
||||||
- Do the unit tests on as many different systems as you can. They must all
|
3) Test
|
||||||
be able to fulfill all requirements. So they have libidn, libev, libuv, libevent,
|
The unit and tpkg tests should be run on all the supported platforms. They must all
|
||||||
latest libunbound, latest openssl (at least 1.0.2) lastest clang compiler
|
be able to fulfil all requirements. So they must have libidn, libev, libuv, libevent,
|
||||||
(for static analysis), latest valigrind. Then run:
|
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
|
# ${GETDNS_SRCDIR}/src/test/tpkg/run-all.sh
|
||||||
|
|
||||||
and evaluate the results.
|
and evaluating the results.
|
||||||
|
|
||||||
- build and sign source distribution tarball:
|
4) Build and sign source distribution tarball
|
||||||
# rm -fr *
|
# rm -fr *
|
||||||
# git reset --hard
|
# git reset --hard
|
||||||
# git submodule update --init
|
# git submodule update --init
|
||||||
|
@ -64,47 +55,39 @@ update this document and share it with us.
|
||||||
# ./configure
|
# ./configure
|
||||||
# make pub
|
# make pub
|
||||||
|
|
||||||
- test the resulting tar by building it and running the regression tests
|
The resulting tarball must be built, installed and tested on all the supported
|
||||||
on as many different systems as you can.
|
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
|
||||||
|
|
||||||
- install on each target platform
|
5) Fix any problems
|
||||||
- make sure and use a user that was NOT used for the build, this will uncover
|
-- If a build breaks or an install fails then commit fixes to the release branch.
|
||||||
any silliness related to absolute paths in the build
|
Then re-run steps 3 and 4 for all supported platforms using the new code.
|
||||||
|
|
||||||
- if a build breaks or an install fails then commit fixes to the relase branch
|
6) Merge branch changes back into master/develop
|
||||||
- rebuild EVERY binary using the changed release branch
|
-- 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.
|
||||||
|
|
||||||
- merge branch changes back into master
|
7) Create the tarball
|
||||||
|
# make clean
|
||||||
|
# make pub
|
||||||
|
This generates getdns-1.0.0-b3.tar.gz + checksums + signatures.
|
||||||
|
|
||||||
- once all binaries are built and tested clean, create source tar ball
|
8) Upload source tarball and checksums and signatures to the getdnsapi.net site
|
||||||
|
|
||||||
you may need to run this as root to permit the chown
|
# scp getdns-1.0.0-b3.tar.gz* getdnsapi.net:/usr/local/www/apache24/data/dist
|
||||||
# make clean
|
|
||||||
# make pub
|
|
||||||
generates getdns-1.0.0-b3.tar.gz + checksums + signatures
|
|
||||||
|
|
||||||
- upload source tarball and checsums and signatures to the getdnsapi.net site
|
9) Create and push signed tags to github
|
||||||
|
|
||||||
# scp getdns-1.0.0-b3.tar.gz* getdnsapi.net:/usr/local/www/apache24/data/dist
|
# git -s v1.0.0-b3
|
||||||
|
# git push --tags
|
||||||
|
|
||||||
- Create and push signed tags to github
|
10) Update getdnsapi.net web site
|
||||||
|
- Create an entry the the 'Checksum' page using the content of ChangeLog
|
||||||
|
- Create a new 'News' entry
|
||||||
|
|
||||||
# git -s v1.0.0-b3
|
11) Announce the release to the lists (make sure to sign the emails)
|
||||||
# git push --tags
|
|
||||||
|
|
||||||
- update getdnsapi.net web site
|
|
||||||
- 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
|
|
||||||
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
|
|
||||||
# cd /usr/local/www/apache24
|
|
||||||
# ./build_site.py
|
|
||||||
|
|
||||||
- announce message to
|
|
||||||
users@getdnsapi.net, spec@getdnsapi.net and maintainers@nlnetlabs.nl
|
users@getdnsapi.net, spec@getdnsapi.net and maintainers@nlnetlabs.nl
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue