Releasing Apache VXQuery™

One time steps

  • set up directory structure

    There usually are 3 directories at the same level

    • the source directory vxquery,
    • the site directory, and
    • the distribution directory dist.

      The source directory is version-controlled by git, the other two are version controlled by svn. While the source directory and the distribution directory can have arbitrary names and locations, the site directory has to be called site and it needs to be at the same level as the source directory to enable site deployment.

      Assuming that the source directory is available one can create the directory structure by going to the directory that contains the source directory and checking out the distribution and site directories:

      $ svn co https://dist.apache.org/repos/dist/release/vxquery dist
      $ svn co https://svn.apache.org/repos/asf/vxquery/site
  • add your key to the KEYS file

    Change into the dist directory and run

    (gpg --list-sigs <your name> && gpg2 --armor --export <your name>) >> KEYS

    and then check the new KEYS file into svn

    $ svn ci -m "add [YOUR NAME]'s key to KEYS file"
  • create an encrypted version of your Apache LDAP password for the nexus repository at https://repository.apache.org/

    Follow the steps in the Password Encryption guide to encrypt a master password and to encrypt your Apache LDAP password. (It's nicer if you have maven > 3.2.1 to do this.)

  • add to ~/.m2/settings.xml
    • for the upload to the nexus repository
        <servers>
          <!-- To publish a snapshot of some part of Maven -->
          <server>
            <id>apache.snapshots.https</id>
            <username>[YOUR APACHE LDAP USERNAME]</username>
            <password>[YOUR APACHE LDAP PASSWORD] (encrypted)</password>
          </server>
          <!-- To stage a release of some part of Maven -->
          <server>
            <id>apache.releases.https</id>
            <username>[YOUR APACHE LDAP USERNAME]</username>
            <password>[YOUR APACHE LDAP PASSWORD] (encrypted)</password>
          </server>
         ...
        </servers>
    • to sign the artifacts
        <profiles>
          <profile>
            <id>apache-release</id>
            <properties>
              <gpg.executable>gpg2</gpg.executable>
              <gpg.passphrase>...</gpg.passphrase>
            </properties>
          </profile>
        </profiles>
  • Download Apache Rat from https://creadur.apache.org/rat/download_rat.cgi.

Each time steps

  • clean up
    $ mvn clean
  • run rat (always do this on a clean source folder):
    $ java -jar ~/Downloads/apache-rat-0.11/apache-rat-0.11.jar -d . -E .rat-excludes
  • test your setup
    $ mvn install -Papache-release
  • dry run of the release process
    $ mvn release:prepare -DdryRun=true
  • check (and fix) the content of the LICENSE and NOTICE files (especially the date) and the copyright dates in changed files
  • release to the staging repository
    $ mvn release:prepare
    $ mvn release:perform
  • close the staging repository at https://repository.apache.org/
  • check that the artifacts are available in the repository
  • send out [VOTE] e-mail on dev@vxquery.apache.org
  • after successful vote promote staging repository https://repository.apache.org/
  • add new source artifacts (archive + signature + hashes) to svn https://dist.apache.org/repos/dist/release/vxquery and remove old release dirctory
  • commit changes to svn
  • update the site branch in git from the from the release-tag
  • build a new site and deploy it to ../site
    $ mvn site site:deploy
  • submit the site to svn
    $ cd ../site
    $ svn st | awk '/\?/ { print $2 }' | xargs svn add # add all new files
    $ svn ci -m"updated site"
    $ cd -
  • wait a few days for the mirroring of the release artifacts
  • send [ANNOUNCE] e-mail to announce@apache.org and dev@vxquery.apache.org