GitHub 上的自动化通常涉及多个组件协同工作。 最重要的 GitHub 原生组件包括:
-
**GitHub Actions 工作流**,提供用于执行自动化逻辑的运行时。 现用即用,可在单个存储库中工作,但可以扩展它们,以便在存储库之外甚至跨存储库进行自动化。 -
**GitHub Apps**,没有运行时。 相反,它们提供标识、权限和事件传送,以便您的自动化(无论是外部服务还是工作流)能够安全地进行身份验证和操作。
大多数企业自动化结合使用 GitHub Apps 和 GitHub Actions。 例如,在 GitHub Actions 中运行的工作流可能使用 GitHub App 获取短期令牌,使其能够跨存储库或组织执行任务。
本指南介绍了 GitHub Apps、外部自动化工具以及 GitHub Actions 如何相辅相成,以及在您的企业中何时使用每个工具。
数据变量.product.prodname_github_apps %}
GitHub App 提供在存储库、组织或你的企业上或跨这些对象进行自动化所需的身份、权限和 Webhook 事件。 GitHub Apps 本身不执行逻辑,它们使其他系统能够执行。
GitHub Apps 通过提供产品支持企业自动化:
-
**精细权限** 以遵循最小特权原则 - 企业、组织或存储库级别的限定安装
- 用于安全访问的临时令牌
- 具有完全可审核性的独特身份
-
通过 GitHub App 管理员角色进行**委托管理** -
由企业帐户拥有时的**大规模一致性**
GitHub Apps 能实现什么功能?
GitHub Apps 允许你在其他地方编写的自动化(如外部服务或工作流步骤)在你授予的权限内对 GitHub API 执行操作。 例如:
- 接收 Webhook 事件并触发外部服务
- 使工作流能够在默认存储库范围之外执行
- 将 GitHub 与第三方系统集成
- 跨多个存储库协调更改
- 运行长期监测企业级活动的机器人或服务
GitHub Actions
GitHub Actions 提供 GitHub 内置的运行时,用于在存储库内执行自动化逻辑。 工作流在 自承载运行程序上运行,非常适合与代码更改或存储库事件相关的任务。
将 GitHub Actions 用于:
- CI/CD(构建、测试、部署)
- 拉取请求检查和验证
- 存储库级维护任务
- 响应推送、标记或问题更新的事件驱动工作流
- 使用 cron 的计划作业
GitHub Actions 如何使用 GitHub Apps
GitHub Actions 和 GitHub Apps 深度连接:
- 工作流权限直接映射到 GitHub App 权限。
- 工作流可以使用
actions/create-github-app-token作为特定 GitHub App 进行身份验证。 - GitHub Apps 可以通过
repository_dispatch等事件触发工作流。
外部自动化和服务
外部自动化在你自己的基础结构上的 GitHub 外部运行。 这些服务通常:
- 从 GitHub App 接收 Webhook 事件
- 使用 GitHub App 请求短期安装令牌
- 执行长时间运行或跨企业逻辑
- 与外部业务系统集成
示例包括:
- 组织范围的配置管理
- 策略实施服务
- 多存储库代码或元数据同步
- 合规性报告生成
- 跨组织问题或拉取请求管理
所有这些都依赖 GitHub Apps 进行身份验证、身份和事件 - 而非执行。
这些组件如何协同工作
大多数企业自动化结合使用 GitHub Apps、外部服务和 GitHub Actions 以实现稳健、可扩展的工作流。
例如:
- 创建新存储库时,企业 GitHub App 会接收 Webhook,并将 Webhook 负载发送到运行外部服务的服务器。
- 外部服务标准化所需的设置和预配资源。
- 该服务在存储库中触发 GitHub Actions 工作流。
- 工作流执行 CI、部署模板或配置扫描。
每个组件处理不同的自动化层。
何时使用每种类型的自动化
当您需要使用 GitHub App 时:
- 身份验证或跨多个存储库执行操作的权限
- 与外部系统的集成
- Webhook 驱动的自动化流程
- 长周期或企业级的工作流
- 可审核性和标识分离
当你需要 外部自动化 时:
- 连续运行或在 GitHub 外部运行的逻辑
- 与内部系统的集成
在需要以下内容时使用 GitHub Actions:
- CI/CD 管道
- 存储库范围的自动化
- 与存储库事件关联的自动检查
- 使用 GitHub 的运行器基础设施执行逻辑
在以下情况下结合使用 GitHub Apps 和 GitHub Actions:
- 工作流必须超出存储库的默认权限
- GitHub App 需要触发一个工作流
- 外部逻辑协调存储库内执行
- 企业范围的策略或工作流需要标识和运行时
后续步骤
了解如何在 为企业创建GitHub应用 中设计和管理企业级 GitHub Apps。