Skip to content

Latest commit

 

History

History
221 lines (128 loc) · 9.55 KB

release_process.md

File metadata and controls

221 lines (128 loc) · 9.55 KB

Releasing Ascender (and awx-operator)

The release process for Ascender is mostly automated as of version 19.5.0.

If you need to revert a release, please refer to the Revert a Release section.

Select the next release version

There are two methods you can use to get the next release version. The manual way and the automated way.

Automated Way

Get a github token

Log into your github account, under your user icon go to Settings => Developer Settings => Personal Access Tokens => Tokens (classic). Select the Generate new token => Generate new token (classic) Fill in the note, select no scopes select "Generate token". Copy the token and create a file at ~/.github_creds or in your awx repo as .github_creds. Enter the token in this file. Run ./tools/scripts/get_next_release.py This will use your token to go query for the PRs in the release and scan their bodies to select X/Y/Z and suggest new versions and spit out notifications.

Manual Way

Get latest release version and list of new work

  1. Open the main project page for Ascender and AWX Operator.

Find the latest releases of the projects on the right hand side of the screen:

Latest Release

  1. Open the compare screen for the two projects Ascender and AWX Operator. In the two dropdowns near the top of the page leave the compare menu at devel and select the drop down for base and then select tags and finally select the latest release from step 1:

PR Compare Screen

The page will now automatically update with a list of PRs that are in Ascender/devel but not in the last release.

PR Compare List

Use this list of PRs to decide if this is a X-stream (major) release, Y-stream (minor) release, or a Z-stream (patch) release. Use semver to help determine what kind of release is needed.

Select the next release version

Indicators of a Z-stream release:

  • No significant new features have been merged into devel since the last release.

Indicators of a Y-stream release:

  • Additional features, non disrupting change of subcomponents.

Indicators of an X-stream release:

  • Disruptive changes.

If the latest release of Ascender is 19.5.0:

  • X-stream release version will be 20.0.0.
  • Y-stream release version will be 19.6.0.
  • Z-stream release version will be 19.5.1.

With very few exceptions the new AWX Operator release will always be a Y-stream release.

Stage the release

To stage the release, maintainers of this repository can run the Stage Release workflow.

The link above will take you directly to the flow execution; if you wanted to manually navigate to the screen:

  1. Click "Actions" at the top of GitHub.
  2. Click on the "Stage Release" workflow.

Once you are on the Stage Release workflow page:

  1. Click the "Run Workflow" drop down.
  2. Populate the inputs.
  3. Click the "Run workflow" button.

Staging Ascender

This workflow will:

  • Build awx from devel
  • Build awx-operator from devel
  • Run smoke tests
  • Create a draft release for both ansible/awx and ansible/awx-operator

Promote the draft releases

Releasing Ascender and the ctrliq.ascender collection

Once staging is complete we can complete the release of awx and the operator.

  1. navigate to the Releases page for Ascender and verify things look ok.

  2. Click the pencil icon on the draft:

Verify draft release

  1. Click the generate release notes button (turns grey after clicking once)

  2. Add in a message of what operator version is release with this Ascender version (if applicable):

## AWX Operator
Released with AWX Operator v0.23.0
  1. Click "Publish Release":

Publish release

Once the release is published, another workflow called Promote Release will start running:

Promote release

This workflow will take the generated images and promote them to quay.io in addition it will also release the ctrliq.ascender collection. The overall process will not take long.

  1. Once the workflow is finished, verify that the new image is present on the Repository Tags on Quay:

Verify released Ascender image

  1. Go to the ctrliq.ascender collection on Ansible Galaxy and validate the latest version matches and was updated recently:

Verify release ctrliq.ascender collection

Releasing the AWX Operator

Once the Ascender image is live, we can now release the AWX Operator.

  1. Navigate to the Releases page for AWX Operator and follow the same process used for publishing the Ascender draft except note the version of Ascender released with Operator.

Once published, the workflow Promote AWX Operator image will run:

Operator Promotion

This workflow will take the generated images and promote them to quay.io.

  1. Once complete, verify the image is on the awx-operator Quay repository:

Verify released awx-operator image

Send notifications

Send notifications to the following groups:

These messages are templated out for you in the output of get_next_release.yml.

Note: The Slack message is the same as the Matrix message.

Announcements

  • Provide enough information for the reader
  • Include:
    • What: What is this, why should someone care
    • Why: Why is this important
    • How: How do I use this (docs, config options)
    • Call to action: What type of feedback are we looking for
  • Link to PR(s) for larger features
  • @newsbot supports Markdown, so use formatted links, bullet points
  • Release Manager posts into social Matrix Channel
  • Appears in next weeks Bulhorn

Create operator hub PRs.

Operator hub PRs are generated via an Ansible Playbook. See someone on the Ascender team for the location of the playbooks and instructions on how to run them.

Adding New Operator to Operator Hub

  1. If you have not already fork the repos:
  1. If you have not already, install
  1. Download the script from https://github.com/ansible/awx-operator/blob/devel/hack/publish-to-operator-hub.sh into your awx-operator repo as release_operator_hub.sh

  2. Make sure you are logged into quay.io with docker login quay.io

  3. Run the script like OPERATOR_PATH=<path to your operator repo> VERSION=1.1.2 PREV_VERSION=1.1.1 FORK=john-westcott-iv ./release_operator_hub.sh

  • Make sure to change the new and previous versions and update your fork!
  1. Create the PRs as described by the output of the script. Submit them just the way they are when you open them.

Revert a Release

Decide whether or not you can just fall-forward with a new Ascender Release to fix a bad release. If you need to remove published artifacts from publicly facing repositories, follow the steps below.

Here are the steps needed to revert an Ascender and an AWX-Operator release. Depending on your use case, follow the steps for reverting just an Ascender release, an Operator release or both.

  1. Navigate to the Ascender Release Page and delete the Ascender Release that needs to be removed.

Revert-1-Image

  1. Navigate to the Ascender Tags Page and delete the Ascender Tag that got created by the Github Actions Workflow from when you originally tried to release Ascender. You need delete the release in step 1 before you can do this step. The tag must not be tied to a release if you want to delete a tag.

Tag-Revert-1-Image [comment]: <> (Need an image here for actually deleting an orphaned tag, place here during next release)

  1. Navigate to the AWX Operator Release Page and delete the AWX-Operator release that needs to be removed.

Revert-2-Image

  1. Navigate to quay.io and delete the published Ascender image(s) and tags.

  2. Navigate to quay.io and delete the published AWX Operator image(s) and tags.

  3. Navigate to the Ansible Galaxy Collections website and remove the published Ascender collection with the bad tag.

  4. Restart the Release Process