Standardized release workflow #61
Locked
AndrewSazonov
announced in
ADRs
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
This defines a common and consistent release workflow for all products developed under the EasyScience organization.
The main idea is to keep the process largely automated, while splitting it into clearly defined steps with intentional manual approval points. This provides both safety and consistency: automation handles repetitive and error-prone tasks, while developers remain in control of important decisions.
The overall branching model (
feature → develop → master) is described in ADR #12.The diagram below shows the top-level release workflow steps after the
developbranch is prepared for a new release. Each column represents one major step. Substeps details are given in the corresponding sections below.Release Workflow Diagram
--- config: kanban: ticketBaseUrl: 'https://github.com/easyscience/peasy-lib/blob/master/.github/workflows/#TICKET#' --- kanban [1. Create Release PR<br/> 👤 Human, 🤖 Automated] Trigger workflow to create PR from _develop_ to _master_ @{ticket: release-pr.yml, assigned: 📜} [2. CI Checks<br/> 🤖 Automated] PR labels validation @{ticket: pr-labels.yml, assigned: 📜} Code quality checks @{ticket: quality.yml, assigned: 📜} Code and package tests @{ticket: test.yml, assigned: 📜} Tutorial tests @{ticket: tutorial-tests.yml, assigned: 📜} Coverage checks @{ticket: coverage.yml, assigned: 📜} Documentation build @{ticket: docs.yml, assigned: 📜} Security analysis @{ticket: security.yml, assigned: 📜} [3. Review and Merge<br/> 👤 Human] Review CI results Approve and merge the PR [4. Prepare Release Draft<br/> 🤖 Automated] Release draft creation @{ticket: release-notes.yml, assigned: 📜} [5. Publish Release<br/> 👤 Human] Review tag/version,<br/>_created based on PR labels_ Review release title,<br/>_created from template_ Review release notes,<br/>_created and grouped based on PR titles_ Mark as a prerelease if needed Publish the release [6. Post-Release Actions<br/> 🤖 Automated] PyPI publication @{ticket: pypi-publish.yml, assigned: 📜} Documentation build and deployment @{ticket: docs.yml, assigned: 📜} Backmerge _master_ to _develop_ @{ticket: backmerge.yml, assigned: 📜}Release Workflow Details
1. Create release PR (develop → master)
The release process starts by creating a pull request from develop to master.
This is triggered manually via the GitHub Actions tab using the workflow:
Release PR (develop → master).
See ADR #57 for more details.
2. CI checks
Creating the PR automatically triggers a full set of CI workflows, including:
ruff)interrogate)prettier)https://easyscience.github.io/peasy-lib/dev
All checks must pass before the PR can be merged.
3. Review and Merge
When all CI checks are green, a maintainer explicitly:
This manual approval is an intentional control point.
4. Prepare Release Draft
Merging into
masterautomatically triggers workflow that create a release draft with:develop)This ensures consistent and automated release preparation.
5. Review and Publish Release
A maintainer opens the release draft on the GitHub Releases page and:
This is the second intentional manual approval step.
6. Post-Release Actions
Publishing the release automatically triggers:
https://easyscience.github.io/peasy-lib/v1.2.0
Summary
The full release process is automated between clearly defined manual approval points, but still requires human actions to:
Links to the original discussions: #54
Beta Was this translation helpful? Give feedback.
All reactions