Выбор ответа Middle CI/CD обновлено
Отменить устаревший прогон
Вопрос
Разработчик пушит в PR три коммита подряд, и в GitHub Actions копятся три прогона пайплайна. Нужен только последний. Как это настроить?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: concurrency с группой по ветке и cancel-in-progress: true. concurrency объединяет прогоны в группу (например, ${{ github.workflow }}-${{ github.ref }}), и при cancel-in-progress: true новый прогон отменяет предыдущий в той же группе.
Варианты ответа
- Это невозможно, каждый push всегда запускает отдельный прогон до конца
concurrencyс группой по ветке иcancel-in-progress: trueправильный ответ- Добавить
if: always()к каждой джобе workflow - Поставить
timeout-minutes: 1на старые прогоны
Разбор
concurrency объединяет прогоны в группу (например, ${{ github.workflow }}-${{ github.ref }}), и при cancel-in-progress: true новый прогон отменяет предыдущий в той же группе. Экономит минуты раннеров и время ожидания. Для деплоя в прод отмену обычно не включают, чтобы не прервать выкатку на середине.
- Возможность есть, это стандартная настройка.
if: always()заставляет шаг выполняться даже после ошибки, это противоположная задача.- Таймаут в минуту сломает нормальные прогоны.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.