Skip to content

Add automated release process ADR with branch/workflow diagrams and long-term-support hotfix flow [WPB-22420]#21221

Open
screendriver wants to merge 6 commits into
devfrom
release-process
Open

Add automated release process ADR with branch/workflow diagrams and long-term-support hotfix flow [WPB-22420]#21221
screendriver wants to merge 6 commits into
devfrom
release-process

Conversation

@screendriver
Copy link
Copy Markdown
Member

@screendriver screendriver commented May 4, 2026

TaskWPB-22420 [Web] General maintenance ticket for PR merges

Purpose

Establish a release process that is safe, predictable, and fully executable from GitHub without local release operations. The process ensures that quality assurance controls promotion from beta to production, production tags represent actual successful deployments, hotfixes can be propagated quickly without branch drift, and long-term-support customers receive stable, low-frequency releases with a dedicated hotfix path.

What this pull request contains

  • New ADR: docs/decision-records/0002-automated-quality-assurance-gated-release-process.md
  • ADR status is Proposed to enable team discussion before implementation.

Review request

Please read the entire ADR carefully, including:

  • Context and alternatives
  • Full decision text
  • Both Mermaid diagrams
  • Consequences

Discussion focus

Please comment on:

  • Branch and release model clarity (dev, master, release/..., lts/...)
  • Hotfix propagation model and traceability
  • Quality assurance approval model
  • Edge deployment gating
  • Long-term-support cadence and hotfix handling

Process

This is the discussion round.
After comments are resolved, I will freeze the ADR text and request final approvals.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 4, 2026

🔗 Download Full Report Artifact

🧪 Playwright Test Summary

  • Passed: 15
  • Failed: 0
  • Skipped: 0
  • 🔁 Flaky: 0
  • 📊 Total: 15
  • Total Runtime: 130.4s (~ 2 min 10 sec)

…grams and long-term-support hotfix flow

Establish a release process that is safe, predictable, and fully executable from GitHub without local release operations. The process ensures that quality assurance controls promotion from beta to production, production tags represent actual successful deployments, hotfixes can be propagated quickly without branch drift, and long-term-support customers receive stable, low-frequency releases with a dedicated hotfix path.
@screendriver screendriver marked this pull request as ready for review May 5, 2026 12:46
@screendriver screendriver changed the title Add automated release process ADR with branch/workflow diagrams and long-term-support hotfix flow Add automated release process ADR with branch/workflow diagrams and long-term-support hotfix flow [WPB-22420] May 5, 2026
Comment thread docs/decision-records/0002-automated-quality-assurance-gated-release-process.md Outdated
Comment thread docs/decision-records/0002-automated-quality-assurance-gated-release-process.md Outdated
Comment thread docs/decision-records/0002-automated-quality-assurance-gated-release-process.md Outdated
Comment thread docs/decision-records/0002-automated-quality-assurance-gated-release-process.md Outdated
Comment thread docs/decision-records/0002-automated-quality-assurance-gated-release-process.md Outdated
Comment thread docs/decision-records/0002-automated-quality-assurance-gated-release-process.md Outdated
Comment thread docs/decision-records/0002-automated-quality-assurance-gated-release-process.md Outdated
Comment thread docs/decision-records/0002-automated-quality-assurance-gated-release-process.md Outdated
Comment thread docs/decision-records/0002-automated-quality-assurance-gated-release-process.md Outdated
Comment thread docs/decision-records/0002-automated-quality-assurance-gated-release-process.md Outdated
Comment thread docs/decision-records/0002-automated-quality-assurance-gated-release-process.md Outdated
Comment thread docs/decision-records/0002-automated-quality-assurance-gated-release-process.md Outdated
Comment thread docs/decision-records/0002-automated-quality-assurance-gated-release-process.md Outdated
Comment thread docs/decision-records/0002-automated-quality-assurance-gated-release-process.md Outdated
Comment thread docs/decision-records/0002-automated-quality-assurance-gated-release-process.md Outdated
Comment thread docs/decision-records/0002-automated-quality-assurance-gated-release-process.md Outdated
Comment thread docs/decision-records/0002-automated-quality-assurance-gated-release-process.md Outdated
Comment thread docs/decision-records/0002-automated-quality-assurance-gated-release-process.md Outdated
Comment thread docs/decision-records/0002-automated-quality-assurance-gated-release-process.md Outdated
Comment thread docs/decision-records/0002-automated-quality-assurance-gated-release-process.md Outdated
Comment thread docs/decision-records/0002-automated-quality-assurance-gated-release-process.md Outdated
Comment thread docs/decision-records/0002-automated-quality-assurance-gated-release-process.md Outdated
Rework the proposed release process ADR based on review feedback.

- rename the ADR to focus on trunk-based automated releases
- replace the dev/master model with main as the single trunk
- define continuous Edge deployment from main
- define automatic Beta deployment from release branches
- keep Production gated by GitHub Environment approval
- clarify post-deployment production tagging and beta tag lineage
- replace long-term-support wording with on-premises maintenance releases
- clarify hotfix, rollback, ownership, and feature flag expectations
@screendriver
Copy link
Copy Markdown
Member Author

First of all: big thank you for all the discussions, comments, and challenges on this ADR. The feedback changed the proposal quite a bit and made the process clearer.

I updated the ADR based on the discussion.

The proposal now moves from "automated release process with dev and master" to a trunk-based release process:

  • master will be renamed to main
  • dev will be retired as a long-lived branch
  • main becomes the single trunk branch
  • every merge to main deploys continuously to Edge
  • release branches are cut from main as release/YYYY-MM-DD.N
  • creating or updating a release branch automatically deploys to Beta
  • Beta tags are anchored to the release identifier, not the deployment date
  • end-to-end tests run against Beta and report to Testiny
  • Production remains protected by GitHub Environment approval
  • Production promotes the Beta-tested artifact instead of rebuilding from source
  • Production tags are created only after successful Production deployment
  • hotfixes are merged to main first, then cherry-picked through reviewed pull requests into active release or maintenance branches

I also renamed the ADR file to:

0002-trunk-based-automated-release-process.md

The previous name was too narrow because the ADR is no longer only about the quality assurance gate. It now also covers the branch model, main, retiring dev, automatic Beta deployment, Edge behavior, rollback, feature flags, and on-premises maintenance releases.

I replaced the "long-term-support release" wording with "on-premises maintenance release". The intent is not that every Production release becomes a long-term-support line. A maintenance line is created only when a customer-managed deployment needs a stable branch for later patches. The webapp team produces the branch, artifact, and tags; customer deployment stays outside this workflow.

I also clarified ownership:

  • quality assurance owns the go/no-go quality gate
  • the engineering release captain owns Production rollout, observability, and incident response
  • rollback is a first-class GitHub Actions workflow owned by engineering release owners

The main tradeoff is that main must stay healthy enough for Edge at all times. That means stronger pull request discipline and feature flag usage. I think that tradeoff is acceptable because Edge is the dogfooding environment, while Beta and Production remain tied to release branches and explicit approval.

Comment thread docs/decision-records/0002-trunk-based-automated-release-process.md
@e-maad e-maad self-requested a review May 18, 2026 08:28
Comment thread docs/decision-records/0002-trunk-based-automated-release-process.md Outdated
Comment thread docs/decision-records/0002-trunk-based-automated-release-process.md
Clarify that beta and production tags include the full release identifier.

- use YYYY-MM-DD.N-beta.M for beta tags
- use YYYY-MM-DD.N-production for production tags
- anchor tag families to the release branch identifier instead of deployment date"
Add serialization rules for release workflows.

- allow only one beta deployment per release branch
- allow newer beta runs to cancel older pre-deployment beta runs
- allow only one production deployment at repository level
- prevent automatic cancellation of production deployments
Clarify how feature flags behave in the trunk-based release process.

- do not require feature flag removal before merging to main
- allow disabled features to land on main for later Edge dogfooding
- enable features for Beta and Production when they are in release scope
- remove flags later after rollout and rollback-by-flag is no longer needed
@sonarqubecloud
Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants