{{< details >}}

  1. Tier: 基础版, 专业版, 旗舰版
  2. Offering: JihuLab.com, 私有化部署

{{< /details >}}

当您将代码的一个版本部署到一个环境时,您创建了一个部署。通常每个环境只有一个活动部署。

极狐GitLab:

  1. 提供每个环境的完整部署历史。
  2. 跟踪您的部署,让您始终知道您的服务器上部署了什么。

如果您的项目关联了像 Kubernetes 这样的部署服务,您可以使用它来协助您的部署。

创建部署后,您可以将其推送给用户。

配置手动部署

您可以创建一个需要手动启动部署的作业。例如:

deploy_prod:
  stage: deploy
  script:
    - echo "Deploy to production server"
  environment:
    name: production
    url: https://example.com
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
      when: manual

when: manual 操作:

  1. 在极狐GitLab UI 中为作业暴露 Run ({{< icon name=”play” >}}) 按钮,带有文本 Can be manually deployed to <environment>
  2. 意味着 deploy_prod 作业必须手动触发。

您可以在流水线、环境、部署和作业视图中找到 Run ({{< icon name=”play” >}})。

跟踪每次部署中新包含的合并请求

极狐GitLab 可以跟踪每次部署中新包含的合并请求。当部署成功时,系统计算最新部署与之前部署之间的提交差异。您可以通过 部署 API 获取跟踪信息,或在 合并请求页面 的合并后流水线中查看。

要启用跟踪,请配置您的环境,使其满足以下条件之一:

  1. 环境名称 不使用带有 / 的文件夹(长期存在或顶级环境)。
  2. 环境层级productionstaging

下面是一些在 .gitlab-ci.yml 中使用 environment 关键字 的示例配置:

  # 可跟踪
  environment: production
  environment: production/aws
  environment: development

  # 不可跟踪
  environment: review/$CI_COMMIT_REF_SLUG
  environment: testing/aws

配置更改仅适用于新部署。现有部署记录没有关联或取消关联的合并请求。

本地检出部署

在 Git 仓库中,每个部署都保存了一个引用,因此了解您当前环境的状态只需一个 git fetch

在您的 Git 配置中,附加 [remote "<your-remote>"] 块,并添加一个额外的 fetch 行:

fetch = +refs/environments/*:refs/remotes/origin/environments/*

归档旧部署

当您的项目中发生新部署时,极狐GitLab 创建了 一个指向部署的特殊 Git-ref。由于这些 Git-ref 是从远程极狐GitLab 仓库填充的,您可能会发现某些 Git 操作(例如 git-fetchgit-pull)随着项目中部署数量的增加而变慢。

为了保持 Git 操作的效率,极狐GitLab 仅保留最近的部署引用(最多 50,000 个),并删除其余的旧部署引用。归档的部署仍然可以在 UI 中或通过 API 进行审计。另外,即使在归档后,您仍然可以通过指定提交 SHA(例如 git checkout <deployment-sha>)从仓库中获取已部署的提交。

{{< alert type=”note” >}}

极狐GitLab 会将所有提交保留为 keep-around 引用,以便即使没有被部署引用引用,已部署的提交也不会被垃圾回收。

{{< /alert >}}

部署回滚

当您在特定提交上回滚部署时,会创建一个 部署。此部署具有其唯一的作业 ID。它指向您要回滚到的提交。

为了使回滚成功,部署过程必须在作业的 script 中定义。

仅运行 部署作业。在某些情况下,如果以前的作业生成了必须在部署时重新生成的产物,您必须从流水线页面手动运行必要的作业。例如,如果您使用 Terraform 并将 planapply 命令分成多个作业,您必须手动运行这些作业以进行部署或回滚。

重试或回滚部署

如果部署有问题,您可以重试或回滚。

要重试或回滚部署:

  1. 在左侧边栏中,选择 Search or go to 并找到您的项目。
  2. 选择 Operate > Environments
  3. 选择环境。
  4. 在部署名称的右侧:
    • 要重试部署,选择 Re-deploy to environment
    • 要回滚到部署,请在之前成功的部署旁边选择 Rollback environment

{{< alert type=”note” >}}

如果您在项目中 阻止了过时的部署作业,回滚按钮可能被隐藏或禁用。在这种情况下,请参阅 回滚部署的作业重试

{{< /alert >}}

相关主题

  1. 环境
  2. 部署的下游流水线
  3. 使用极狐GitLab CI/CD 部署到多个环境(博客文章)
  4. 审查应用
  5. 跟踪外部部署工具的部署

故障排除

当您处理部署时,可能会遇到以下问题。

找不到部署引用

极狐GitLab 删除旧的部署引用 以保持您的 Git 仓库性能。

如果您需要在极狐GitLab 私有化部署上恢复归档的 Git-ref,请让管理员在 Rails 控制台执行以下命令:

Project.find_by_full_path(<your-project-full-path>).deployments.where(archived: true).each(&:create_ref)