# Public Release Manuel

WARNING

Public Release means deploy to Maven Central. Only core team members are granted to deploy into Public Repository.

# Setup GPG

Install on macOS

brew install gnupg

Generate key if you don't have it.

gpg --full-generate-key

Publish public key

gpg --send-keys [key-id] --keyserver hkp://subkeys.pgp.net

Show keys

gpg --list-keys

# Setup Sonatype Authentication

Edit and put below configurations into ~/.m2/settings.xml

<servers>
  <server>
    <id>sonatype-nexus-snapshots</id>
    <username>{username}</username>
    <password>{password}</password>
  </server>
  <server>
    <id>sonatype-nexus-staging</id>
    <username>{username}</username>
    <password>{password}</password>
  </server>
</servers>

# Cut Branch

It's only need for feature release, you should cut a branch from master.

git checkout -b 2.6

# Bump Release Version

mvn versions:set -DgenerateBackupPoms=false -DnewVersion=2.6.0
git commit -am '(release) prepare release v2.6.0-rc0'

# Package and Deploy to Sonatype

mvn clean deploy -DskipTests -Prelease -Pscala-2.11 -Pspark-2.4
mvn clean deploy -DskipTests -Prelease -Pscala-2.12 -Pspark-3.0

# Publish Release

Go to Sonatype Repository (opens new window)

  1. verify artifacts
  2. close repository
  3. release to Maven Central

# Announce on GitHub

Edit at GitHub Release Page (opens new window)

# Bump Development Version

mvn versions:set -DgenerateBackupPoms=false -DnewVersion=2.7.0-SNAPSHOT
git commit -am '(release) prepare for next development iteration'