Skip to main content

Автоматизации в вашем предприятии

Узнайте, как GitHub Apps, внешние сервисы и GitHub Actions работают вместе для автоматизации процессов в вашем предприятии.

Автоматизация GitHub обычно включает совместную работу нескольких компонентов. Самые важные нативные компоненты GitHub включают:

  •         **GitHub Actions workflows**, которые обеспечивают среду выполнения автоматизационной логики. С коробки они работают в одном репозитории, но их можно расширить для автоматизации как внутри, так и вне репозиториев.
    
  •         **GitHub Apps**, которые не имеют времени выполнения. Вместо этого они предоставляют идентификацию, права и доставку событий, чтобы ваши автоматизации, будь то внешние сервисы или рабочие процессы, могли аутентифицироваться и работать безопасно.
    

Большинство корпоративных автоматизаций используют GitHub Apps и GitHub Actions вместе. Например, рабочий процесс, работающий в GitHub Actions, может использовать GitHub App для получения кратковременного токена, позволяющего выполнять задачи между репозиториями или организациями.

В этом руководстве объясняется, как GitHub Apps, внешние автоматизации и GitHub Actions дополняют друг друга, а также когда использовать их в вашем предприятии.

GitHub Apps

GitHub App предоставляет идентификацию, права и события webhook, необходимые для автоматизации на репозиториях, организациях или вашем предприятии. GitHub Apps сами по себе не выполняют логику, они позволяют другим системам это делать.

GitHub Apps поддерживает корпоративную автоматизацию, предлагая:

  •         **Детализированные разрешения** на соблюдение принципов наименьших привилегий
    
  •         **Инсталляции с объёмом** на уровне предприятия, организации или репозитория
    
  •         **Кратковременные токены** для безопасного доступа
    
  •         **Отдельные идентичности** с полной проверяемостью
    
  •         **Делегированное администрирование** через роль менеджера GitHub App
    
  •         **Согласованность в масштабах** при принадлежащем корпоративной учетной записи
    

Что позволяет GitHub Apps?

GitHub Apps позволяет автоматизациям, которые вы пишете в других местах — например, внешних сервисах или этапах рабочего процесса — работать с GitHub API в пределах предоставленных вами прав. Рассмотрим пример.

  • Получение событий webhook и запуск внешних сервисов
  • Включение рабочего процесса вне его стандартного репозитория
  • Интеграция GitHub с сторонними системами
  • Координация изменений во многих репозиториях
  • Эксплуатация долгоживущих ботов или сервисов, отслеживающих активность на корпоративном уровне

GitHub Actions

GitHub Actions предоставляет GitHub's встроенное runtime для выполнения автоматизационной логики внутри репозиториев. Рабочие процессы работают на hosted или самостоятельных раннерах и идеально подходят для задач, связанных с изменениями кода или событиями репозитория.

Используйте GitHub Actions для:

  • CI/CD (сборка, тестирование, развертывание)
  • Проверки и валидации pull request
  • Задачи по поддержанию на уровне репозитория
  • События-ориентированные рабочие процессы, реагирующие на push-запросы, теги или обновления проблем
  • Запланированные задания с cron

Как GitHub Actions использует GitHub Apps

GitHub Actions и GitHub Apps тесно связаны:

  • Разрешения рабочих процессов напрямую соотносятся с разрешениями GitHub App.
  • Рабочие процессы могут аутентифицироваться как определённый GitHub App с использованием actions/create-github-app-token.
  • GitHub Appsданных } может запускать рабочие процессы через события, такие как repository_dispatch.

Внешние автоматизации и сервисы

Внешние автоматизации работают вне GitHub на вашей собственной инфраструктуре. Обычно такие услуги:

  • Получайте события вебхука от GitHub App
  • Используйте GitHub App для запроса кратковременных токенов установки
  • Выполнение долгосрочной или межкорпоративной логики
  • Интеграция с внешними бизнес-системами

Вот некоторые примеры.

  • Управление конфигурациями на уровне всей организации
  • Службы по исполнению политики
  • Мультирепозиторий кода или синхронизация метаданных
  • Генерация отчетов о соблюдении требований
  • Межорганизационное управление вопросами или pull request-запросами

Все они зависят от GitHub Apps для аутентификации, идентификации и событий — а не для выполнения.

Как эти компоненты работают вместе

Большинство корпоративных автоматизаций использует комбинацию GitHub Apps, внешних сервисов и GitHub Actions для достижения надёжных и масштабируемых рабочих процессов.

Рассмотрим пример.

  1. Предприятие GitHub App получает webhook при создании нового репозитория и отправляет полезную нагрузку webhook на сервер, где работает внешний сервис.
  2. Внешний сервис стандартизирует необходимые настройки и предоставляет ресурсы.
  3. Сервис запускает рабочий процесс GitHub Actions в репозитории.
  4. Рабочий процесс выполняет CI, развёртывает шаблоны или настраивает сканирование.

Каждый компонент выполняет отдельный уровень автоматизации.

Когда использовать каждый тип автоматизации

Используйте GitHub App , когда вам нужно:

  • Аутентификация или разрешение на работу во многих репозиториях
  • Интеграция с внешними системами
  • Автоматизации, управляемые вебхуками
  • Долгосрочные или корпоративные рабочие процессы
  • Аудитируемость и разделение идентичности

Используйте внешние автоматизации , когда это необходимо:

  • Логика, которая работает непрерывно или вне GitHub
  • Интеграция с внутренними системами

Используйте GitHub Actions , когда нужно:

  • Конвейеры CI/CD
  • Repository-scoped automation
  • Автоматические проверки, связанные с событиями репозитория
  • Выполнение логики с использованием инфраструктуры runner GitHub

Используйте GitHub Apps и GitHub Actions вместе , когда:

  • Рабочий процесс должен действовать вне стандартных разрешений репозитория
  • GitHub App должен запускать рабочий процесс
  • Внешняя логика оркестрирует выполнение внутри репозитория
  • Корпоративные политики или рабочие процессы требуют как идентичности, так и среды выполнения

Дальнейшие шаги

Узнайте, как проектировать и управлять GitHub Apps на корпоративном уровне в AUTOTITLE.