BuildingReleases

Peter van Dijk edited this page Feb 21, 2017 · 22 revisions

4.0 and up and dnsdist

Before

  1. Write changelogs
  2. Update secpoll zonefile
  3. Write draft blogpost

Building the tarballs and packages

  1. tag the commit git tag -a dnsdist-X.Y.Z (tag prereleases as dnsdist-X.Y.Z-{alpha,beta,rc})
  2. Login to the webinterface at builder.powerdns.com
  3. "Builds >> Builders >> create-dnsdist-tar-bz2"
  4. (top right) "force-create-dnsdist-tar-bz2"
  5. Fill in the tag at "revision", check the "is_release"-checkbox (this enables special version name processing)
  6. Hit "Start build"
  7. wait for tarballs and packages to be created
  8. wait for all downstream tests to pass

Uploading and signing the tarball

  1. (on download1.powerdns.com) Copy the tarball to /releases. e.g. cp /srv/www/downloads.powerdns.com/autobuilt/recursor/dist/pdns-recursor-4.0.1.tar.bz2 /srv/www/downloads.powerdns.com/releases
  2. Copy the tarball to your local system for signing (e.g. rsync download1.powerdns.com:/srv/www/downloads.powerdns.com/releases/pdns-recursor-4.0.1.tar.bz2 .)
  3. Sign the tarball with your gpg key with your powerdns.com address on it. Both --detach-sign and --detach-sign --armor
  4. 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/)

Publishing packages

  1. (on repo1.powerdns.com, in your homedir) mkdir rec-401
  2. (on download1.powerdns.com, use ssh -A) find /srv/www/downloads.powerdns.com/autobuilt/recursor/ -name 'pdns*4.0.1*' -exec rsync --progress {} repo.powerdns.com:rec-401 \;
  3. (on repo1.powerdns.com) Copy the packages to folders for easy publishing cd rec-401; /home/pieter/move_pkgs.sh
  4. (on repo1.powerdns.com) Become the user repo: sudo -u repo -i and start bash
  5. (on repo1.powerdns.com, as repo) Copy the dir from your homedir. cp ~YOU/rec-401 /srv/repo/upload
  6. (on repo1.powerdns.com, as repo) Publish the CentOS RPMs: for x in 6 7; do createrepo_wrapper centos $x rec-40 /srv/repo/upload/centos/$x/pdns-*.rpm; done
  7. (if auth) (on repo1.powerdns.com, as repo) Publish the SLES RPMs: createrepo_wrapper sles 12.1 auth-40 sles/121/pdns-*.rpm
  8. (on repo1.powerdns.com, as repo) Publish the Ubuntu debs: for x in wily xenial trusty; do reprepro -b /srv/repo/ubuntu/ includedeb $x-rec-40 ubuntu/$x/*.deb ; done
  9. (on repo1.powerdns.com, as repo) Publish the Debian debs: reprepro -b /srv/repo/debian/ includedeb jessie-rec-40 debian/jessie/*.deb
  10. (on repo1.powerdns.com, as repo) Publish the Raspbian debs: reprepro -b /srv/repo/raspbian/ includedeb jessie-rec-40 raspbian/jessie/*.deb

Note: reprepro with a passphrased key is broken at the moment, remove the passphrase from the key before starting and re-add it immediately after.

Announce

  1. Post on blog - this will also announce to twitter and facebook
  2. If this is a final release, update www.powerdns.com too (git show dfe82b25d2ffa53ab2ff00c465c4a0bd3aa998b5)
  3. Send out SIGNED announcements to pdns-dev/pdns-announce/pdns-users
  4. announce on G+, linkedin - do this for RCs too, to all sites!
  5. update wikipedia and irc topic (for final releases)
  6. #dns on freenode update (send a PR)

pre 4.0

Auth

  1. Decide on a version number
  2. Wait for Jenkins to successfully build, test and package the release branch with the edits above
  3. tag it! git tag -a auth-3.3-rc1
  4. push it git push origin TAG-NAME
  5. 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)
  6. Create a new release branch (rel/auth-3.3) from the current release branch or master for the next release
  7. while waiting for the build, write the release announcement
  8. update secpoll zone
  9. when the build is done, copy the packages and tar.bz2 to the right spots
  10. 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)
  11. post on blog - this will also announce to twitter and facebook
  12. announce on G+, linkedin - do this for RCs too, to all sites!
  13. update wikipedia and irc topic (for final releases)
  14. #dns on freenode update (ask twkm)

Recursor

  1. Decide on a version number
  2. Update public suffix list in pdns/effective_tld_names.dat
  3. 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)
  4. tag it! git tag -a auth-3.3-rc1
  5. push it git push origin TAG-NAME
  6. 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)
  7. Create a new release branch (rel/auth-3.3) from the current release branch or master for the next release
  8. 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)
  9. while waiting for the build, write the release announcement
  10. update secpoll zone
  11. when the build is done, copy the packages and tar.bz2 to the right spots
  12. 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)
  13. post on blog - this will also announce to twitter and facebook
  14. announce on G+, linkedin - do this for RCs too, to all sites!
  15. update wikipedia and irc topic (for final releases)
  16. #dns on freenode update (send PR to https://github.com/dns-channel/dns-channel.github.io or ask @Habbie who can just push)