GitHub Автоматизация обычно включает несколько компонентов, работающих вместе. Наиболее важными GitHub собственными компонентами являются:
- GitHub Actions рабочие процессы, которые предоставляют среду выполнения для выполнения логики автоматизации. С коробки они работают в одном репозитории, но их можно расширить для автоматизации как внутри, так и вне репозиториев.
- GitHub Apps, у которого нет среды выполнения. Вместо этого они предоставляют идентификацию, права и доставку событий, чтобы ваши автоматизации, будь то внешние сервисы или рабочие процессы, могли аутентифицироваться и работать безопасно.
Большинство корпоративных автоматизации используют GitHub Apps и GitHub Actions вместе. Например, рабочий процесс, выполняющийся в GitHub Actions нем, может использовать GitHub App для получения кратковременного маркера, который позволяет выполнять задачи в репозиториях или организациях.
В этом руководстве объясняется, как GitHub Apps, внешние автоматизации и GitHub Actions дополнять друг друга, а также когда следует использовать каждый из них в вашей организации.
GitHub Apps
Предоставляет GitHub Appудостоверения, разрешения и события веб-перехватчика , необходимые для автоматизации в репозиториях, организациях или организации. GitHub Apps сами по себе не выполняют логику, они позволяют другим системам делать это.
GitHub Apps поддержка корпоративной автоматизации с помощью предложения:
- Детализированные разрешения на соблюдение принципов наименьших привилегий
- Инсталляции с объёмом на уровне предприятия, организации или репозитория
- Кратковременные токены для безопасного доступа
- Отдельные идентичности с полной проверяемостью
- Делегированное администрирование с помощью GitHub App роли руководителя
- Согласованность в масштабах при принадлежащем корпоративной учетной записи
Что включить GitHub Apps ?
GitHub Apps позволяет автоматизации писать в другом месте, например внешние службы или шаги рабочего процесса, выполнять действия с GitHub API в рамках предоставленных разрешений. Рассмотрим пример.
- Получение событий webhook и запуск внешних сервисов
- Включение рабочего процесса вне его стандартного репозитория
- GitHub Интеграция с сторонними системами
- Координация изменений во многих репозиториях
- Эксплуатация долгоживущих ботов или сервисов, отслеживающих активность на корпоративном уровне
GitHub Actions
GitHub Actions предоставляет GitHubвстроенную среду выполнения для выполнения логики автоматизации внутри репозиториев. Рабочие процессы выполняются на локальных запусках и идеально подходят для задач, связанных с изменениями кода или событиями репозитория.
Применение GitHub Actions для:
- CI/CD (сборка, тестирование, развертывание)
- Проверки и валидации pull request
- Задачи по поддержанию на уровне репозитория
- События-ориентированные рабочие процессы, реагирующие на push-запросы, теги или обновления проблем
- Запланированные задания с cron
Использование GitHub ActionsGitHub 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 для достижения надежных масштабируемых рабочих процессов.
Рассмотрим пример.
- Предприятие GitHub App получает веб-перехватчик при создании нового репозитория и отправляет полезные данные веб-перехватчика на сервер, на который выполняется внешняя служба.
- Внешний сервис стандартизирует необходимые настройки и предоставляет ресурсы.
- Служба активирует рабочий GitHub Actions процесс в репозитории.
- Рабочий процесс выполняет CI, развёртывает шаблоны или настраивает сканирование.
Каждый компонент выполняет отдельный уровень автоматизации.
Когда использовать каждый тип автоматизации
Используйте следующее GitHub App :
- Аутентификация или разрешение на работу во многих репозиториях
- Интеграция с внешними системами
- Автоматизации, управляемые вебхуками
- Долгосрочные или корпоративные рабочие процессы
- Аудитируемость и разделение идентичности
Используйте внешние автоматизации , когда это необходимо:
- Логика, которая выполняется непрерывно или вне GitHub
- Интеграция с внутренними системами
Используйте при GitHub Actions необходимости:
- Конвейеры CI/CD
- Автоматизация с областью действия репозитория
- Автоматические проверки, связанные с событиями репозитория
- Выполнение логики с помощью GitHubинфраструктуры runner
Используйте GitHub Apps и GitHub Actions вместе , когда:
- Рабочий процесс должен действовать вне стандартных разрешений репозитория
- Необходимо GitHub App активировать рабочий процесс
- Внешняя логика оркестрирует выполнение внутри репозитория
- Корпоративные политики или рабочие процессы требуют как идентичности, так и среды выполнения
Дальнейшие шаги
Узнайте, как разрабатывать и управлять ими GitHub Apps на корпоративном уровне в Создание приложений GitHub для вашего предприятия.