Skip to main content

此版本的 GitHub Enterprise 已停止服务 2022-06-03. 即使针对重大安全问题,也不会发布补丁。 要获得更好的性能、改进的安全性和新功能,请升级到 GitHub Enterprise 的最新版本。 如需升级方面的帮助,请联系 GitHub Enterprise 支持

使用环境进行部署

您可以使用保护规则和机密配置环境。 引用环境的工作流程作业在运行或访问环境的机密之前,必须遵循环境的任何保护规则。

所有产品的公共仓库提供环境、环境保护规则和环境机密。 要访问私人仓库的环境,您必须使用 GitHub Enterprise。

关于环境

环境用于描述一般的部署目标,如生产暂存开发。 当 GitHub Actions 工作流程部署到某个环境时,该环境将显示在存储库的主页上。 有关查看环境部署的详细信息,请参阅“查看部署历史记录”。

您可以使用保护规则和机密配置环境。 当工作流程引用环境时,作业在环境的所有保护规则通过之前不会开始。 在所有环境保护规则通过之前,作业也不能访问在环境中定义的机密。

环境保护规则

环境保护规则要求通过特定的条件,然后引用环境的作业才能继续。 您可以使用环境保护规则要求手动批准或延迟作业。

需要的审查者

使用所需的审查者要求特定人员或团队批准引用环境的工作流程作业。 您最多可以列出六个用户或团队作为审查者。 审查者必须至少具有对仓库的读取访问权限。 只有一个必需的审查者需要批准该作业才能继续。

有关与必需审查者一起审查引用环境的作业的详细信息,请参阅“审查部署”。

等待计时器

在最初触发作业后,使用等待计时器将作业延迟特定时间。 时间(分钟)必须是 0 至 43,200(30天)之间的整数。

环境机密

存储在环境中的机密仅可用于引用环境的工作流程作业。 如果环境需要批准,作业在所需的审查者批准之前不能访问环境机密。 有关机密的更多信息,请参阅“加密密码”。

注意: 在自托管运行器上运行的工作流程不会在一个孤立的容器中运行,即使它们使用环境。 环境机密应与存储库和组织机密的安全级别相同。 更多信息请参阅“GitHub Actions 的安全性增强”。

创建环境

要在个人帐户仓库中配置环境,您必须是仓库所有者。 要在组织仓库中配置环境,您必须具有管理员访问权限。

  1. 在 您的 GitHub Enterprise Server 实例 上,导航到仓库的主页面。
  2. 在仓库名称下,单击 Settings(设置)仓库设置按钮
  3. 在左侧边栏中,单击 Environments(环境)
  4. 单击 New environment(新环境)
  5. 为环境输入一个名称, 然后单击 Configure environment(配置环境)。 环境名称不区分大小写。 环境名称不能超过 255 个字符,且必须在仓库中唯一。
  6. (可选)指定必须批准使用此环境的工作流程作业的人员或团队。
    1. 选择 Required reviewers(必需的审查者)
    2. 最多可输入 6 人或团队。 只有一个必需的审查者需要批准该作业才能继续。
    3. 单击 Save protection rules(保存保护规则)
  7. (可选)指定在允许使用此环境的工作流程作业继续之前要等待的时长。
    1. 选择 Wait timer(等待计时器)
    2. 输入要等待的分钟数。
    3. 单击 Save protection rules(保存保护规则)
  8. (可选)指定哪些分支可以部署到此环境。 有关可能值的详细信息,请参阅“部署分支”。
    1. Deployment branches(部署分支)下拉列表中选择所需的选项。
    2. 如果选择 Selected branches(选定分支),请输入要允许的分支名称模式。
  9. (可选)添加环境机密。 这些机密仅可用于使用环境的工作流程作业。 此外,使用此环境的工作流程作业只能在任何配置的规则(例如,必需的审查者)通过后才能访问这些机密。 有关机密的更多信息,请参阅“加密密码”。
    1. Environment secrets(环境机密)下,单击 Add Secret(添加机密)
    2. 输入机密名称。
    3. 输入机密值。
    4. 单击 Add secret(添加密码)

运行引用不存在的环境的工作流程将使用引用的名称创建环境。 新创建的环境将不配置任何保护规则或机密。 可在仓库中编辑工作流程的任何人都可以通过工作流程文件创建环境,但只有仓库管理员才能配置环境。

使用环境

工作流程中的每个作业都可以引用单个环境。 在将引用环境的作业发送到运行器之前,必须通过为环境配置的任何保护规则。 只有在将作业发送给运行器后,作业才能访问环境的机密。

当工作流程引用环境时,环境将显示在仓库的部署中。 有关查看当前和以前的部署的详细信息,请参阅“查看部署历史记录”。

您可以为工作流程中的每个作业指定一个环境。 为此,请添加 jobs.<job_id>.environment 键,后跟环境的名称。

例如,此工作流程将使用名为 production 的环境。

name: Deployment

on:
  push:
    branches:
      - main

jobs:
  deployment:
    runs-on: ubuntu-latest
    environment: production
    steps:
      - name: deploy
        # ...deployment-specific steps

运行上述工作流程时,deployment 作业将受为 production 环境配置的任何规则的约束。 例如,如果环境需要审查者,则作业将暂停,直到其中一个审查者批准该作业。

您还可以为环境指定 URL。 指定的 URL 将显示在存储库的部署页面上(通过单击存储库主页上的环境访问)以及工作流程运行的可视化图表中。 如果拉取请求触发了工作流程,则该 URL 还会在拉取请求时间线中显示为 View deployment(查看部署)按钮。

name: Deployment

on:
  push:
    branches:
      - main

jobs:
  deployment:
    runs-on: ubuntu-latest
    environment: 
      name: production
      url: https://github.com
    steps:
      - name: deploy
        # ...deployment-specific steps

带有 URL 的工作流程图

删除环境

要在个人帐户仓库中配置环境,您必须是仓库所有者。 要在组织仓库中配置环境,您必须具有管理员访问权限。

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

  1. 在 您的 GitHub Enterprise Server 实例 上,导航到仓库的主页面。
  2. 在仓库名称下,单击 Settings(设置)仓库设置按钮
  3. 在左侧边栏中,单击 Environments(环境)
  4. 在要删除的环境旁边,单击
  5. 单击 I understand, delete this environment(我了解,删除此环境)

环境与部署的关系

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

您可以通过 REST API 或 GraphQL API 访问这些对象。 您还可以订阅这些 web 挂钩事件。 更多信息请参阅“存储库”(REST API)、“对象”(GraphQL API)或“web 挂钩事件和有效负载”。

后续步骤

GitHub Actions 具有多个用于管理部署的功能。 更多信息请参阅“使用 GitHub Actions 进行部署”。