Действия GitHub: как настроить таргетинг на все филиалы, кроме мастера?

Я хочу иметь возможность запускать действие в любой ветви, кроме master. Я знаю, что есть встроенный filter действие, но я хочу с точностью до наоборот.

Больше похоже на GitLab's except ключевое слово. Так как это не входит в официальные документы, кто-нибудь подготовил достойный обходной путь?

Большое спасибо.

1 ответ

Обновление: в ответе Сэми описан более новый фильтр , который обеспечивает более лаконичный способ достижения этой цели.


В документацию добавлена ​​дополнительная информация:

Когда вы указываете branches или tagsфильтр, рабочий процесс запускается только при совпадении хотя бы одного шаблона. Любые изменения ветвей или тегов, которые не соответствуют определенному шаблону, не вызовут рабочий процесс. Порядок, в котором вы определяете шаблоны, имеет значение:

  • Соответствующий отрицательный шаблон после положительного совпадения снова исключает ссылку.
  • Соответствующий положительный шаблон после отрицательного совпадения снова будет включать ссылку.

Итак, чтобы исключить master, вам необходимо убедиться, что сначала включен шаблон, соответствующий всему:

on:
  push:
    branches:    
      - '*'         # matches every branch that doesn't contain a '/'
      - '*/*'       # matches every branch containing a single '/'
      - '**'        # matches every branch
      - '!master'   # excludes master

Сейчас есть branches-ignore вариант:

on:
  push:
    branches-ignore:
      - master

https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions

Кажется, что это можно использовать: https://github.com/actions/bin/tree/master/filter

Другие вопросы по тегам