ci: auto-update drivers on main instead of blocking PRs#3294
Open
Fishbowler wants to merge 2 commits into
Open
ci: auto-update drivers on main instead of blocking PRs#3294Fishbowler wants to merge 2 commits into
Fishbowler wants to merge 2 commits into
Conversation
698ebd1 to
40cc0e0
Compare
Contributor
Author
|
Does this need to touch a non-workflow file in order to trigger workflows or something? |
amanjeetsingh150
approved these changes
May 19, 2026
Replace the "Check Drivers Up-to-Date" PR gate with an "Update Drivers" workflow that builds and commits fresh drivers automatically after every merge to main that touches driver source or committed artefacts. update-drivers.yaml (replaces check-drivers.yaml): - Triggers on push to main with path filters covering both source and artefact files; if wrong artefacts land on main via any route (e.g. a contributor with a different local toolchain), CI rebuilds and overwrites them with canonical versions - Builds Android and iOS drivers and commits the artefacts back with [skip ci] to prevent re-triggering - Concurrency group with cancel-in-progress: false serialises runs so no update is lost if two merges land close together - workflow_dispatch rebuilds everything unconditionally - changes job short-circuits on workflow_dispatch to avoid running paths-filter unnecessarily; downstream jobs stay simple with no always() gymnastics test-e2e.yaml: - Add explicit "Build Android drivers" and "Build iOS drivers" steps (renamed from "Build xctest-runner") so E2E runs always exercise freshly-built local drivers Note: maestro-client's checkAndroidApksFresh Gradle task and the maestro-android-source.sha256 sentinel file are now vestigial — they enforced the old "contributors must commit fresh APKs" contract that CI now handles automatically. Cleanup is a follow-up PR. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
40cc0e0 to
38b9b05
Compare
amanjeetsingh150
approved these changes
May 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Replaces
check-drivers.yamlwith a newupdate-drivers.yamlworkflow that automatically builds and commits fresh drivers tomainafter every merge that touches driver source — and adds explicit driver build steps to the E2E test workflow.Why this is better
The old approach required contributors to pre-build drivers locally and commit them as part of their PR. This was friction-heavy and error-prone: easy to forget, the iOS driver comparison logic was fragile, and it blocked PRs on a manual step that CI could just do itself. Either people forgot and it caused problems, or people added the wrong ones and it caused problems.
The new approach:
test-e2e.yamlensure E2E runs always exercise the freshest local build.main. The workflow triggers on push tomainwith path filters, builds the relevant drivers, and commits them back with[skip ci]to avoid recursive runs.changesfilter. If a contributor with a different local toolchain commits driver artefacts directly, CI immediately rebuilds them with the canonical toolchain and uses them for e2e. When you reachmainthey're rebuilt and committed. No PR gate needed — the wrong thing is just corrected automatically.workflow_dispatchrebuilds both drivers unconditionally — useful after toolchain upgrades (e.g. Xcode version, GitHub runner change) or to unstick a broken state.Changes
.github/workflows/check-drivers.yaml→update-drivers.yaml— new trigger (push: main+ artefact paths), jobs that build and commit artefacts,contents: writepermissions, concurrency group,workflow_dispatchsupport.github/workflows/test-e2e.yaml— adds "Build Android drivers" step (and renames "Build xctest-runner" → "Build iOS drivers")Follow-up
maestro-client'scheckAndroidApksFreshGradle task and themaestro-android-source.sha256sentinel file are now vestigial — they enforced the old "contributors must commit fresh APKs" contract. A follow-up PR will remove them.🤖 Generated with Claude Code