GitHub 上的自动化通常涉及多个组件协同工作。 最重要的 GitHub 原生组件包括:
-
**GitHub Actions 工作流**,提供执行自动化逻辑的运行环境。 现用即用,可在单个存储库中工作,但可以扩展它们,以便在存储库之外甚至跨存储库进行自动化。 -
**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 Apps 无法调用每个 API 端点。 请参阅“在企业上安装 GitHub App”。
数据变量.产品.prodname_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 Apps 以访问企业资源并自动化工作流,请参阅 创建企业应用。