Reputation: 1983
I want to be able to let an action run on any given branch except master.
I am aware that there is a prebuilt filter
action, but I want the exact opposite.
More like GitLab's except
keyword.
Since this is not inside the official docs, has anyone prepared a decent workaround?
Thank you very much.
Upvotes: 137
Views: 103194
Reputation: 1960
There is now a branches-ignore
option:
on:
push:
branches-ignore:
- master
Note that you cannot use branches-ignore
and branches
in the same workflow.
Upvotes: 175
Reputation: 4330
Update: There is a newer filter described in Samy's answer that provides a more succinct way of achieving this.
The documentation has been updated with more information now:
When you specify a
branches
ortags
filter, the workflow only runs if at least one pattern matches. Any changes to branches or tags that don't match a defined pattern will not trigger a workflow. The order that you define patterns matters:
So in order to exclude master
, you need to ensure that a pattern matching everything is included first:
on:
push:
branches:
- '*' # matches every branch that doesn't contain a '/'
- '*/*' # matches every branch containing a single '/'
- '**' # matches every branch
- '!master' # excludes master
Upvotes: 232