Skip to content

chore(ci): make pretest optional for release-production#2174

Merged
senamakel merged 1 commit into
tinyhumansai:mainfrom
senamakel:chore/release-prod-skip-e2e
May 19, 2026
Merged

chore(ci): make pretest optional for release-production#2174
senamakel merged 1 commit into
tinyhumansai:mainfrom
senamakel:chore/release-prod-skip-e2e

Conversation

@senamakel
Copy link
Copy Markdown
Member

@senamakel senamakel commented May 19, 2026

Summary

  • Adds a skip_e2e workflow_dispatch input to release-production.yml mirroring the existing input on release-staging.yml.
  • Gates the pretest-tests and pretest-e2e jobs on !inputs.skip_e2e.
  • Relaxes the create-release job guard to accept pretest success OR (skip_e2e && skipped).
  • Propagates skip_pretests to the reusable build-desktop.yml so the bypass is logged in the build run.

Problem

release-production.yml always runs the full pretest matrix (unit/rust + E2E across all three OSes) before create-release. When promoting a staging tag whose pretests already ran green, this re-runs an expensive matrix unnecessarily, and there is no escape hatch to unblock a production cut when the signal is already known.

release-staging.yml already supports this via a skip_e2e input — production should match.

Solution

Mirror staging's skip_e2e design verbatim:

  • Add the skip_e2e workflow_dispatch input (boolean, default false).
  • Gate pretest-tests / pretest-e2e on !inputs.skip_e2e.
  • Update create-release.if to allow either pretest success or (skip_e2e && skipped).
  • Pass skip_pretests: ${{ inputs.skip_e2e }} to build-desktop so the bypass is metadata-logged in the build run.

The cleanup-failed-release condition is intentionally untouched — skipped pretests are neither failure nor cancelled, so the failure-cleanup branch naturally won't fire on the skip path.

Submission Checklist

  • N/A: workflow-only change, no application code under test
  • N/A: workflow-only change, no application code on the diff coverage gate
  • N/A: behaviour-only change
  • N/A: workflow-only change, no feature IDs affected
  • N/A: workflow-only change, no runtime dependencies introduced
  • N/A: does not touch a release-cut surface tracked by the manual smoke checklist (control-plane CI input only)
  • N/A: no linked issue

Impact

  • CI/release pipeline only. No runtime/desktop/CLI impact.
  • Operator-facing: a new optional input on the Release Production workflow dispatch UI. Default behaviour (run pretests) is unchanged.
  • Safety: when skip_e2e=true, the production cut proceeds without the pretest gate — operators must already have a green pretest signal (e.g. a v*-staging tag).

Related

  • Closes:
  • Follow-up PR(s)/TODOs:

AI Authored PR Metadata (required for Codex/Linear PRs)

Linear Issue

  • Key: N/A
  • URL: N/A

Commit & Branch

  • Branch: chore/release-prod-skip-e2e
  • Commit SHA: b2bc834

Validation Run

  • N/A: workflow-only change, no frontend formatter delta
  • N/A: workflow-only change, no TS surface touched
  • N/A: Focused tests — workflow-only change
  • N/A: Rust fmt/check — no Rust touched
  • N/A: Tauri fmt/check — no Tauri touched

Validation Blocked

  • command: N/A
  • error: N/A
  • impact: N/A

Behavior Changes

  • Intended behavior change: Allow operators to skip the pretest phase of release-production.yml via a new skip_e2e workflow_dispatch input.
  • User-visible effect: New optional input on the Release Production workflow dispatch form; default false preserves current behaviour.

Parity Contract

  • Legacy behavior preserved: Default skip_e2e=false keeps the existing pretest gate active and the create-release predicate strictly equivalent.
  • Guard/fallback/dispatch parity checks: create-release now accepts pretest success OR (skip_e2e && skipped); mirrors release-staging.yml exactly.

Duplicate / Superseded PR Handling

  • Duplicate PR(s): N/A
  • Canonical PR: N/A
  • Resolution (closed/superseded/updated): N/A

Adds a `skip_e2e` workflow_dispatch input mirroring release-staging.yml,
gating the pretest-tests and pretest-e2e jobs so an operator can bypass
them when the pretest signal is already known (e.g. promoting a staging
tag whose pretests already ran green).

- create-release accepts pretest success OR (skip_e2e && skipped)
- build-desktop receives skip_pretests for run-policy logging
@senamakel senamakel requested a review from a team May 19, 2026 06:02
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 19, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 9b31f1af-8d6e-4275-ab0d-ad4abc435f90

📥 Commits

Reviewing files that changed from the base of the PR and between 94a407c and b2bc834.

📒 Files selected for processing (1)
  • .github/workflows/release-production.yml

📝 Walkthrough

Walkthrough

This PR adds a skip_e2e workflow dispatch input to the production release workflow that allows operators to bypass the pretest (unit and E2E) phase entirely. When enabled, pretest jobs are skipped and the release draft creation proceeds, with the skip flag propagated downstream to the build-desktop workflow.

Changes

Skip E2E Tests in Production Release

Layer / File(s) Summary
Input definition and job gating
.github/workflows/release-production.yml
Adds a skip_e2e boolean dispatch input and gates pretest-tests and pretest-e2e jobs to run only when skip_e2e is false.
Release job condition and downstream propagation
.github/workflows/release-production.yml
Updates create-release job condition to allow release creation when pretest jobs succeed or are skipped, and threads the skip_e2e input into build-desktop as skip_pretests.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

  • tinyhumansai/openhuman#1956: Both PRs update the GitHub Actions release flow to honor skip_e2e by conditionally skipping pretest-tests/pretest-e2e and passing a matching skip_pretests input into build-desktop.

  • tinyhumansai/openhuman#1955: Both PRs implement an operator-controlled skip_e2e bypass that conditionally gates pretest/e2e jobs and threads that skip state into downstream build-desktop reusable workflow.

  • tinyhumansai/openhuman#1887: Both PRs modify release-production.yml to adjust the release "pretest gate" involving pretest-e2e and how create-release proceeds based on pretest outcomes.

Poem

🐰 A workflow so swift, with a shortcut so neat,
Skip the E2E tests when you need to be fleet!
Just set the dispatch, let the release fly free,
Building faster than carrots grow wild—hop with glee! 🥕⚡


Comment @coderabbitai help to get the list of available commands and usage tips.

@senamakel senamakel merged commit d844cf9 into tinyhumansai:main May 19, 2026
20 of 22 checks passed
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.

1 participant