#continuous-integration #glob #github-actions
#непрерывная интеграция #глоб #github-действия
Вопрос:
Легко запустить действие GitHub для любого запроса push или pull:
# Triggers the workflow on push or pull request events
on: [push, pull_request]
Но что, если я хочу ограничить выполнение запросов на извлечение, открытых для определенных базовых ссылок, разрешив при этом выполнение во всех ветвях?
Я думал об этом:
on:
push:
branches:
- "*"
pull_request:
branches:
- "develop"
- "staging"
Но это не сработало. Я добавил это действие в ветку функций, и GitHub его не обнаружил.
Что-то не так с моим глобусом? Почему ‘*’ не работает?
Ответ №1:
Я нашел шпаргалку с шаблоном фильтра после публикации вопроса:
‘*’: соответствует всем именам ветвей и тегов, которые не содержат косой черты (/). Символ * является специальным символом в YAML. Когда вы начинаете шаблон> с *, вы должны использовать кавычки.
‘**’: соответствует всем именам ветвей и тегов. Это поведение по умолчанию, когда вы не используете фильтр ветвей или тегов.
Случилось так, что ветка, которую я тестировал, содержала косую черту (/), поэтому одной звездочки (*) было недостаточно. Я переключился на две звездочки (**), и теперь это работает.
Комментарии:
1. Вы также можете
branches
полностью удалить объект, чтобы запускать события для любой ветки.2. Файл yml не компилируется при удалении
branches
, потомуon
что это сопоставление.3. Разве вам также не нужно объединять . Файл YML для ВСЕХ ветвей, чтобы триггеры действительно работали для каждой именованной ветви?
4. @PaulRazvanBerg Попробуйте использовать
on: {}
Ответ №2:
Полное снятие ограничений на отправку означает запуск всех из них (коммитов, а также тегов):
on:
push:
pull_request:
branches:
- develop
- staging
jobs:
print:
runs-on: ubuntu-latest
steps:
- run: echo "Running!"
Комментарии:
1. Примечание: при отбрасывании
branches
рабочий процесс будет выполняться и для перемещений тегов, а не только для перемещений ветвей.2. @Suma Хороший момент, добавил замечание, чтобы указать на это.