Обложка канала

.NET Разработчик

Опытный разработчик не так давно зашёл в .Net и поставил цель получить сертификат Microsoft. Свой ежедневный прогресс он описывает на канале .Net Разработчик. Заметки об изученном материале, советы по повышению производительности и поддержке мотивации, ин

.NET Разработчик

3 года назад
Открыть в
День 1626. #ЗаметкиНаПолях Отменяем Рабочий Процесс GitHub при Новом Коммите в Ветке Когда вы отправляете несколько коммитов в ветку, вы можете отменить текущие рабочие процессы и запустить только последний рабочий процесс. Это может быть полезно для снижения затрат, если вы используете платные сервисы. А в бесплатном варианте GitHub ограничивает количество одновременных заданий. Таким образом, это также поможет высвобождать ресурсы для других рабочих процессов. Чтобы автоматически отменять незавершённые запуски, вы можете использовать функцию параллелизма (concurrency). Задайте имя группы рабочих процессов, затем вы можете настроить группу на отмену выполняемых запусков при запуске нового рабочего процесса. Вот пример:
name: sample
on:
  push:
    branches:
      - '*'
  pull_request:
    branches:
      - '*'
concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

Здесь: - github.workflow – имя рабочего процесса, - github.event.pull_request.number || github.ref – номер пул-реквеста или имя ветки, если это не пул-реквест, - cancel-in-progress отменяет рабочий процесс, если новый рабочий процесс с тем же именем запущен в той же группе. Подробнее о выражениях в GitHub Actions Подробнее о переменных в GitHub Actions Если вы хотите отменять незавершённые запуски только для веток, отличных от main, вы можете использовать следующую конфигурацию:
concurrency:
  group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/main' && github.run_id || github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

Здесь: - используем github.run_id ветки main, - используем github.event.pull_request.number пул-реквестов, т.к. номер уникален для каждого пул-реквеста, - используем github.ref на других ветках, т.к. он уникален для каждой ветки. Вместо жесткого кодирования ветки main вы можете использовать github.ref_protected, чтобы избежать отмены заданий в защищённых ветках. Источник: https://www.meziantou.net/how-to-cancel-github-workflows-when-pushing-new-commits-on-a-branch.htm