Skip to content

Simple Release Candidate Validation

Flavio Junqueira edited this page Aug 27, 2019 · 3 revisions

Once a release candidate is out, it is good practice to make sure that all artifacts are correctly upload and set up. Here, we propose a simple form of validation, but clearly there are more sophisticated ways of doing. This proposal is to help new and occasional contributors with understanding what is expected from an RC validation.

GitHub Release

A release candidate will be listed here. It will typically be the last entry, although you should double-check the release candidate information for the release you are looking into validating. Here is an example of a release candidate:

https://github.com/pravega/pravega/releases/tag/v0.5.1-rc0

The basic points you should pay attention to and exercise are the following:

  1. Read the release candidate description and make sure it is coherent and well written.
  2. Download the artifacts including the digests (e.g., md5, sha1). Verify that the digests match the corresponding artifact.
  3. From the main pravega bundle, run Pravega standalone and make sure you observe no error. Consider running samples to validate behavior.

You may want to try with different versions of Java (e.g., JDK 8 and 11) by setting the Java home accordingly.

Staging artifacts on Sonatype

These are the artifacts that will be pushed to Maven Central once the release candidate is accepted. With the candidate information, we publish the URL for the staging artifacts, e.g.:

https://oss.sonatype.org/content/repositories/iopravega-1035

Note that this URL may no longer work once we complete the corresponding release, so don't be surprised if you get an error. The correct URL to use is shared with the release candidate information, which we typically make available on our public slack (pravega-io.slack.com).

The main validation to perform here is that an application wanting to use the artifacts will be able to resolve the dependencies correctly. To test it, one simple way is to use a simple Maven pom.xml file such as:

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>pravega</groupId>
  <artifactId>streaming</artifactId>
  <version>0.0</version>

<repositories>
    <repository>
      <id>sonatype</id>
      <name>Sonatype</name>
      <url>https://oss.sonatype.org/content/repositories/iopravega-1035</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>

  <dependencies>
    <dependency>
      <groupId>io.pravega</groupId>
      <artifactId>pravega-client</artifactId>
      <version>0.5.1</version>
      <type>pom</type>
    </dependency>
  </dependencies>
</project>

Run mvn dependency:resolve and make sure that it downloads the dependencies and resolve all of them correctly.

A more sophisticated validation would be to write a simple application to fully exercise Pravega.

Have fun validating RCs!

Clone this wiki locally