Review apps
- Tier: 基础版, 专业版, 旗舰版
- Offering: JihuLab.com, 私有化部署
极狐GitLab 的 review apps 是为每个分支或合并请求自动创建的临时测试环境。您可以预览和验证更改,而无需设置本地开发环境。
基于动态环境构建,review apps 为每个分支或合并请求提供独特的环境。
这些环境有助于简化开发工作流程:
- 消除本地设置以测试更改的需要。
- 为所有团队成员提供一致的环境。
- 使利益相关者能够通过 URL 预览更改。
- 在更改到达生产环境之前加速反馈周期。
如果您有一个 Kubernetes 集群,您可以使用 Auto DevOps 自动设置 review apps。
review apps 工作流程
review apps 工作流程可能类似于:
Rendering chart...
配置 review apps
当您希望为每个分支或合并请求提供应用程序的预览环境时,配置 review apps。
前提条件:
- 您必须至少拥有项目的开发者角色。
- 您必须在项目中拥有 CI/CD 流水线。
- 您必须设置基础设施以托管和部署 review apps。
在项目中配置 review apps:
-
在左侧边栏,选择 搜索或转到 并找到您的项目。
-
选择 构建 > 流水线编辑器。
-
在您的 .gitlab-ci.yml 文件中,添加一个创建动态环境的作业。 您可以使用预定义的 CI/CD 变量来区分每个环境。例如,使用 CI_COMMIT_REF_SLUG 预定义变量:
yaml1review_app: 2 stage: deploy 3 script: 4 - echo "Deploy to review app environment" 5 # Add your deployment commands here 6 environment: 7 name: review/$CI_COMMIT_REF_SLUG 8 url: https://$CI_COMMIT_REF_SLUG.example.com 9 rules: 10 - if: $CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
-
可选。向作业添加 when: manual 以仅手动部署 review apps。
-
可选。添加一个作业以在不再需要时停止 review app。
-
输入提交消息并选择 提交更改。
使用 review apps 模板
极狐GitLab 提供了一个内置模板,默认配置用于合并请求流水线。
使用和自定义此模板:
-
在左侧边栏,选择 搜索或转到 并找到您的项目。
-
选择 运维 > 环境。
-
选择 启用 review apps。
-
从出现的 启用 review apps 对话框中,复制 YAML 模板:
yaml1deploy_review: 2 stage: deploy 3 script: 4 - echo "Add script here that deploys the code to your infrastructure" 5 environment: 6 name: review/$CI_COMMIT_REF_NAME 7 url: https://$CI_ENVIRONMENT_SLUG.example.com 8 rules: 9 - if: $CI_PIPELINE_SOURCE == "merge_request_event"
-
选择 构建 > 流水线编辑器。
-
将模板粘贴到您的 .gitlab-ci.yml 文件中。
-
根据您的部署需求自定义模板:
- 修改部署脚本和环境 URL,以适应您的基础设施。
- 如果您想在没有合并请求的情况下触发 review apps,请调整规则部分。
例如,对于 Heroku 的部署:
yaml1deploy_review: 2 stage: deploy 3 image: ruby:latest 4 script: 5 - apt-get update -qy 6 - apt-get install -y ruby-dev 7 - gem install dpl 8 - dpl --provider=heroku --app=$HEROKU_APP_NAME --api-key=$HEROKU_API_KEY 9 environment: 10 name: review/$CI_COMMIT_REF_NAME 11 url: https://$HEROKU_APP_NAME.herokuapp.com 12 on_stop: stop_review_app 13 rules: 14 - if: $CI_PIPELINE_SOURCE == "merge_request_event"
此配置设置了一个自动部署到 Heroku,只要合并请求的流水线运行。它使用 Ruby 的 dpl 部署工具处理该过程,并创建一个可以通过指定的 URL 访问的动态 review 环境。
-
输入提交消息并选择 提交更改。
停止 review apps
您可以配置 review apps,以手动或自动停止来节省资源。
有关停止 review apps 环境的更多信息,请参见停止环境。
在合并时自动停止 review apps
要配置 review apps 以便在关联的合并请求合并或分支删除时自动停止:
- 将 on_stop 关键字添加到您的部署作业。
- 创建一个使用 environment:action: stop 的停止作业。
- 可选。向停止作业添加 when: manual,以便在任何时候手动停止 review app。
例如:
yaml1# 在您的 .gitlab-ci.yml 文件中 2deploy_review: 3 # 其他配置... 4 environment: 5 name: review/${CI_COMMIT_REF_NAME} 6 url: https://${CI_ENVIRONMENT_SLUG}.example.com 7 on_stop: stop_review_app # 引用下方的停止作业 8 9stop_review_app: 10 stage: deploy 11 script: 12 - echo "Stop review app" 13 # 在此添加您的清理命令 14 environment: 15 name: review/${CI_COMMIT_REF_NAME} 16 action: stop 17 when: manual # 使此作业可手动触发 18 rules: 19 - if: $CI_PIPELINE_SOURCE == "merge_request_event"
基于时间的自动停止
要配置 review apps 在一段时间后自动停止,请向您的部署作业添加 auto_stop_in 关键字:
yaml1# 在您的 .gitlab-ci.yml 文件中 2review_app: 3 script: deploy-review-app 4 environment: 5 name: review/$CI_COMMIT_REF_SLUG 6 auto_stop_in: 1 week # 在一周的不活动后停止 7 rules: 8 - if: $CI_MERGE_REQUEST_ID
查看 review apps
要部署和访问 review apps:
- 转到您的合并请求。
- 可选。如果 review app 作业是手动的,选择 运行 () 触发部署。
- 当流水线完成时,选择 查看应用程序 在浏览器中打开 review app。
路由映射
路由映射允许您直接从源文件导航到 review app 环境中的相应公共页面。此功能使您更容易在合并请求中预览特定更改。
配置后,路由映射通过在以下位置添加指向 review app 版本的更改文件的链接,增强了 review app 体验:
- 合并请求小部件。
- 提交和文件视图。
配置路由映射
设置路由映射:
- 在存储库中创建一个文件,路径为 .gitlab/route-map.yml。
- 定义源路径(在您的存储库中)和公共路径(在您的 review app 基础设施或网站上)之间的映射。
路由映射是一个 YAML 数组,其中每个条目将 source 路径映射到 public 路径。
路由映射中的每个映射遵循以下格式:
yaml- source: 'path/to/source/file' # 存储库中的源文件 public: 'path/to/public/page' # 网站上的公共页面
您可以使用两种类型的映射:
- 精确匹配:用单引号括起来的字符串字面量
- 模式匹配:用正斜杠括起来的正则表达式
对于正则表达式的模式匹配:
- 正则表达式必须匹配整个源路径(隐含 ^ 和 $ 锚)。
- 您可以使用可在 public 路径中引用的捕获组 ()。
- 使用 \N 表达式按出现顺序引用捕获组(\1、\2 等)。
- 将斜杠(/)转义为 \/,将句点(.)转义为 \.。
极狐GitLab 按定义顺序评估映射。第一个匹配的 source 表达式决定了 public 路径。
路由映射示例
以下示例显示了 Middleman 的路由映射,这是一种用于 极狐GitLab 网站的静态站点生成器:
yaml1# 团队数据 2- source: 'data/team.yml' # data/team.yml 3 public: 'team/' # team/ 4 5# 博客文章 6- source: /source\/posts\/([0-9]{4})-([0-9]{2})-([0-9]{2})-(.+?)\..*/ # source/posts/2017-01-30-around-the-world-in-6-releases.html.md.erb 7 public: '\1/\2/\3/\4/' # 2017/01/30/around-the-world-in-6-releases/ 8 9# HTML 文件 10- source: /source\/(.+?\.html).*/ # source/index.html.haml 11 public: '\1' # index.html 12 13# 其他文件 14- source: /source\/(.*)/ # source/images/blogimages/around-the-world-in-6-releases-cover.png 15 public: '\1' # images/blogimages/around-the-world-in-6-releases-cover.png
在此示例中:
- 映射按顺序评估。
- 第三个映射确保 source/index.html.haml 匹配 /source\/(.+?\.html).*/,而不是全匹配 /source\/(.*)/。 这产生了一个 index.html 的公共路径,而不是 index.html.haml。
查看映射页面
在您配置路由映射后,可以在下次 review app 部署后找到映射页面的链接。
要查看映射页面:
-
在合并请求小部件中,选择 查看应用程序 以转到 .gitlab-ci.yml 文件中设置的环境 URL。列表显示来自路由映射的最多 5 个匹配项(如果有更多可用项,则进行过滤)。
对于您的路由映射中的文件:
- 在合并请求的 更改 选项卡中,选择 查看文件 @ [提交] 在文件旁边。
- 在文件的页面上,查找右上角的 查看 [部署 URL] ()。
对于使用合并结果流水线的合并请求:
- 转到合并请求中的 流水线 选项卡。
- 选择最新流水线的提交。
- 在文件旁边选择 查看文件 @ [提交]。
- 在文件的页面上,选择右上角的 查看 [部署 URL] ()。