-
Notifications
You must be signed in to change notification settings - Fork 974
BuildingReleases
Pieter Lexis edited this page Feb 16, 2018
·
59 revisions
- Write changelogs
- To get a list of all the merged PRs since the previous version do:
git log --merges --oneline «previous-version»..«current-version»- example:
git log --merges --oneline rec-4.1.0..master
- Now create the changelog:
./build-scripts/changelog-from-pr.py PR# PR# PR# - Don't forget to change the XXXX's
- To get a list of all the merged PRs since the previous version do:
- Update secpoll zonefile (do not forget to update the SOA serial!)
- Write draft blogpost
- Tag the commit
git tag -a dnsdist-X.Y.Z(tag prereleases asdnsdist-X.Y.Z-{alpha,beta,rc})- Do a
git tag -nto see what the previous messages look like and make a similar one - Tag the commit before the changelog and secpoll update, otherwise users will get a secpoll upgrade notice while there's no release available yet
- Do a
- Push the tag with
git push --tags - Login to the webinterface at
builder.powerdns.com - "Builds >> Builders >> create-dnsdist-tar-bz2"
- (top right) "force-create-dnsdist-tar-bz2"
- Fill in the tag at "revision", check the "is_release"-checkbox (this enables special version name processing)
- Hit "Start build"
- wait for tarballs and packages to be created
- wait for all downstream tests to pass
- (on download1.powerdns.com) Copy the tarball to /releases. e.g.
cp /srv/www/downloads.powerdns.com/autobuilt/$PRODUCT/$VERSION/$PRODUCT-$VERSION.tar.bz2 /srv/www/downloads.powerdns.com/releases - Copy the tarball to your local system for signing (e.g.
rsync download1.powerdns.com:/srv/www/downloads.powerdns.com/releases/$PRODUCT-$VERSION.tar.bz2 .) - Sign the tarball with your gpg key with your powerdns.com address on it. Both
--detach-signand--detach-sign --armor - Upload the signature files to the right place on
downloads.powerdns.com(e.g.rsync *.tar.bz2.* download1.powerdns.com:/srv/www/downloads.powerdns.com/releases/) - In the case of CVEs, move the minimal patches to
download1:/srv/www/downloads.powerdns.com/patches/(the minimal patches are send in an e-mail by Remi to customers
- (on repo1.powerdns.com, in your homedir)
mkdir $PRODUCT-$VERSION - (on download1.powerdns.com, use
ssh -A)rsync -a --progress /srv/www/downloads.powerdns.com/autobuilt/$PRODUCT/$VERSION/ repo.powerdns.com:$PRODUCT-$VERSION \; - (on repo1.powerdns.com) Extract all the tarballs with packages:
cd $PRODUCT-$VERSION; /home/pieter/move_pkgs.sh - (on repo1.powerdns.com) Become the user
repo:sudo -u repo -iand start bash - (on repo1.powerdns.com, as
repo) Copy the dir from your homedir.rsync ~YOU/$PRODUCT-$VERSION /srv/repo/upload- For some reason this never worked for me, so I did:
cp -a $YOU/$PRODUCT-$VERSION /srv/repo/upload/
- For some reason this never worked for me, so I did:
- (on repo1.powerdns.com, as
repo) Publish the CentOS RPMs:for x in 6 7; do createrepo_wrapper centos $x $PRODUCT-$VERSION_REPO $PRODUCT-VERSION-centos-$x-x86_64/*.rpm; done - (if auth) (on repo1.powerdns.com, as
repo) Publish the SLES RPMs:createrepo_wrapper sles 12.1 auth-40 sles-121-x86_64/*.rpm - (on repo1.powerdns.com, as
repo) Publish the Ubuntu debs:for x in trusty xenial artful; do reprepro -b /srv/repo/ubuntu/ includedeb $x-$PRODUCT-$VERSION_REPO $PRODUCT-$VERSION-ubuntu-$x-amd64/*.deb ; done - (on repo1.powerdns.com, as
repo) Publish the Debian debs:for x in jessie stretch; do reprepro -b /srv/repo/debian/ includedeb $x-$PRODUCT-$VERSION_REPO $PRODUCT-$VERSION-debian-$x-amd64/*.deb; done - (on repo1.powerdns.com, as
repo) Publish the Raspbian debs:reprepro -b /srv/repo/raspbian/ includedeb jessie-$PRODUCT-$VERSION_REPO $PRODUCT-$VERSION-raspbian-jessie-armhf/*.deb
NOTE not yet updated!
All on download1.powerdns.com
mkdir pdns-recursor-4.0.5-rc1cd pdns-recursor-4.0.5-rc1find /srv/www/downloads.powerdns.com/autobuilt/recursor/ -name 'pdns-recursor*4.0.5*rc*' -exec cp {} . \;~pieter/move_pkgs.shfind . -type f -name 'pdns-recursor*4.0.5*rc*' | sort | xargs sha256sum > sha256sums- Sign the sha256sums file (both
--detach-signand--detach-sign --armor) cd ..mv pdns-recursor-4.0.5-rc1 /srv/www/downloads.powerdns.com/releases/packages
-
docker pull centos:$OS_VERSIONordocker pull debian:$OS_VERSIONordocker pull ubuntu:$OS_VERSION docker run -it $OS_FROM_PREVIOUS_LINE:$VERSION /bin/bash- Follow instructions on https://repo.powerdns.com/
For the Raspberry Pi packages there's a physical RPi in the office. (Docker can be tried but never worked for me.)
dig @pdns-public-ns1.powerdns.com TXT $PRODUCT-$VERSION.security-status.secpoll.powerdns.com +norec +short
- Post on blog - this will also announce to twitter and facebook
- If this is a final release, update www.powerdns.com too (
git show dfe82b25d2ffa53ab2ff00c465c4a0bd3aa998b5) - Send out SIGNED announcements to pdns-dev/pdns-announce/pdns-users
- For big releases also send an e-mail to OX Dream Team
- announce on G+, linkedin - do this for RCs too, to all sites!
- update wikipedia and irc topic (for final releases)
-
#dnson freenode update (send a PR)
- Decide on a version number
- Wait for Jenkins to successfully build, test and package the release branch with the edits above
- tag it!
git tag -a auth-3.3-rc1 - push it
git push origin TAG-NAME - do a build ( https://autotest.powerdns.com/job/auth-git/ or /recursor-git/ -> Build With Parameters), enter the tag (
auth-3.3-rc1) (or from CLI:jenkins build auth-git -p PDNS_TAG=auth-3.4.0-rc2) - Create a new release branch (
rel/auth-3.3) from the current release branch or master for the next release - while waiting for the build, write the release announcement
- update secpoll zone
- when the build is done, copy the packages and tar.bz2 to the right spots
- if this is a final release, update www.powerdns.com too (
git show dfe82b25d2ffa53ab2ff00c465c4a0bd3aa998b5) send out announcements to pdns-dev/pdns-announce/pdns-users (gpg --clearsign -u netherlabs < announce-3.2-final > announce-3.2-final.signed) - post on blog - this will also announce to twitter and facebook
- announce on G+, linkedin - do this for RCs too, to all sites!
- update wikipedia and irc topic (for final releases)
-
#dnson freenode update (ask twkm)
- Decide on a version number
- Update public suffix list in
pdns/effective_tld_names.dat - Wait for Jenkins to successfully build, test and package the release branch with the edits above ([rec] do a 1 million bulktest run with this build, check recursor.log for weird failures)
- tag it!
git tag -a auth-3.3-rc1 - push it
git push origin TAG-NAME - do a build ( https://autotest.powerdns.com/job/auth-git/ or /recursor-git/ -> Build With Parameters), enter the tag (
auth-3.3-rc1) (or from CLI:jenkins build auth-git -p PDNS_TAG=auth-3.4.0-rc2) - Create a new release branch (
rel/auth-3.3) from the current release branch or master for the next release - do a build ( https://autotest.powerdns.com/job/auth-git/ or /recursor-git/ -> Build With Parameters), enter the tag (
auth-3.3-rc1) (or from CLI:jenkins build auth-git -p PDNS_TAG=auth-3.4.0-rc2) - while waiting for the build, write the release announcement
- update secpoll zone
- when the build is done, copy the packages and tar.bz2 to the right spots
- if this is a final release, update www.powerdns.com too (
git show dfe82b25d2ffa53ab2ff00c465c4a0bd3aa998b5) send out announcements to pdns-dev/pdns-announce/pdns-users (gpg --clearsign -u netherlabs < announce-3.2-final > announce-3.2-final.signed) - post on blog - this will also announce to twitter and facebook
- announce on G+, linkedin - do this for RCs too, to all sites!
- update wikipedia and irc topic (for final releases)
-
#dnson freenode update (send PR to https://github.com/dns-channel/dns-channel.github.io or ask @Habbie who can just push)
Please also read the PowerDNS Documentation that is available from https://doc.powerdns.com/