Skip to content

Commit c71240b

Browse files
Updating release documentation
1 parent 96f30bf commit c71240b

File tree

1 file changed

+28
-5
lines changed

1 file changed

+28
-5
lines changed

docs/maintainers.md

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -151,15 +151,33 @@ Some examples using our initial and new RFC templates: #92, #94, #95, #991, #122
151151

152152
### Releasing a new version
153153

154-
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): ...`).
154+
!!! note "Only maintainers with write permissions to this repository can trigger the pipeline to release a new version"
155155

156-
**Looks good, what's next?**
156+
Releasing a new version is a multi-step process that takes up to 2 hours to complete. Most steps are automated - you provide inputs to trigger the release and monitor progress.
157157

158-
Kickoff the [`Release` workflow](https://github.com/aws-powertools/powertools-lambda-python/blob/6db9079d21698b72f5d36d72c993c1aad7276db6/.github/workflows/release.yml#L3) with the intended version - this might take around 25m-30m to complete.
158+
**Prerequisites**: Ensure the commit history in the `develop` branch is up to date, commit messages are semantic, and include their respective area (e.g., `feat(logger): <change>`, `chore(ci): ...`).
159159

160-
Once complete, you can start drafting the release notes to let customers know **what changed and what's in it for them (a.k.a why they should care)**. We have guidelines in the [release notes section](#drafting-release-notes) so you know what good looks like.
160+
**Release Steps**:
161161

162-
> **NOTE**: Documentation might take a few minutes to reflect the latest version due to caching and CDN invalidations.
162+
1. **Run end-to-end tests** and ensure they pass
163+
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
164+
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
165+
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)
166+
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
167+
6. **Deploy China layers** - Run the [`Layer Deployment (Partitions)`](https://github.com/aws-powertools/powertools-lambda-python/actions/workflows/layers_partitions.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
168+
7. **Update documentation** - Run the [`Rebuild latest docs`](https://github.com/aws-powertools/powertools-lambda-python/actions/workflows/rebuild_latest_docs.yml) workflow with `develop` branch and the PyPI package version
169+
170+
Once complete, you can start drafting the release notes to let customers know **what changed and what's in it for them (a.k.a why they should care)**. We have guidelines in the [release notes](#drafting-release-notes) section so you know what good looks like.
171+
172+
#### Re-run partial failed Release workflow
173+
174+
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:
175+
176+
**Option 1: Re-run failed jobs**
177+
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.
178+
179+
**Option 2: Re-trigger the entire workflow**
180+
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.
163181

164182
#### Release process visualized
165183

@@ -224,6 +242,11 @@ section Docs
224242
225243
Documentation release : milestone, m4, 10:28,1m
226244
245+
section SSM Parameters
246+
Update SSM Parameters : active, 8s
247+
248+
SSM Parameters : milestone, m5, 10:28,1m
249+
227250
section Post-release
228251
Close pending issues : active, 8s
229252

0 commit comments

Comments
 (0)