One-time setup ============== Set up Sonatype Account ----------------------- * Sign up for a Sonatype JIRA account [here](https://issues.sonatype.org) * Click *Sign Up* in the login box, follow instructions Get access to repository ------------------------ * Go to [community support](https://issues.sonatype.org/browse/OSSRH) * Ask for publish rights by creating an issue similar to [this one](https://issues.sonatype.org/browse/OSSRH-32031) * You must be logged in to create a new issue * Use the *Create* button at the top tab * Generate the key `gpg --gen-key` * Keep the defaults, but specify a passphrase * Determine your `gpg` version: `gpg -- version` * Find the ID of your public key * If you're using GPG version 1.y.z, `gpg --list-secret-keys` * Look for the line with format `sec 2048R/ABCDEFGH 2015-11-17` * The `ABCDEFGH` is the ID for your public key * If you're using GPG version 2.y.z `gpg --list-secret-keys --keyid-format LONG` * Look for line with format `sec rsa2048/ABCDEFGHIJKLMNOP` * The `ABCDEFGHIJKLMNOP` is the ID. It is 16-byte long, but Gradle only support 8-byte keys. Use the *last* 8 bytes of the key when following the rest of this document. * `gpg --export-secret-keys $HOME/.gnupg/secring.gpg` * Upload your public key to a public server: `gpg --send-keys --keyserver hkp://pgp.mit.edu ` Add deploy credential settings ------------------------ * Create a settings file at `$HOME/.gradle/gradle.properties` with your key information and your sonatype username/password ``` signing.keyId= signing.password= signing.secretKeyRingFile=/usr/local/google/home//.gnupg/secring.gpg ossrhUsername= ossrhPassword= ``` To prepare a release ==================== Update version and deploy to Sonatype ------------------------------------- 1. Update `version.txt` to the release version you want 2. Run `./gradlew stageRelease` to: * Regenerate `gh-pages` branch containing Javadocs * Stage artifacts on Sonatype: to the staging repository if "-SNAPSHOT" is *not* included in the version; otherwise to the snapshot repository only 3. Submit a pull request, get it reviewed, and submit Publish the release ------------------- 1. Run `./gradlew finalizeRelease` * Note: this will release **ALL** versions that have been staged to Sonatype: if you have staged versions you do not intend to release, remove these first from the [Nexus Repository Manager](https://oss.sonatype.org/) by logging in (upper right) and browsing staging repositories (left panel) 2. It will take some time (~10 min to ~8 hours) for the package to transition 3. Publish a new release on Github: * Go to the [releases page](https://github.com/googleapis/api-common-java/releases) and click "Draft a new release" in order to start a new draft. * Make sure the "Tag Version" is `vX.Y.Z` and the "Release Title" is `X.Y.Z`, where `X.Y.Z` is the release version as listed in the `version.txt` files. * Add the commits since the last release into the release draft. Try to group them into sections with related changes. Anything that is a breaking change needs to be marked with `*breaking change*`. Such changes are only allowed for alpha/beta modules and `@BetaApi` features. * Ensure that the format is consistent with previous releases. After adding any missing updates and reformatting as necessary, publish the draft. Bump development version ------------------------ 1. Update `version.txt` to the following "-SNAPSHOT" version