关于环境
环境用于描述一般的部署目标,例如production
、staging
或development
。当 GitHub Actions 工作流部署到环境时,环境将显示在代码库的主页上。有关查看对环境的部署的更多信息,请参阅“查看部署历史记录”。
您可以使用保护规则和密钥配置环境。当工作流作业引用环境时,在环境的所有保护规则都通过之前,作业不会启动。作业也无法访问在环境中定义的密钥,除非所有部署保护规则都通过。
您可以选择绕过环境的保护规则,并强制所有引用该环境的挂起作业继续执行。有关更多信息,请参阅“查看部署”。
注意
使用 GitHub Free 计划的用户只能为公共代码库配置环境。如果您将代码库从公共代码库转换为私有代码库,则任何已配置的保护规则或环境密钥都将被忽略,并且您将无法配置任何环境。如果您将代码库转换回公共代码库,则可以访问任何先前配置的保护规则和环境密钥。
使用 GitHub Team 的组织和使用 GitHub Pro 的用户可以为私有代码库配置环境。有关更多信息,请参阅“GitHub 的计划”。
部署保护规则
部署保护规则要求在引用环境的作业继续执行之前满足特定条件。您可以使用部署保护规则来要求手动批准、延迟作业或将环境限制为特定分支。您还可以创建和实现由 GitHub Apps 提供支持的自定义保护规则,以使用第三方系统来控制对在 GitHub 上配置的环境的部署。
第三方系统可以是可观察性系统、变更管理系统、代码质量系统或您用于在安全地将部署推出到环境之前评估准备情况的其他手动配置。
注意
可以在代码库上安装任意数量的基于 GitHub Apps 的部署保护规则。但是,在任何环境上同时最多只能启用 6 个部署保护规则。
所需审阅者
使用所需审阅者来要求特定人员或团队批准引用环境的工作流作业。您可以列出最多六个用户或团队作为审阅者。审阅者必须至少对代码库具有读取权限。只需要一个所需审阅者批准作业即可继续执行。
您还可以选择阻止对受保护环境的自我审阅。如果您启用此设置,即使发起部署的用户是所需审阅者,也无法批准部署作业。这确保了对受保护环境的部署始终由不止一个人审阅。
有关审阅引用具有所需审阅者的环境的作业的更多信息,请参阅“查看部署”。
注意
如果您使用的是 GitHub Free、GitHub Pro 或 GitHub Team 计划,则所需审阅者仅适用于公共代码库。
等待计时器
使用等待计时器可在作业最初触发后延迟作业特定时间。时间(以分钟为单位)必须是 1 到 43,200(30 天)之间的整数。
注意
如果您使用的是 GitHub Free、GitHub Pro 或 GitHub Team 计划,则等待计时器仅适用于公共代码库。
部署分支和标签
使用部署分支和标签来限制哪些分支和标签可以部署到环境。以下是环境的部署分支和标签选项
-
无限制:对哪些分支或标签可以部署到环境没有限制。
-
仅受保护分支:只有启用了分支保护规则的分支才能部署到环境。如果未为代码库中的任何分支定义任何分支保护规则,则所有分支都可以部署。有关分支保护规则的更多信息,请参阅“关于受保护分支”。
注意
由与受保护分支同名的标签触发的部署工作流运行以及与受保护分支名称匹配的分支的派生代码库无法部署到环境。
-
选定的分支和标签:只有与您指定的名称模式匹配的分支和标签才能部署到环境。
如果您指定
releases/*
作为部署分支或标签规则,则只有名称以releases/
开头的分支或标签才能部署到环境。(通配符将不匹配/
。要匹配以release/
开头并包含额外单个斜杠的分支或标签,请使用release/*/*
。)如果您添加main
作为分支规则,名为main
的分支也可以部署到环境。有关部署分支语法选项的更多信息,请参阅RubyFile.fnmatch
文档。注意
必须分别为分支或标签配置名称模式。
注意
部署分支和标签可用于所有公共代码库。对于 GitHub Pro 或 GitHub Team 计划的用户,部署分支和标签也可用于私有代码库。
允许管理员绕过已配置的保护规则
默认情况下,管理员可以绕过保护规则并将部署强制到特定环境。有关更多信息,请参阅“查看部署”。
或者,您可以将环境配置为不允许绕过对环境的所有部署的保护规则。
注意
对于 GitHub Free、GitHub Pro 和 GitHub Team 计划的用户,仅公共代码库才可以使用允许管理员绕过保护规则的功能。
自定义部署保护规则
注意
自定义部署保护规则目前处于公开预览阶段,可能会发生更改。
您可以启用您自己的自定义保护规则,以使用第三方服务来控制部署。例如,您可以使用 Datadog、Honeycomb 和 ServiceNow 等服务为对 GitHub 的部署提供自动批准。有关更多信息,请参阅“创建自定义部署保护规则”。
在代码库上创建和安装自定义部署保护规则后,您可以为代码库中的任何环境启用自定义部署保护规则。有关配置和启用自定义部署保护规则的更多信息,请参阅“配置自定义部署保护规则”。
注意
自定义部署保护规则仅适用于 GitHub Free、GitHub Pro 和 GitHub Team 计划用户的公共代码库。
环境密钥
存储在环境中的密钥仅可用于引用该环境的工作流作业。如果环境需要批准,则作业在其中一个所需审阅者批准之前无法访问环境密钥。有关密钥的更多信息,请参阅“在 GitHub Actions 中使用密钥”。
注意
- 即使工作流使用环境,在自托管运行器上运行的工作流也不会在隔离容器中运行。环境密钥应与代码库和组织密钥具有相同的安全级别。有关更多信息,请参阅“GitHub Actions 的安全加固”。
- 如果您使用的是 GitHub Free,则环境密钥仅在公共代码库中可用。要访问私有或内部代码库中的环境密钥,您必须使用 GitHub Pro、GitHub Team 或 GitHub Enterprise。有关切换计划的更多信息,请参阅“升级您的帐户计划”。
环境变量
存储在环境中的变量仅可用于引用该环境的工作流作业。这些变量只能使用vars
上下文访问。有关更多信息,请参阅“在变量中存储信息”。
注意
环境变量可用于所有公共代码库。对于 GitHub Pro 或 GitHub Team 计划的用户,环境变量也可用于私有代码库。
创建环境
要配置个人帐户代码库中的环境,您必须是代码库所有者。要配置组织代码库中的环境,您必须具有admin
访问权限。
注意
- 在私有代码库中创建环境的功能适用于使用 GitHub Team 的组织和使用 GitHub Pro 的用户。
- 某些环境功能对私有仓库的可用性有限或没有可用性。如果您无法访问下面说明中的某个功能,请参阅相关步骤中链接的文档以获取可用性信息。
-
在 GitHub 上,导航到仓库的主页。
-
在您的仓库名称下,单击 **设置**。如果您看不到“设置”选项卡,请选择****下拉菜单,然后单击**设置**。
-
在左侧边栏中,单击**环境**。
-
单击**新建环境**。
-
输入环境名称,然后单击**配置环境**。环境名称不区分大小写。环境名称不能超过 255 个字符,并且在仓库中必须唯一。
-
可选:指定必须批准使用此环境的工作流作业的人员或团队。更多信息,请参见“必需的评审者”。
- 选择**必需的评审者**。
- 最多输入 6 个人员或团队。只需要一个必需的评审者批准作业即可继续。
- 可选:为防止用户批准他们触发的流程运行,请选择**防止自我审查**。
- 单击**保存保护规则**。
-
可选:指定允许使用此环境的工作流作业继续执行之前的等待时间。更多信息,请参见“等待计时器”。
- 选择**等待计时器**。
- 输入要等待的分钟数。
- 单击**保存保护规则**。
-
可选:不允许绕过已配置的保护规则。更多信息,请参见“允许管理员绕过已配置的保护规则”。
- 取消选择**允许管理员绕过已配置的保护规则**。
- 单击**保存保护规则**。
-
可选:启用使用 GitHub Apps 创建的任何自定义部署保护规则。更多信息,请参见“自定义部署保护规则”。
- 选择要启用的自定义保护规则。
- 单击**保存保护规则**。
-
可选:指定哪些分支和标签可以部署到此环境。更多信息,请参见“部署分支和标签”。
-
在**部署分支**下拉菜单中选择所需选项。
-
如果您选择**选定的分支和标签**,要添加新的规则,请单击**添加部署分支或标签规则**
-
在“引用类型”下拉菜单中,根据您要应用的规则,单击** 分支**或** 标签**。
-
输入要允许的分支或标签的名称模式。
注意
必须分别为分支或标签配置名称模式。
-
单击**添加规则**。
-
-
可选:添加环境密钥。这些密钥仅对使用该环境的工作流作业可用。此外,使用此环境的工作流作业只有在任何已配置的规则(例如,必需的评审者)通过后才能访问这些密钥。更多信息,请参见“环境密钥”。
- 在**环境密钥**下,单击**添加密钥**。
- 输入密钥名称。
- 输入密钥值。
- 单击**添加密钥**。
-
可选:添加环境变量。这些变量仅对使用该环境的工作流作业可用,并且只能使用
vars
上下文访问。更多信息,请参见“环境变量”。- 在**环境变量**下,单击**添加变量**。
- 输入变量名称。
- 输入变量值。
- 单击**添加变量**。
您还可以通过 REST API 创建和配置环境。更多信息,请参见“部署环境的 REST API 端点”、“GitHub Actions 密钥的 REST API 端点”、“GitHub Actions 变量的 REST API 端点”和“部署分支策略的 REST API 端点”。
运行引用不存在的环境的工作流将创建一个具有引用名称的环境。如果环境是通过运行隐式页面构建创建的(例如,来自分支或文件夹源),则源分支将作为保护规则添加到环境中。否则,新创建的环境将不会配置任何保护规则或密钥。任何可以编辑仓库中工作流的人员都可以通过工作流文件创建环境,但只有仓库管理员可以配置环境。
删除环境
要配置个人帐户代码库中的环境,您必须是代码库所有者。要配置组织代码库中的环境,您必须具有admin
访问权限。
删除环境将删除与该环境关联的所有密钥和保护规则。由于已删除环境的保护规则而当前正在等待的任何作业将自动失败。
-
在 GitHub 上,导航到仓库的主页。
-
在您的仓库名称下,单击 **设置**。如果您看不到“设置”选项卡,请选择****下拉菜单,然后单击**设置**。
-
在左侧边栏中,单击**环境**。
-
在您要删除的环境旁边,单击.
-
单击**我理解,删除此环境**。
您还可以通过 REST API 删除环境。更多信息,请参见“仓库的 REST API 端点”。
环境与部署的关系
当引用环境的工作流作业运行时,它会创建一个部署对象,其environment
属性设置为您的环境名称。随着工作流的进行,它还会创建部署状态对象,其environment
属性设置为您的环境名称,environment_url
属性设置为环境的URL(如果在工作流中指定),state
属性设置为作业的状态。
您可以通过 REST API 或 GraphQL API 访问这些对象。您还可以订阅这些webhook事件。更多信息,请参见“仓库的 REST API 端点”、“对象”(GraphQL API)或“Webhook 事件和有效负载”。
后续步骤
GitHub Actions 提供了多个用于管理部署的功能。更多信息,请参见“使用 GitHub Actions 部署”。