关于企业的 GitHub Actions
GitHub Actions 是一种持续集成和持续交付 (CI/CD) 平台,可用于自动执行生成、测试和部署管道。 借助 GitHub Actions,企业可以自动执行、自定义和执行软件开发工作流,例如测试和部署。 有关详细信息,请参阅“[AUTOTITLE](/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/about-github-actions-for-enterprises)”。
在将 GitHub Actions 引入大型企业之前,首先需要计划采用策略,并决定企业将如何使用 GitHub Actions 来最佳支持企业的独特需求。
管理和符合性
应创建一个计划来管理企业使用 GitHub Actions 并履行合规性义务。
确定允许开发人员使用哪些操作 和可重用工作流 。 首先,决定是否允许非由 GitHub 创建的第三方操作和可重用工作流。 可以配置允许在存储库、组织和企业级别运行的操作和可重用工作流,并且可以选择仅允许由GitHub创建的操作。 如果确实允许第三方操作和可重用工作流,则可以将允许的操作限制为由已验证的创建者创建的操作或特定操作和可重用工作流的列表。
有关详细信息,请参阅“管理存储库的GitHub Actions设置”、“禁用或限制组织的 GitHub Actions”和“在企业中强制实施GitHub Actions策略”。
考虑将 OpenID Connect (OIDC) 与可重用的工作流程相结合,以在存储库、组织或企业中实施一致的部署。 为此,可以基于可重用工作流程在云角色上定义信任条件。 有关详细信息,请参阅“将 OpenID Connect 与可重用的工作流程结合使用”。
您可以在企业的审核日志中访问有关GitHub Actions相关活动的信息。 如果业务需求要求保留此信息的时间超过审核日志数据的保留期限,请规划如何在GitHub之外导出并存储此数据。 有关详细信息,请参阅 企业审计日志活动的导出 和 流式处理企业审核日志。
可以通过管理自定义组织角色来访问 GitHub Actions CI/CD 管道中的设置,从而实践最小权限原则。 有关自定义组织角色的详细信息,请参阅 [AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles)。
安全性
应该为 GitHub Actions 规划安全强化方法。
加强单个工作流程和存储库的安全性
制定计划,为使用 GitHub Actions 企业中的功能的人员实施良好的安全做法。 有关这些做法的详细信息,请参阅“安全使用指南”。
您还可以鼓励重用已评估过安全性的工作流程。 有关详细信息,请参阅“内包”。
保护对机密和部署资源的访问
您应该计划将要存储机密的位置。 我们建议将机密存储在 GitHub,但你可以选择将机密存储在云提供商中。
您可以在 GitHub 的存储库或组织级别存储机密。 存储库级别的机密可限于某些环境中的工作流程,例如生产或测试。 有关详细信息,请参阅“在 GitHub Actions 中使用机密”。
应考虑为敏感环境添加手动审批保护,以便必须先批准工作流,然后才可访问环境的机密。 有关详细信息,请参阅“管理部署环境”。
第三方操作的安全注意事项
从第三方存储库获取 GitHub 上的操作存在重大风险。 如果允许任何第三方操作,则应创建内部准则,鼓励团队遵循最佳做法,例如将操作固定到完整提交 SHA。 有关详细信息,请参阅“安全使用指南”。
使用GitHub托管的运行程序建立专用网络
可在 Azure Vnet 中使用 GitHub 托管的运行器。 这样就将 GitHub 托管基础结构用于 CI/CD,同时取得对运行器网络策略的完全控制。 有关 Azure VNET 的详细信息,请参阅 Azure 文档中的[什么是 Azure 虚拟网络?](https://learn.microsoft.com/en-us/azure/virtual-network/virtual-networks-overview)。 有关详细信息,请参阅 [AUTOTITLE](/admin/configuration/configuring-private-networking-for-hosted-compute-products/about-azure-private-networking-for-github-hosted-runners-in-your-enterprise)。
内部开源
考虑企业如何利用GitHub Actions的功能来促进内部开源式自动化。 内部服务是将open source方法的优势纳入内部软件开发周期的一种方法。 有关详细信息,请参阅资源中的GitHub。
若要在不公开发布操作的情况下在整个企业中共享操作,可以将操作存储在内部存储库中,然后将存储库配置为允许访问同一组织或企业中任何组织拥有的其他存储库中的 GitHub Actions 工作流。 有关详细信息,请参阅“与企业共享操作和工作流”。
借助可重用的工作流程,团队可以从另一个工作流程调用工作流程,从而避免完全重复。 可重用的工作流程通过帮助团队使用设计良好且经过测试的工作流程来促进最佳实践。 有关详细信息,请参阅“重用工作流”。
若要为开发人员构建新工作流提供起点,可以使用工作流模板。 这不仅为开发人员节省了时间,而且促进了整个企业的一致性和最佳实践。 有关详细信息,请参阅“为组织创建工作流模板”。
管理资源
应计划如何管理使用 GitHub Actions所需的资源。
运行器
GitHub Actions 工作流需要运行器。 可以选择使用 GitHub 托管的运行器或自托管运行器。
GitHub 负责管理由 GitHub 托管的运行器的维护和升级。 有关详细信息,请参阅“[AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners)”。
要管理你自己的运行器计算机资源、配置或地理位置,请使用自托管运行器。 有关详细信息,请参阅“自托管运行程序”。
如果你想对运行器的网络策略有更多的控制权,可以使用自托管运行器或 GitHub 托管运行器的专用网络选项。 有关专用网络选项的详细信息,请参阅 使用GitHub托管的运行程序建立专用网络。
如果使用自承载运行程序,则必须决定是否要使用物理计算机、虚拟机或容器。 物理计算机会保留以前剩余的作业,虚拟机也会,除非对每个作业使用新的映像或在每次作业运行后清理计算机。 如果选择容器,则应注意,运行器自动更新将关闭容器,这可能会导致工作流程失败。 您应该通过阻止自动更新或跳过终止容器的命令来为此提出解决方案。
你还必须决定在何处添加每个运行器。 您可以将自托管运行器添加到单个存储库,也可以使运行器可供整个组织或整个企业使用。 在组织或企业级别添加运行器允许共享运行器,这可能会减小运行器基础结构的大小。 您可以使用策略,通过将运行者组分配给特定存储库或组织,在组织和企业级别限制对自托管运行器的访问。 有关详细信息,请参阅 添加自托管的运行器 和 使用组管理对自托管运行程序的访问。 还可以使用策略来阻止人员使用存储库级别的自托管运行器。 有关详细信息,请参阅“在企业中强制实施GitHub Actions策略”。
应考虑使用自动缩放来自动增加或减少可用的自托管运行器的数量。 有关详细信息,请参阅“自托管运行程序参考”。
最后,你应该考虑对自托管运行器进行安全强化。 有关详细信息,请参阅“安全使用指南”。
存储
构件允许您在工作流程完成后,分享工作流程中作业之间的数据并存储数据。 有关详细信息,请参阅 [AUTOTITLE](/actions/using-workflows/storing-workflow-data-as-artifacts)。
GitHub Actions 还有一个缓存系统,可用于缓存依赖项以加快工作流运行速度。 有关详细信息,请参阅“[AUTOTITLE](/actions/using-workflows/caching-dependencies-to-speed-up-workflows)”。
可以使用 GitHub Actions 的策略设置来自定义工作流项目、缓存和日志保留的存储。 有关详细信息,请参阅“在企业中强制实施GitHub Actions策略”。
订阅中会包含一些存储,但额外的存储将影响计费。 您应该为此费用做好计划。 有关详细信息,请参阅“GitHub Actions计费”。
跟踪用法
应考虑制定计划来跟踪企业的使用情况 GitHub Actions,例如工作流的运行频率、这些运行的运行次数和失败次数,以及哪些存储库正在使用哪些工作流。
可以通过计费设置查看企业中每个组织 GitHub Actions 的存储和数据传输使用情况的基本详细信息。 有关详细信息,请参阅“查看按流量计费的产品和许可证的使用情况”。
注意
企业级指标 GitHub Actions 位于 公共预览版,可能会发生变化。
可以在“见解”选项卡下查看企业的使用情况和性能数据。这些指标提供存储库和组织级别的相同 GitHub Actions 数据,但针对整个企业进行聚合。 如果需要更详细的见解,请参阅 查看 GitHub Actions 组织的指标 或 查看 GitHub Actions 存储库的指标。
有关在每个作业或每个工作流级别的更详细的使用情况数据,可以使用 Web 挂钩订阅有关工作流程作业和工作流程运行的信息。 有关详细信息,请参阅“关于 网络钩子”。
制定一个计划,以便贵企业可以将来自这些 Webhook 的信息传输到数据存档系统,同时规划您将如何使团队从您的存档系统获取所需的数据。