Skip to content

The workflow action pins only move when someone notices - #174

Merged
xroche merged 5 commits into
masterfrom
dependabot-actions
Sep 1, 2026
Merged

The workflow action pins only move when someone notices#174
xroche merged 5 commits into
masterfrom
dependabot-actions

Conversation

@xroche

@xroche xroche commented Sep 1, 2026

Copy link
Copy Markdown
Owner

Nothing bumps the action pins across the seven workflows here, so they move only when someone notices. Dependabot now opens a weekly PR per pin, and dependabot-automerge.yml arms auto-merge on it. The required "assemble (AGP 8)" and "native (ndk-build)" checks still gate that merge.

The workflow is xroche/httrack's file of the same name, with the github.repository == guard repointed and its header comment rewritten. That comment claimed CI validates every pin dependabot bumps, which is not true here. docker/login-action, docker/build-push-action and actions/download-artifact run in no PR-triggered workflow at all.

Only github-actions is enabled. A Gradle bump moves what ships in the APK. MirrorServerTest drives nanohttpd over a real socket under the required checks. No androidTest source set exists, so nothing exercises Custom Tabs or the app on a device. A submodule bump moves the engine, which needs the versionName realignment and the Android.mk source-list check of a release round. r0adkll/upload-google-play is ignored for the same reason: no PR runs play-publish.yml, so nothing validates that bump before it reaches the Play upload path. Dependabot security updates are disabled on this repo, so no advisory-driven PR opens today.

The guard tests github.event.pull_request.user.login and the head repo, not github.actor. github.actor is the pusher, so a dependabot push onto a fork PR can satisfy it. The concurrency key is the PR number. pull_request_target reports the base branch as github.ref, so one shared group lets any later PR cancel an in-flight arming run.

android.yml now warns off a job-level if: on the two required jobs. A skipped check run counts as success, so an if: there would let auto-merge land on a build that never ran.

xroche and others added 5 commits September 1, 2026 14:01
Nothing bumped the seven workflows' action pins, so they only moved when
someone noticed. Dependabot opens a weekly PR per pin, and the two required
checks stand between it and master before auto-merge takes it.

Only github-actions is enabled. Bumping the engine pin or a runtime Gradle
dependency needs a device run, and no CI leg does one, so those stay manual.
r0adkll/upload-google-play is ignored for the same reason: no PR runs
play-publish.yml, so no check would validate the bump.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Xavier Roche <roche@httrack.com>
GitHub counts a skipped check run as success for a required context, and
neither required job can skip today. Once auto-merge arms unattended, adding
a job-level if: to either would satisfy both contexts without building.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Xavier Roche <roche@httrack.com>
The header came verbatim from xroche/httrack, where every pinned action also
appears in a workflow that runs on a pull request under a required context. Here
docker/build-push-action, docker/login-action and actions/download-artifact
appear only in workflows no PR runs, so the inherited claim was false.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Xavier Roche <roche@httrack.com>
The example named the release and docker workflows, but those also use
actions/checkout and actions/upload-artifact, which native and assemble do run.
actions/download-artifact is only in play-publish.yml, so it is a true example.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Xavier Roche <roche@httrack.com>
github.actor is the event sender. On a synchronize that is whoever pushed, so a
fork-side Dependabot push onto an attacker's PR satisfies the old guard, and
GitHub's own examples use pull_request.user.login for this reason. The head-repo
clause is what cannot be forged, since Dependabot pushes branches into the repo
itself and never opens a PR from a fork.

pull_request_target also reports the base branch as github.ref, so the old
concurrency key put every PR in one group, where cancel-in-progress let any
later PR event cancel an in-flight arming run.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Xavier Roche <roche@httrack.com>
@xroche
xroche merged commit 7756c67 into master Sep 1, 2026
6 checks passed
@xroche
xroche deleted the dependabot-actions branch September 1, 2026 13:42
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