Skip to content

Release Process

Frank Greguska edited this page Sep 13, 2024 · 3 revisions

This page outlines the steps necessary to create a new release of the python_cmr package.

Step 1: Open an issue

Open a new issue in the repository with a label question. The discussion should agree whether the release is a major, minor, or patch release and the new semantic version should be agreed on. This new version will be referred to as x.x.x in the following steps.

Step 2: Prepare release branch

  1. Pull the latest revision from the develop branch
  2. Create a branch named release/x.x.x from the develop branch.
  3. On the newly created release branch, update the CHANGELOG.md by renaming the Unreleased section to x.x.x.
  4. Update the links at the bottom of the CHANGELOG.md to reference the vx.x.x tag. This tag will be created in a later step.
  5. Edit the version in pyproject.toml to be x.x.x-rc1
  6. Run poetry update to update the dependencies of the package and commit the lock file to the branch
  7. Ensure the github action https://github.com/nasa/python_cmr/actions/workflows/python-app.yml passes, may need to fix linting errors or ask for help with any failing tests.

Step 3: Bump version on develop

  1. On the develop branch, edit the version in pyproject.toml to be x.x+1.x-a0 to allow for development to continue while the release is being worked on
  2. Edit the changelog by renaming the Unreleased section to x.x.x and creating a new blank Unreleased section.
  3. Commit & Push the changes to the develop branch

Step 4: Publish pre-release

  1. On the release page https://github.com/nasa/python_cmr/releases, click "Draft a new release".
  2. Target release/x.x.x and create a new tag called vx.x.x-rc1.
  3. Set the previous release to the most recent release (excluding pre-releases) before this one and click generate release notes.
  4. Check the box for Set as a pre-release
  5. Publish the release

This will publish the release to pypi via https://github.com/nasa/python_cmr/actions/workflows/python-publish.yml.

Step 5: Open pull request to main

  1. Open a pull request from release/x.x.x which targets main.
  2. Set the pull request to close the issue created in Step 1
  3. Request review/feedback from other users

Step 6: Finish release

  1. Merge the pull request to main using a merge commit
  2. Edit the pyproject.toml to drop the rcx qualifier and commit and push the change to main
  3. On the release page https://github.com/nasa/python_cmr/releases, click "Draft a new release".
  4. Target main and create a new tag called vx.x.x.
  5. Set the previous release to the most recent release (excluding pre-releases) before this one and click generate release notes.
  6. Check the box for Set as latest release
  7. Publish the release
  8. Important Merge main back into develop. There will be merge conflicts in the pyproject.toml and CHANGELOG (at a minimum) that will need to be manually resolved

Step 7: Notify users of new release

Post a message to the #cmr channel on eosdis.slack.com