Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. They need to be a Rya Commiter

    As a Rya Commiter, the Release Manager will have access to several really important tools used throughout the release process.   This includes write access to the official Apache Rya Git Repo, the Apache Jenkins Server, and the Apache Nexus Server.

  2. Checkout and Build Rya

    The Release Manager should verify that they can checkout, build, and test Apache Rya on their machine.

    1. Checkout code from Git

      Code Block
      git clone https://git-wip-us.apache.org/repos/asf/incubator-rya.git incubator-rya-apache
    2. Build and Test Apache Rya

      Code Block
      mvn clean install
  3. Setting up a PGP Key

    The Release manager needs a PGP Key and this key needs to be public.  The first two items listed here need to be done (i.e. get some software to create a key, and create a key).  I'm not sure about the last three.
    1. Getting software
      1. Get GPG.  (PGP should work as well, but this guide uses GPG).  It is probably already available in your linux distro.
      2. Get gpg-agent, and be sure to increase the gpg-agent cache timeout (via .gnupg/gpg-agent.conf) to ensure that the agent doesn’t require re-authentication mid-build, as it will cause things to fail. For example, you can add default-cache-ttl 6000 to increase the timeout from the default of 10 minutes to over an hour.

      3. Here is a working example of ~/.gnupg/gpg-agent.conf

        default-cache-ttl 28800
        # 8 hours
        pinentry-program /usr/bin/pinentry-curses
        allow-loopback-pinentry

      4. make sure you reset gpg-agent:

        echo RELOADAGENT | gpg-connect-agent

         

      5. Using Fedora, might need to use gpg2.  These two must match:

        1. gpg --version

        2. gpg-agent --version
          If they don't, check for version 2:
        1. gpg2 --version
        2. I was able to copy/link the commands in /usr/bin/:  mv gpg  gpg1 and ln -s gpg2  gpg

    2. Creating a key If you do not have a GPG key, reference the very thorough ASF release signing documentation.
    3. Publishing a key to a public server
    4. Adding your key to id.apache.org
  4. Setting up Maven to push to apache repo
    1. Username/pass in maven settings
  5. Add Key to KEYS file
    1. See it here:

      https://dist.apache.org/repos/dist/release/incubator/rya/KEYS

       

    2. Do this with your name where it says "David":

      svn checkout https://dist.apache.org/repos/dist/release/incubator/rya
      (gpg --list-sigs "David"    && gpg --armor --export "David") >> rya/KEYS
      cd rya
      svn commit -m "Adding David to KEYS"

       

  6. Testing settings
    1. Testing locally: 
      1. mvn clean install -Papache-release
    2. Testing by pushing to apache snapshot repo

      1. mvn clean deploy -Papache-release

    3. Testing private key use and gpg-agent prompting.  This is a way to preload the key before the release build below.  Do this with your name (Unique initial characters of the full name are accepted) where it says "David":
      1. eval $(gpg-agent --daemon) ### Start the gpg-agent if not already.
      2. echo "hello" >> text.txt

      3. gpg -e -u "Aaron" -r "David" text.txt  ### These names are actually in the Rya keys file.

      4. gpg -d text.txt.gpg   ### this will prompt for David's key decrypt password and cache it.

         

Staging a

...

Release

  1. Communicate: Give notice of the intent and timing of the release to the developer's list:  dev@rya.incubator.apache.org
    Later, request descriptions for the release notes.  A day before cutting a release candidate, do a last call for Pull requests.

  2. Checkout out code 
    git clone https://git-wip-us.apache.org/repos/asf/incubator-rya.git incubator-rya-apache

  3. Create release candidate branch from master.  Name the branch <releaseVersion>-RC<N>

...

3. Build Rya, prepare and perform release.  This takes about 50 minutes.  At this point you must have the gpg-agent running and probably have the password cached.  It has failed without asking.  See the preparation section for details on testing private key use (6c).  It will ask several things, release names quoted below, and Apache committer username and password a few times, currently 3 times.

...