Versions Compared

Key

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

...

Prerequisites for Managing A Release

Pre-prerequisites Apache Account

  • Must have an Apache account
  • Make sure you can access your Apache web space. Try ssh-ing into <USER_NAME>@people.apache.org.
  • Set up password-less access by uploading your public key.

...

  • The process of cutting a release requires a number of tools to be locally installed (maven, jekyll, etc). Ubuntu users can install those tools via apt-get. However, it may be most convenient to use a EC2 instance based on the AMI ami-b897fe88 (available is US-West, has Scala 2.10.3 and SBT 0.13.1 installed). This has all the necessary tools installed. Mac users are especially recommended to use a EC2 instance instead of attempting to install all the necessary tools. If you want to prepare your own EC2 instance (different version of Scala, SBT, etc.), follow the steps given in the Miscellaneous section (see at the end of this document).
  • Consider using CPU-optimized instances, which may provide better bang for the buck.
  • Transfer your GPG keys from your home machine to the EC2 instance.

    Code Block
    languagebash
    # == On home machine ==
    gpg --list-keys  # Identify the KEY_ID of the key you generated
    gpg --output pubkey.gpg --export <KEY_ID>
    gpg --output ---export-secret-key <KEY_ID> | cat pubkey.gpg - | gpg --armor --output keys.asc --symmetric --cipher-algo AES256
    # Copy keys.asc to EC2 instance
     
    # == On EC2 machine ==
    gpg --no-use-agent --output - keys.asc | gpg --import
    rm keys.asc
  • Install your private key that allows you to have password-less access in Apache webspace.

  • Download appropriate version of Spark that has the right scripts related to the releases.

...

  • Make sure Maven is configured with your Apache username and password. Your ~/.m2/settings.xml should have the following.

    Code Block
    languagexml
    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                          http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <servers>
    <server>
    <id>apache.snapshots.https</id>
    <username>APACHE_USERNAME</username>
    <password>PASSWORD</password>
    </server>
    <server>
    <id>apache.releases.https</id>
    <username>APACHE_USERNAME</username>
    <password>PASSWORD</password>
    </server>
    </servers>
    </settings>
  • The process of creating releases has been automated via this create release script
    • Configure the script by specifying the Apache username + password and the Apache GPG key passphrase. BE CAREFUL to not to accidentally check them in.
    • This script can be run in any directory.
    • Read and understand the script fully before you execute it. It will cut a Maven release, build binary releases and documentation, then copy the binary artifacts to a staging location on Make sure you have password-less access to Apache webspace (people.apache.org.) from the machine you are running the script on. Otherwise uploading of binary tarballs and docs will fail and you will have upload them manually.
    • Read and understand the script fully before you execute it. It will cut a Maven release, build binary releases and documentation, then copy the binary artifacts to a staging location on people.apache.org.
    • NOTE: You must use git 1.7.X for this or else you'll hit this horrible bug.
  • After script has completed, find the open staging repository in Apache Nexus to which the artifacts were uploaded to. Close the staging repository. Wait for the closing to succeed. Now all the staged artifacts are public!

...

  • If a release candidate does not pass, it is necessary to roll back the commits which advanced Spark's versioning.

    Code Block
    languagebash
    $ git fetch apache
    $ git checkout apache/branch-0.8$ git fetch apache
    $ git checkout apache/branch-0.9
     
    # Delete earlier tag. If you are using RC-based tags (v0.9.1-rc1) then skip this.
    $ git tag -d v0.89.1-incubating
    $ git push origin :v0.8.1-incubating9.1
    
    # Revert changes made by the Maven release plugin 
    $ git revert HEAD --no-edit    # revert dev version commit
    $ git revert HEAD~2 --no-edit  # revert release commit
    $ git push apache HEAD:branch-0.89

Auditing a Staged Release Candidate

...