...
- You can login to Nexus
- You have a Git workspace for https://git-wip-usgitbox.apache.org/repos/asf/incubator-gobblin.git
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>
...
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:
...
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
Once the Incubator general vote has passed, you can publish the source release and artifacts.
SourceRelease
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
Promote the release candidate by moving it from dev svn to release by running (replace x.y.z
with the release number):
svn mv https://dist.apache.org/repos/dist/dev/incubator/gobblin/apache-gobblin-incubating-x.y.z-rc0 https://dist.apache.org/repos/dist/release/incubator/gobblin/apache-gobblin-incubating-x.y.z
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
- 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).
- 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).
- 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