How to make a release

Introduction

Apache Etch releases are made according to the release policy of the Apache Software Foundation. More information about this can be found here: http://www.apache.org/dev/release.html

Prerequisites

This describes the necessary steps to be taken BEFORE drafting a release:

  1. Update release depended files in trunk

    • Changelog: /Changelog.txt

      Update the file with the svn log output between the last release and the current trunk:

      svn log -r \<revision of last release>:HEAD

      In order to get the revision of the last release you can e.g. use the command

      svn info https://svn.apache.org/repos/asf/etch/releases/release-\<last release version number>

    • Update the version numbers in all files. (e.g. grep the trunk for the last release version). You should get at least to following files:

      • /README.txt
      • /dist-README.txt
      • /compiler/src/main/java/org/apache/etch/compiler/Version.java
      • /doc/libs/global.ent
      • /etch.properties
    • Release notes: /RELEASE_NOTES.txt

      The release notes do contain important information about the release. Please read through the existing content carefully, add new notes or remove obsolete remarks. At the end of the file the release notes exported from JIRA are attached. Those release notes can be copied from the Roadmap section of JIRA for the respective release.

Create the release artifacts

Apache Etch is currently shipped both as a source package (mandatory according to ASF Policy!) and as a binary package for different platforms.
Therefore you need the toolchains for Linux as well as Windows at hand in order to create all the release artifacts.

Make sure all the stable bindings are building, the unit tests do succeed and all the examples are working.

  1. Source packages

    Create a zip-compressed archive and a tarball.

    svn export trunk/ apache-etch-\<version>-src
    zip -r apache-etch-\<version>-src.zip apache-etch-\<version>-src
    tar cfzv apache-etch-\<version>-src.tar.gz apache-etch-\<version>-src/
    

  2. Binary packages:

    The binaries are build with ant by calling the release target.

    On Linux:
    ant release -DEtch.property.platformVersion=x86 -DEtch.property.osVersion=linux
    
    On Windows: ant release -DEtch.property.platformVersion=x86 -DEtch.property.osVersion=windows

    After a successful build the binary packages are located at trunk/target/Installers/packages

  3. Create checksums and signatures for all the created packages

    MD5
    gpg --print-md MD5 ${artifact} > ${artifact}.md5
    
    SHA512 gpg --print-md SHA512 ${artifact} > ${artifact}.sha
    Signature gpg -u \<your-sig-id> --armor --output ${artifact}.asc --detach-sig ${artifact}

  4. Upload release candidate

    All the generated artifacts are committed to the /dev tree of the dist repository in order to make them testable for other members of the PMC before they need to cast their vote.

  5. Start [VOTE] thread on the dev@etch.a.o mailing list

  6. Wait at least 72h for votes.

Publish the release

As soon as a release got accepted, it can be published officially on the Apache servers.

  1. Move the approved release candidate from the /dev tree of the dist repository to the /release directory.

  2. Update news and download section on the website.

  3. Create known bugs webpage with link to the bug tracker.

  4. Send out the good news on all known communication channels (mailing lists, Etch's Twitter account).