Skip to content

docs(maintainers): improve release process documentation #7088

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: develop
Choose a base branch
from

Conversation

leandrodamascena
Copy link
Contributor

Issue number: #7086

Summary

Improves the maintainers documentation for the release process by restructuring the content for better clarity and adding guidance for handling workflow failures.

Changes

Changes in the documentation.

User experience

Please share what the user experience looks like before and after this change

Checklist

If your change doesn't seem to apply, please leave them unchecked.

Is this a breaking change?

RFC issue number:

Checklist:

  • Migration process documented
  • Implement warnings (if it can live side by side)

Acknowledgment

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Disclaimer: We value your time and bandwidth. As such, any pull requests created on non-triaged issues might not be successful.

@leandrodamascena leandrodamascena requested a review from a team as a code owner August 1, 2025 10:54
@pull-request-size pull-request-size bot added the size/M Denotes a PR that changes 30-99 lines, ignoring generated files. label Aug 1, 2025
@boring-cyborg boring-cyborg bot added documentation Improvements or additions to documentation internal Maintenance changes labels Aug 1, 2025
@github-actions github-actions bot removed the internal Maintenance changes label Aug 1, 2025
@boring-cyborg boring-cyborg bot added the internal Maintenance changes label Aug 1, 2025
@leandrodamascena leandrodamascena requested review from dreamorosi and removed request for anafalcao August 1, 2025 10:57
@leandrodamascena leandrodamascena self-assigned this Aug 1, 2025
@leandrodamascena leandrodamascena linked an issue Aug 1, 2025 that may be closed by this pull request
1 task
@github-actions github-actions bot removed the internal Maintenance changes label Aug 1, 2025
@dreamorosi
Copy link
Contributor

Will review before Monday - thank you!

Copy link
Contributor

@dreamorosi dreamorosi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left a few comments to try making some of the steps clearer for those who are not familiar with the pipeline.

@@ -151,15 +151,33 @@ Some examples using our initial and new RFC templates: #92, #94, #95, #991, #122

### Releasing a new version

Firstly, make sure the commit history in the `develop` branch **(1)** it's up to date, **(2)** commit messages are semantic, and **(3)** commit messages have their respective area, for example `feat(logger): <change>`, `chore(ci): ...`).
!!! note "Only maintainers with write permissions to this repository can trigger the pipeline to release a new version"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not mandatory, but I'd consider rephrasing/simplifying to "Only maintainers with write access to this repository can release new version/can make releases"


> **NOTE**: Documentation might take a few minutes to reflect the latest version due to caching and CDN invalidations.
1. **Run end-to-end tests** and ensure they pass
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider linking the workflow page for easy access.


> **NOTE**: Documentation might take a few minutes to reflect the latest version due to caching and CDN invalidations.
1. **Run end-to-end tests** and ensure they pass
2. **Trigger Release v3 workflow** - Run the [`Release v3`](https://github.com/aws-powertools/powertools-lambda-python/actions/workflows/release-v3.yml) workflow with two inputs: the new Powertools version (check [latest version](https://pypi.org/project/aws-lambda-powertools/)) and the new Lambda Layer version number
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider adding examples here, especially for the layer.

Let's tell the reader exactly where to look and what logic to follow:

  • go to this page / run this command to read the latest value from SSM
  • add +1 to that number, i.e. if the result is 30, then you should input 31

This entire process can be tricky and overwhelming, let's remove as much ambiguity and cognitive load as possible.

2. **Trigger Release v3 workflow** - Run the [`Release v3`](https://github.com/aws-powertools/powertools-lambda-python/actions/workflows/release-v3.yml) workflow with two inputs: the new Powertools version (check [latest version](https://pypi.org/project/aws-lambda-powertools/)) and the new Lambda Layer version number
3. **Monitor the release workflow** - it runs tests, publishes to PyPI, deploys Lambda layers to Beta and Prod environments across all commercial regions, runs canary tests, and updates documentation. If it fails, see the [Re-run partial failed Release workflow](#re-run-partial-failed-release-workflow) section
4. **Review and merge documentation/version PRs** - two PRs will be created to update documentation and bump version files. Review, approve and merge both (order doesn't matter)
5. **Deploy GovCloud layers** - Run the [`Layer Deployment (GovCloud)`](https://github.com/aws-powertools/powertools-lambda-python/actions/workflows/layer_govcloud.yml) workflow with `develop` branch, `Prod` environment, and the Layer version number from step 2. Contact the Powertools team via internal tools if this fails
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Contact the Powertools team via internal tools if this fails

This might be redundant since we said at the top that only maintainers can make releases.


#### Re-run partial failed Release workflow

While workflows are designed to be stable, failures can occur during the release process. If the Release v3 workflow fails, you have two recovery options:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
While workflows are designed to be stable, failures can occur during the release process. If the Release v3 workflow fails, you have two recovery options:
While workflows are designed to be stable, failures can occur during the release process. If the release workflow fails, you have two recovery options:

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⬆️ future proofing

While workflows are designed to be stable, failures can occur during the release process. If the Release v3 workflow fails, you have two recovery options:

**Option 1: Re-run failed jobs**
If layer deployments fail due to CloudFormation errors (we deploy ~600 layers per release and can't control CloudFormation quotas), you can re-run only the failed jobs. This will retry the deployment and typically resolves quota-related issues.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we say the name of the step(s) that can be retried with this mechanism?

If layer deployments fail due to CloudFormation errors (we deploy ~600 layers per release and can't control CloudFormation quotas), you can re-run only the failed jobs. This will retry the deployment and typically resolves quota-related issues.

**Option 2: Re-trigger the entire workflow**
If the release fails due to workflow modifications or permission issues that prevent re-running failed jobs, trigger the Release v3 workflow again. In this case, check the `Skip publishing to PyPI as it can't publish more than once. Useful for semi-failed releases` option to avoid PyPI publishing conflicts.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider making the "Skip publishing ...." an > [!important] callout so it's extra clear

i.e. (but with MKdocs syntax)


Important

Make sure to select "Skip publishing to PyPI as it can't publish more than once. Useful for semi-failed releases" when rerunning the entire workflow to avoid duplicate publishes

@boring-cyborg boring-cyborg bot added the internal Maintenance changes label Aug 5, 2025
@github-actions github-actions bot removed the internal Maintenance changes label Aug 5, 2025
Copy link

sonarqubecloud bot commented Aug 5, 2025

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation size/M Denotes a PR that changes 30-99 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Docs: Update release process documentation
2 participants