Project: Apache Heron (App Definition and Development / Streaming & Messaging)
File: release-process.md

<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> title: Release Process <!-- TODO --> <!-- TODO --> <!-- TODO --> <!-- TODO --> Steps taken from Maven Release process outlined by and summarized below. Request access to publish to org.apache by creating account and requesting access in . Twitter contact needed to confirm access . Install local GPG/PGP to sign files by following . Publish public key . Confirm public key is published . Note leading `0x` required for hex keys. Follow by signing files manually, see steps summarized below. Three artifacts are required for each version: `heron-api`, `heron-storm`, and `heron-spi`. Example POM template files required located in `heron/release/maven/`. <!-- TODO refer to release "build process" instructions, not download --> <!-- TODO update for "heron-spi" artifact when available --> Example command for `heron-api` version `0.14.0` installed using the `--user` flag: ``` $ wget https://github.com/apache/incubator-heron/releases/download/0.14.0/heron-api-install-0.14.0-darwin.sh $ chmod +x heron-api-install-0.14.0-darwin.sh $ ./heron-api-install-0.14.0-darwin.sh --user ``` After running the above install script with `--user` flag, the `heron-api` artifacts are installed into the `~/.heronapi` directory. Example, create folder named `heron-api-bundle-0.14.0`. Artifact bundle must contain the following with Maven Central naming format: `{artifact-name}-{artifact-version}.jar` `{artifact-name}-{artifact-version}.pom` `{artifact-name}-{artifact-version}-javadoc.jar` `{artifact-name}-{artifact-version}-sources.jar` Note `heron-api-0.14.0-javadoc.jar` and `heron-api-0.14.0-sources.jar` are currently placeholders due to Bazel version but required by Maven Central checks. Copy artifact `{artifact}.jar` from `~/.heronapi` to temp folder and rename to `{artifact-name}-{artifact-version}.jar`. Generate versioned POM file using `./maven/maven-pom-version.sh VERSION`. Example: ``` $ ./maven/maven-pom-version.sh 0.14.1 $ ls heron-api-0.14.1.pom heron-storm-0.14.1.pom heron-spi-0.14.1.pom

``` Copy versioned POM files to artifact temp directory. Use GPG/PGP to sign each file by following . Example on Mac OS X using gpg: ``` $ gpg -ab heron-api-0.14.0-javadoc.jar $ ls heron-api-0.14.0-javadoc.jar heron-api-0.14.0-javadoc.jar.asc ``` For each artifact temp file, for example `heron-api-bundle-0.14.0` following .jar and signed .asc files are required: ``` $ cd heron-api-bundle-0.14.0 $ ls heron-api-0.14.0-sources.jar heron-api-0.14.0-sources.jar.asc heron-api-0.14.0-javadoc.jar heron-api-0.14.0-javadoc.jar.asc heron-api-0.14.0.jar heron-api-0.14.0.jar.asc heron-api-0.14.0.pom heron-api-0.14.0.pom.asc ``` Create `bundle.jar` of temp directory contents. ``` $ jar -cvf bundle.jar ./ $ ls bundle.jar ... ``` Login to . For each artifact, `heron-api`, `heron-storm` and `heron-spi`, separately upload the `bundle.jar` created in Step 3 with the following steps: From the `Staging Upload` tab, select `Artifact Bundle` from the `Upload Mode` dropdown. Click the Select Bundle to Upload button, and select the `bundle.jar` you created. Click the Upload Bundle button. If the upload is successful, a staging repository will be created, and you can proceed with , summarized below: After you deployment the repository will be in an `Open` status. You can evaluate the deployed components in the repository using the `Contents` tab. If you believe everything is correct you, can press the Close button above the list. This will trigger the evaluations of the components against the requirements. `Closing` will fail if your components do not meet the requirements. If this happens, you can press Drop and the staging repository will be deleted. Once you have successfully closed the staging repository, you can release it by pressing the Release button. Note, since `org.apache.heron` already exists, once released, artifacts will immediately be synced with Maven Central. Check that artifacts are successfully released by going to and searching for `org.apache.heron` with proper `version`. As a final end-to-end check, ensure that you can successfully pull the correct `version` artifacts from Maven Central in a local topology. To do this: Delete your local `~/.heronapi` directory. Run `mvn clean` in your local heron topology project directory. Update the project `POM.xml` file with new upgraded heron version, . Run `mvn compile` to confirm your project can successfully pull updated version artifacts from Maven Central.