{{< details >}}
- Tier: 基础版, 专业版, 旗舰版
- Offering: JihuLab.com, 私有化部署
{{< /details >}}
当您将代码的一个版本部署到一个环境时,您创建了一个部署。通常每个环境只有一个活动部署。
极狐GitLab:
- 提供每个环境的完整部署历史。
- 跟踪您的部署,让您始终知道您的服务器上部署了什么。
如果您的项目关联了像 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
操作:
- 在极狐GitLab UI 中为作业暴露 Run ({{< icon name=”play” >}}) 按钮,带有文本 Can be manually deployed to <environment>。
- 意味着
deploy_prod
作业必须手动触发。
您可以在流水线、环境、部署和作业视图中找到 Run ({{< icon name=”play” >}})。
跟踪每次部署中新包含的合并请求
极狐GitLab 可以跟踪每次部署中新包含的合并请求。当部署成功时,系统计算最新部署与之前部署之间的提交差异。您可以通过 部署 API 获取跟踪信息,或在 合并请求页面 的合并后流水线中查看。
要启用跟踪,请配置您的环境,使其满足以下条件之一:
下面是一些在 .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-fetch
和 git-pull
)随着项目中部署数量的增加而变慢。
为了保持 Git 操作的效率,极狐GitLab 仅保留最近的部署引用(最多 50,000 个),并删除其余的旧部署引用。归档的部署仍然可以在 UI 中或通过 API 进行审计。另外,即使在归档后,您仍然可以通过指定提交 SHA(例如 git checkout <deployment-sha>
)从仓库中获取已部署的提交。
{{< alert type=”note” >}}
极狐GitLab 会将所有提交保留为 keep-around
引用,以便即使没有被部署引用引用,已部署的提交也不会被垃圾回收。
{{< /alert >}}
部署回滚
当您在特定提交上回滚部署时,会创建一个 新 部署。此部署具有其唯一的作业 ID。它指向您要回滚到的提交。
为了使回滚成功,部署过程必须在作业的 script
中定义。
仅运行 部署作业。在某些情况下,如果以前的作业生成了必须在部署时重新生成的产物,您必须从流水线页面手动运行必要的作业。例如,如果您使用 Terraform 并将 plan
和 apply
命令分成多个作业,您必须手动运行这些作业以进行部署或回滚。
重试或回滚部署
如果部署有问题,您可以重试或回滚。
要重试或回滚部署:
- 在左侧边栏中,选择 Search or go to 并找到您的项目。
- 选择 Operate > Environments。
- 选择环境。
- 在部署名称的右侧:
- 要重试部署,选择 Re-deploy to environment。
- 要回滚到部署,请在之前成功的部署旁边选择 Rollback environment。
{{< alert type=”note” >}}
如果您在项目中 阻止了过时的部署作业,回滚按钮可能被隐藏或禁用。在这种情况下,请参阅 回滚部署的作业重试。
{{< /alert >}}
相关主题
故障排除
当您处理部署时,可能会遇到以下问题。
找不到部署引用
极狐GitLab 删除旧的部署引用 以保持您的 Git 仓库性能。
如果您需要在极狐GitLab 私有化部署上恢复归档的 Git-ref,请让管理员在 Rails 控制台执行以下命令:
Project.find_by_full_path(<your-project-full-path>).deployments.where(archived: true).each(&:create_ref)