Versions Compared

Key

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

...

Apache releases are posted to dist.apache.org, which is a Subversion repository.

We have two directories there, check out these:

  • https://dist.apache.org/repos/dist/release/incubator/gobblin/ - this is where PMC approved releases go. Do not upload here until we have a vote passed on dev@gobblin and dev@incubator. Check out this directory and name it apache-dist-release-gobblin
  • https://dist.apache.org/repos/dist/dev/incubator/gobblin/ - this is where releases to be voted-on go. Make the release artifact, and commit it here, then post the [VOTE] thread with links here. Check out this directory and name it apache-dist-dev-gobblin

...

svn co https://dist.apache.org/repos/dist/release/incubator/gobblin apache-dist-release-gobblin
svn co https://dist.apache.org/repos/dist/dev/incubator/gobblin apache-dist-dev-gobblin

...

(gpg --list-sigs $ASF_USERNAME@apache.org && gpg --armor --export $ASF_USERNAME@apache.org) >> KEYS
svn --username $SVN_USERNAME --no-auth-cache commit -m "Update gobblin/KEYS for $GPG_KEY"

References:

Once you have followed these instructions, you should have: 

...

# Maven Signing

signing.keyId=<GPG_KEYID>

signing.password=<GPG_PASSPHRASE>

signing.secretKeyRingFile=~/.gnupg/secring.gpg 


# Nexus Access

nexusUsername=<NEXUS_USERNAME>

nexusPassword=<NEXUS_PASSWORD>

...

Also, if not done already create a new version in issues.apache.org/jira/browse/GOBBLIN using JIRA administration dashboard. You can specify the start date as of today and leave the end date as blank. 

Create a

...

Release

The following steps will build a tarball suitable for an ASF source release. This also generates accompanying MD5 and ASC files.

...

Alternatively, you can make a fresh clone of the repository to a separate directory:

git clone https://git-wip-usgitbox.apache.org/repos/asf/incubator-gobblin.git incubator-gobblin-release
cd incubator-gobblin-release

To generate the source release, run:

...

This generates a source tarball. The -Prelease=true setting prevents -SNAPSHOT from being appended to the version, which is the default behavior. It also prevents any builds from the extracted source tarball from including -SNAPSHOT in the version. It achieves this by modifying gradle.properties within the generated archive.

To generate the convenience binary, run:

./gradlew build -x findbugsMain -x test -x rat -x checkstyleMain

The source and binary tarball needs to be signed. You can do this either manually or automatically. If you have configured your key information in your gradle.properties then your archive should automatically be signed. There should now be a corresponding ASC file alongside the tarball and MD5 file. Otherwise you'll need to sign it manually by running:

gpg --sign --armor --detach-sig build/distribution/source/apache-gobblin-incubating-sources-*.tgz
gpg --sign --armor --detach-sig build/gobblin-distribution/distributions/apache-gobblin-bin-*.tar.gz

Upload the

...

Release

You should make the release candidate available in https://dist.apache.org/repos/dist/dev/incubator/gobblin/. For example, if you are releasing release candidate RC0 for version x.y.z then you should upload the source distribution files to:

https://dist.apache.org/repos/dist/dev/incubator/gobblin/apache-gobblin-incubating-x.y.z-rc0/

To create a release folder and to check it out (be sure to substitute x.y.z for the actual version), run the following:

svn mkdir https://dist.apache.org/repos/dist/dev/incubator/gobblin/apache-gobblin-incubating-x.y.z-rc0
svn co https://dist.apache.org/repos/dist/dev/incubator/gobblin/apache-gobblin-incubating-x.y.z-rc0 apache-gobblin-incubating-x.y.z-rc0
cd apache-gobblin-incubating-x.y.z-rc0

Verify that the sha512 signature in the file matches the output of the command:

shasum -a 512 apache-gobblin-sources-0.15.0.tgz 

You could then add the source and binary release as described above and commit. 

Tag the release

You should tag the release candidate in git. Assuming you are releasing release candidate RC0 for version x.y.z then you can attach a tag to the current commit with:

git tag -s release-x.y.z-rc0 -m 'Apache Gobblin (incubating) x.y.z RC0'

Then push the tag:

git push origin release-x.y.z-rc0

Note: If on Mac, you might also need to do this: 

brew install pinentry-mac

export GPG_TTY=$(tty)

Staging artifacts in Nexus

...

You could also visit the Staging Repository URL in your browser and download the artifacts.

Once the artifacts have been verified, you need to close the Gobblin staging repository. You need to be logged into the Nexus repository to be able to close the repo. You should see a Close button on the top. When you click on the button, it should prompt you for a description. Enter "Apache Gobblin 0.x.y RCz" (substitute the right values for x,y, and z), and click "Save".  

Call for a vote to release

...

Now you can call a vote in the Gobblin dev mailing list for release. Look in the archives for previous votes for an example. If the vote passes then you may call a vote in the Incubator general mailing list (this is necessary because Gobblin is still incubating).

Here is a sample call for vote email: https://www.mail-archive.com/dev@gobblin.incubator.apache.org/msg01352.htmlMail Archive 

Note: You should allow for a minimum of 72 hours voting period for both - dev@gobblin mailing list and incubator general mailing list

After waiting, if the vote passed. Send a result email. Eg.: Mail Archive


Publishing the

release

Release

Once the Incubator general vote has passed, you can publish the source release and artifacts.

Source

Release

The Gobblin source release are checked into SVN under https://dist.apache.org/repos/dist/release/incubator/gobblin.

To see all the previous releases, run:

svn list https://dist.apache.org/repos/dist/release/incubator/gobblin

Create a directory for Promote the release candidate by moving it from dev svn to release by running (replace x.y.z with the release number) by running:

svn mkdirmv https://dist.apache.org/repos/dist/release/incubatordev/gobblin/apache-gobblin-incubating-x.y.z
svn co-rc0 https://dist.apache.org/repos/dist/release/incubator/gobblin/apache-gobblin-incubating-x.y.z apache-gobblin-incubating-x.y.z-release
cd apache-gobblin-incubating-x.y.z-release

Now copy the source release files into this directory and commit them. Within 24 hours they will be distributed to the mirrors. Then it should be available for download at http://www.apache.org/dyn/closer.cgi/incubator/gobblin/apache-gobblin-incubating-x.y.z/

Artifacts

To distribute the artifacts, simply select the staged repository for Gobblin that you prepared in Nexus and chooose Release. They should then be available within the next day or so in the central repository.

Tag

Update the tag

git tag -s release-x.y.z -m 'Apache Gobblin x.y.z'

Then push the tag:

git push origin release-x.y.z

Release on Github

After pushing the git tag, create a Github release to update the repository's packages and generate tagged Docker images.

Documentation for releasing on Github can be found here: https://docs.github.com/en/free-pro-team@latest/github/administering-a-repository/managing-releases-in-a-repository

Update the Website

Note: Website is in separate repository, if not already checked-out, checkout separately.

First, clean any files unknown to git (WARNING: this removes all untracked files, including those listed in .gitignore, without prompting):

git clean -fdx

Alternatively, you can make a fresh clone of the repository to a separate directory:

git clone https://git-wip-us.apache.org/repos/asf/gobblin-site.git gobblin-site-release
cd gobblin-site-release

Modify navigation.html

  1. Search for "Release Step 1" string in navigation.html file, and follow the html comment instruction to add a li html tag for new release (in same format as exists in the html code). 
  2. Search for "Release Step 2" string in index.html file under download dir, and follow the html comment instruction to add a div html tag for new release (in same format as exists in the html code).
  3. Open index.html in your browser locally and verify all links work. 

Commit and push the changes to git. 

Announce the Release

Send an ANNOUNCE email to Gobblin dev mailing list (dev@gobblin.apache.org), and announce@apache.org

Example: Mail Archive