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
or tags
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:
- A matching negative pattern after a positive match will exclude the
ref again.
- A matching positive pattern after a negative match will
include the ref again.
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
on: push: branches: - '!master'
help.github.com/en/articles/… But I haven't been able to get similar negated patterns to work. – Balkhash