# 管理部署环境

可以创建环境，并使用部署保护规则保护这些环境。 引用环境的作业在运行或访问环境的机密之前，必须遵循环境的任何保护规则。

## 先决条件

> [!NOTE]
> 具有 GitHub Free 计划的用户只能为公共存储库配置环境。 如果您将仓库从公开转换为私密，任何配置的保护规则或环境机密将被忽略， 并且您将无法配置任何环境。 如果将仓库转换回公共，您将有权访问以前配置的任何保护规则和环境机密。
>
> 具有 GitHub Team 的组织和具有 GitHub Pro 的用户可以为私有仓库配置环境。 有关详细信息，请参阅“[GitHub的计划](/zh/get-started/learning-about-github/githubs-plans)”。

* 有关环境的一般信息，请参阅 [使用 GitHub Actions 进行部署](/zh/actions/how-tos/deploy/configure-and-manage-deployments/control-deployments#using-environments)。
* 有关可用规则的信息，请参阅 [部署和环境](/zh/actions/reference/workflows-and-actions/deployments-and-environments)。

## 创建环境

要在个人帐户存储库中配置环境，你必须是存储库所有者。 若要在组织存储库中配置环境，必须具有 `admin` 访问权限。

> [!NOTE]
>
> * 拥有 GitHub Team 的组织和拥有 GitHub Pro 的用户可以在私有仓库中创建环境。
> * 环境的某些功能对专用存储库不可用或可用性有限。 如果无法访问以下说明中描述的功能，请参阅相关步骤中链接的文档，了解可用性信息。

1. 在 GitHub 上，导航到存储库的主页面。
2. 在仓库名称下，单击 <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-gear" aria-label="gear" role="img"><path d="M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.385.506.792.704 1.218.315.675.111 1.422-.364 1.891l-.814.806c-.049.048-.098.147-.088.294.016.257.016.515 0 .772-.01.147.038.246.088.294l.814.806c.475.469.679 1.216.364 1.891a7.977 7.977 0 0 1-.704 1.217c-.428.61-1.176.807-1.82.63l-1.102-.302c-.067-.019-.177-.011-.3.071a5.909 5.909 0 0 1-.668.386c-.133.066-.194.158-.211.224l-.29 1.106c-.168.646-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.289-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.738 5.738 0 0 1-.668-.386c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a8.12 8.12 0 0 1-.704-1.218c-.315-.675-.111-1.422.363-1.891l.815-.806c.05-.048.098-.147.088-.294a6.214 6.214 0 0 1 0-.772c.01-.147-.038-.246-.088-.294l-.815-.806C.635 6.045.431 5.298.746 4.623a7.92 7.92 0 0 1 .704-1.217c.428-.61 1.176-.807 1.82-.63l1.102.302c.067.019.177.011.3-.071.214-.143.437-.272.668-.386.133-.066.194-.158.211-.224l.29-1.106C6.009.645 6.556.095 7.299.03 7.53.01 7.764 0 8 0Zm-.571 1.525c-.036.003-.108.036-.137.146l-.289 1.105c-.147.561-.549.967-.998 1.189-.173.086-.34.183-.5.29-.417.278-.97.423-1.529.27l-1.103-.303c-.109-.03-.175.016-.195.045-.22.312-.412.644-.573.99-.014.031-.021.11.059.19l.815.806c.411.406.562.957.53 1.456a4.709 4.709 0 0 0 0 .582c.032.499-.119 1.05-.53 1.456l-.815.806c-.081.08-.073.159-.059.19.162.346.353.677.573.989.02.03.085.076.195.046l1.102-.303c.56-.153 1.113-.008 1.53.27.161.107.328.204.501.29.447.222.85.629.997 1.189l.289 1.105c.029.109.101.143.137.146a6.6 6.6 0 0 0 1.142 0c.036-.003.108-.036.137-.146l.289-1.105c.147-.561.549-.967.998-1.189.173-.086.34-.183.5-.29.417-.278.97-.423 1.529-.27l1.103.303c.109.029.175-.016.195-.045.22-.313.411-.644.573-.99.014-.031.021-.11-.059-.19l-.815-.806c-.411-.406-.562-.957-.53-1.456a4.709 4.709 0 0 0 0-.582c-.032-.499.119-1.05.53-1.456l.815-.806c.081-.08.073-.159.059-.19a6.464 6.464 0 0 0-.573-.989c-.02-.03-.085-.076-.195-.046l-1.102.303c-.56.153-1.113.008-1.53-.27a4.44 4.44 0 0 0-.501-.29c-.447-.222-.85-.629-.997-1.189l-.289-1.105c-.029-.11-.101-.143-.137-.146a6.6 6.6 0 0 0-1.142 0ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM9.5 8a1.5 1.5 0 1 0-3.001.001A1.5 1.5 0 0 0 9.5 8Z"></path></svg>“Settings”\*\*\*\*。 如果看不到“设置”选项卡，请选择“<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-kebab-horizontal" aria-label="更多" role="img"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg>”下拉菜单，然后单击“设置”。

   ![存储库标头的屏幕截图，其中显示了选项卡。 “设置”选项卡以深橙色边框突出显示。](/assets/images/help/repository/repo-actions-settings.png)
3. 在左侧边栏中，单击“环境”。
4. 单击“新建环境”。
5. 为环境输入一个名称, 然后单击“配置环境”。 环境名称不区分大小写。 环境名称不能超过 255 个字符，且必须在仓库中唯一。
6. （可选）指定必须批准使用此环境的工作流程作业的人员或团队。 有关详细信息，请参阅“[部署和环境](/zh/actions/reference/workflows-and-actions/deployments-and-environments#required-reviewers)”。
   1. 选择“所需审查者”\*\*\*\*。
   2. 最多可输入 6 人或团队。 只需指定一名审查者即可批准该作业，使其可继续进行。
   3. （可选）若要防止用户批准其触发的工作流运行，请选择“阻止自评审”\*\*\*\*。
   4. 单击“保存保护规则”。
7. （可选）指定在允许使用此环境的工作流程作业继续之前要等待的时长。 有关详细信息，请参阅“[部署和环境](/zh/actions/reference/workflows-and-actions/deployments-and-environments#wait-timer)”。
   1. 选择“等待计时器”。
   2. 输入要等待的分钟数。
   3. 单击“保存保护规则”。
8. （可选）禁止绕过配置的保护规则。 有关详细信息，请参阅“[部署和环境](/zh/actions/reference/workflows-and-actions/deployments-and-environments#allow-administrators-to-bypass-configured-protection-rules)”。
   1. 取消选择“允许管理员绕过配置的保护规则”。
   2. 单击“保存保护规则”。
9. 可选择启用任何使用 GitHub Apps 创建的自定义部署保护规则。 有关详细信息，请参阅“[部署和环境](/zh/actions/reference/workflows-and-actions/deployments-and-environments#custom-deployment-protection-rules)”。
   1. 选择要启用的自定义保护规则。
   2. 单击“保存保护规则”。
10. （可选）指定哪些分支和标记可以部署到此环境。 有关详细信息，请参阅“[部署和环境](/zh/actions/reference/workflows-and-actions/deployments-and-environments#deployment-branches-and-tags)”。
    1. 在“部署分支”下拉列表中选择所需的选项。

    2. 如果您选择了**特定的分支和标签**，要添加新规则，请单击**添加部署分支或标签规则**。

    3. 在“引用类型”下拉菜单中，根据要应用的规则，单击\*\*<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-git-branch" aria-label="git-branch" role="img"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg>分支**或**<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-tag" aria-label="tag" role="img"><path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"></path></svg>标签\*\*。

    4. 输入想要允许的分支或标记的名称模式。

       > [!NOTE]
       > 必须单独为分支或标记配置名称模式。

    5. 单击 **“添加规则”**。
11. （可选）添加环境机密。 这些机密仅在使用特定环境的工作流程任务中可用。 此外，使用此环境的工作流程作业只能在任何配置的规则（例如，必需的审查者）通过后才能访问这些机密。 有关详细信息，请参阅“[部署和环境](/zh/actions/reference/workflows-and-actions/deployments-and-environments#environment-secrets)”。
    1. 在“环境机密”下，单击“添加机密” 。
    2. 输入机密名称。
    3. 输入机密值。
    4. 单击**添加密钥**。
12. （可选）添加环境变量。 这些变量仅可用于使用环境的工作流作业，并且只能通过 [`vars`](/zh/actions/reference/workflows-and-actions/contexts#vars-context) 上下文访问。 有关详细信息，请参阅“[部署和环境](/zh/actions/reference/workflows-and-actions/deployments-and-environments#environment-variables)”。
    1. 在“环境变量”下，单击“添加变量” 。
    2. 输入变量名称。
    3. 输入变量的值。
    4. 单击“**添加变量**”。

您还可以通过 REST API 创建和配置环境。 有关详细信息，请参阅“[适用于部署环境的 REST API 终结点](/zh/rest/deployments/environments)”、“[用于 GitHub Actions 秘钥的 REST API 端点](/zh/rest/actions/secrets)”、“[GitHub Actions 变量的 REST API 端点](/zh/rest/actions/variables)”和“[适用于部署分支策略的 REST API 终结点](/zh/rest/deployments/branch-policies)”。

运行引用不存在环境的工作流程时，将会创建一个使用该引用名称的环境。 如果环境是通过运行隐式页面构建（例如，从分支或文件夹源）创建的，则源分支将作为保护规则添加到环境中。 否则，新创建的环境将不配置任何保护规则或机密。 可在仓库中编辑工作流程的任何人都可以通过工作流程文件创建环境，但只有仓库管理员才能配置环境。

## 删除环境

要在个人帐户存储库中配置环境，你必须是存储库所有者。 若要在组织存储库中配置环境，必须具有 `admin` 访问权限。

删除环境将删除与环境关联的所有机密和保护规则。 由于已删除环境的保护规则而正在等待的任何作业将自动失败。

1. 在 GitHub 上，导航到存储库的主页面。
2. 在仓库名称下，单击 <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-gear" aria-label="gear" role="img"><path d="M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.385.506.792.704 1.218.315.675.111 1.422-.364 1.891l-.814.806c-.049.048-.098.147-.088.294.016.257.016.515 0 .772-.01.147.038.246.088.294l.814.806c.475.469.679 1.216.364 1.891a7.977 7.977 0 0 1-.704 1.217c-.428.61-1.176.807-1.82.63l-1.102-.302c-.067-.019-.177-.011-.3.071a5.909 5.909 0 0 1-.668.386c-.133.066-.194.158-.211.224l-.29 1.106c-.168.646-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.289-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.738 5.738 0 0 1-.668-.386c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a8.12 8.12 0 0 1-.704-1.218c-.315-.675-.111-1.422.363-1.891l.815-.806c.05-.048.098-.147.088-.294a6.214 6.214 0 0 1 0-.772c.01-.147-.038-.246-.088-.294l-.815-.806C.635 6.045.431 5.298.746 4.623a7.92 7.92 0 0 1 .704-1.217c.428-.61 1.176-.807 1.82-.63l1.102.302c.067.019.177.011.3-.071.214-.143.437-.272.668-.386.133-.066.194-.158.211-.224l.29-1.106C6.009.645 6.556.095 7.299.03 7.53.01 7.764 0 8 0Zm-.571 1.525c-.036.003-.108.036-.137.146l-.289 1.105c-.147.561-.549.967-.998 1.189-.173.086-.34.183-.5.29-.417.278-.97.423-1.529.27l-1.103-.303c-.109-.03-.175.016-.195.045-.22.312-.412.644-.573.99-.014.031-.021.11.059.19l.815.806c.411.406.562.957.53 1.456a4.709 4.709 0 0 0 0 .582c.032.499-.119 1.05-.53 1.456l-.815.806c-.081.08-.073.159-.059.19.162.346.353.677.573.989.02.03.085.076.195.046l1.102-.303c.56-.153 1.113-.008 1.53.27.161.107.328.204.501.29.447.222.85.629.997 1.189l.289 1.105c.029.109.101.143.137.146a6.6 6.6 0 0 0 1.142 0c.036-.003.108-.036.137-.146l.289-1.105c.147-.561.549-.967.998-1.189.173-.086.34-.183.5-.29.417-.278.97-.423 1.529-.27l1.103.303c.109.029.175-.016.195-.045.22-.313.411-.644.573-.99.014-.031.021-.11-.059-.19l-.815-.806c-.411-.406-.562-.957-.53-1.456a4.709 4.709 0 0 0 0-.582c-.032-.499.119-1.05.53-1.456l.815-.806c.081-.08.073-.159.059-.19a6.464 6.464 0 0 0-.573-.989c-.02-.03-.085-.076-.195-.046l-1.102.303c-.56.153-1.113.008-1.53-.27a4.44 4.44 0 0 0-.501-.29c-.447-.222-.85-.629-.997-1.189l-.289-1.105c-.029-.11-.101-.143-.137-.146a6.6 6.6 0 0 0-1.142 0ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM9.5 8a1.5 1.5 0 1 0-3.001.001A1.5 1.5 0 0 0 9.5 8Z"></path></svg>“Settings”\*\*\*\*。 如果看不到“设置”选项卡，请选择“<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-kebab-horizontal" aria-label="更多" role="img"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg>”下拉菜单，然后单击“设置”。

   ![存储库标头的屏幕截图，其中显示了选项卡。 “设置”选项卡以深橙色边框突出显示。](/assets/images/help/repository/repo-actions-settings.png)
3. 在左侧边栏中，单击“环境”。
4. 在要删除的环境旁边，单击 <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-trash" aria-label="Delete environment" role="img"><path d="M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z"></path></svg>。
5. 单击“我了解，删除此环境”。

您也可以通过 RESEST API 删除环境。 有关详细信息，请参阅“[存储库的 REST API 终结点](/zh/rest/repos#environments)”。

## 环境与部署的关系

当引用环境的工作流作业运行时，它将创建一个部署对象并将 `environment` 属性设置为环境名称。 随着工作流的进行，它还将创建部署状态对象，并将 `environment` 属性设置为环境名称，将 `environment_url` 属性设置为环境的 URL（如果在工作流中指定），以及将 `state` 属性设置为作业的状态。

您可以通过 REST API 或 GraphQL API 访问这些对象。 您还可以订阅这些 web 挂钩事件。 有关详细信息，请参阅“[存储库的 REST API 终结点](/zh/rest/repos#deployments)”、“[部署](/zh/graphql/reference/deployments#object-deployment)”(GraphQL API) 或“[Webhook 事件和有效负载](/zh/webhooks/webhook-events-and-payloads#deployment)”。

## 后续步骤

GitHub Actions 提供了多个用于管理部署的功能。 有关详细信息，请参阅“[使用 GitHub Actions 进行部署](/zh/actions/how-tos/deploy/configure-and-manage-deployments/control-deployments)”。