How to release a new version of QGreenland

Caution

The official QGreenland package is built and distributed at NSIDC and currently can only be built by someone with access to the NSIDC VPN. Most of the steps shown here require collaboration with someone at NSIDC.

1. Update the CHANGELOG

Ensure that the CHANGELOG.md is updated with information about changes since the last release.

2. Bump the version

Use bumpversion (see bump-my-version) to bump the specified part of the version:

$ bumpversion bump {major|minor|patch|prerelease|build|}

Versions should be in one of the following forms:

  • vX.Y.ZalphaN: An alpha pre-release, e.g. v1.2.3beta2

  • vX.Y.ZbetaN: A beta pre-release, e.g. v1.2.3alpha2

  • vX.Y.ZrcN: A release candidate, e.g. v1.2.3rc3.

  • vX.Y.Z: A final release, e.g. v1.2.3.

Caution

When using bumpversion bump build, ensure you have already used bumpversion bump prerelease. Running bumpversion bump build from a final release version number can result in an incorrect patch number, e.g. v1.2.304.

3. Create and push a git tag

Create a tag for the version. E.g.,:

git tag v4.0.0

Publishing the tag to GitHub will trigger an automated build of the qgreenland Docker image via GitHub Actions.

git push origin v4.0.0

4. Build QGreenland

Caution

If datasets that were included in a previous release have been updated and need to be re-fetched, ssh to the production VM and cleanup the fetch cache for those datasets with the clean command to cleanup the relevant datasets. E.g., ./scripts/cli.sh cleanup -f "caff_murre_colonies*"

Connect to the NSIDC VPN and navigate to the QGreenland Jenkins. Use the qgreenland_C3_Production_Build_QGreenland_Package job to trigger a build with the git tag pushed above and wait for completion (usually takes a little over an hour).

6. Create a GitHub release

Once a new version of the package has been successfully built, create a new release in GitHub and add the CHANGELOG for the new version in the release notes. If this is a pre-release (e.g., v4.0.0alpha3), be sure to mark it as such!

Creating a new release will trigger archival of our code in Zenodo and issuance of a new DOI. Do not create a “Release” in GitHub until a new version of the package has been successfully built.

7. Upload new version of package to Zenodo

Step 6 should have archived the code for QGreenland to Zenodo. For new official (non-prerelease) versions of QGreenland, the finalized package should be uploaded to Zenodo as a new version.

Login to Zenodo using the QGreenland credentials in Vault and navigate to the QGreenland data package entry. You should find a button “New version” here that will initiate the process for uploading the package and creating a new record.

8. Alert mirrors to new package availability

The QGreenland package is mirrored at the Polar Geospatial Center here: https://data.pgc.umn.edu/gis/packages/qgreenland/packages/.

Once a new version of QGreenland is ready to be mirrored, reach out to the PGC and request that they pull the latest data from our primary server here: https://nsidc.org/qgreenland/packages/.

Note

The PGC does not typically mirror pre-releases. Only alert the PGC once a version is ready for the general public (e.g., v4.0.0).