eclipse-ecal/Cherry Pick To

Cherry-pick the commits of a push onto every branch named by the merged pull request's cherry-pick labels, and open one pull request per target branch.

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Activelast commit Jul 9, 2026
License
MIT

Pinned Snippet

workflow.ymlSHA-pinned
uses: eclipse-ecal/cherry-pick-to@cd9bc0b1df79fe36092a59b7b776fc8782fa6642 # no releases — HEAD as of 2026-07-11

tags can be moved; commit SHAs can't. why a SHA?

namedescriptionrequireddefault
tokenToken used for checkout, pushing, and the GitHub CLI calls (finding the source PR, reading its labels, creating labels and the cherry-pick PRs). Defaults to the workflow's GITHUB_TOKEN, which works out of the box (given a permissions block with contents/pull-requests/issues write) and is great for trying the action out — but pull requests created with it cannot trigger other workflows, so CI will not run on the cherry-pick PRs. Pass a fine-grained PAT for production use.no${{ github.token }}
label-prefixLabels of the form "<label-prefix><branch>" on the source pull request select the branches to cherry-pick to.nocherry-pick-to-
allowed-target-branchesOptional space-separated list of glob patterns (e.g. "support/* release/*") restricting which branches may be targeted via labels. Empty (the default) allows any branch. Use this to bound what people with labeling permissions can trigger.no""
success-labelLabel attached to a created PR when the cherry-pick succeeded.noAuto cherry-pick success ✅
failure-labelLabel attached to a created PR when the cherry-pick failed.noAuto cherry-pick failure ⚠️
use-draft-prCreate the PR as a draft when the cherry-pick failed. Off by default because some repositories (e.g. private repos on free plans) do not support draft pull requests, which would make the PR creation fail.nofalse
branch-prefixPrefix for the created branches. Each branch is named "<branch-prefix>/<short-sha>/<target-branch>".nocherry-pick
before-commitStart (exclusive) of the commit range to cherry-pick as a full 40-char SHA. Defaults to github.event.before of the push event.no""
after-commitEnd (inclusive) of the commit range to cherry-pick as a full 40-char SHA. Defaults to github.event.after of the push event.no""
git-user-nameGit user.name for the cherry-picked commits. Defaults to the pusher of the triggering push event.no""
git-user-emailGit user.email for the cherry-picked commits. Defaults to the pusher of the triggering push event.no""
checkoutWhether the action checks out the repository itself (with full history and the given token). Set to "false" to manage the checkout in the calling workflow; note that an expired token then fails your checkout step before this action can report a meaningful error — use the check-token sub-action of this repository before your checkout step in that case.notrue
token-expiry-warning-daysEmit a workflow warning when the token expires within this many days.no14
token-expiry-warning-in-pr-bodyAlso append the token expiry warning to the body of every pull request this action creates while the token expires within token-expiry-warning-days days. Disabled by default. Has no effect with the default GITHUB_TOKEN, which is ephemeral by design and therefore never expiry-checked.nofalse
error-hintExtra text appended to token error and warning messages, e.g. a link to your token renewal runbook or helpdesk ticket.no""
namedescription
performed"true" if at least one cherry-pick pull request was created.
pr-urlsNewline-separated URLs of the created cherry-pick pull requests. Empty if none.
resultsJSON array with one entry per discovered target branch: [{"target": "...", "outcome": "success|conflict|skipped-...|error", "pr-url": "..."}]. Empty array if no cherry-pick label matched.
source-pr-numberNumber of the merged pull request the pushed commits belong to. Empty if none was found.
token-expiration-dateExpiration date of the token. Empty if the token does not expire.