使用 Dpl 作为部署工具
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
Dpl (发音为字母 D-P-L) 是一个持续部署工具,由 Travis CI 开发和使用,但也可以与 GitLab CI/CD 一起使用。
Dpl 可以部署到任何 支持的提供商。
前提条件
使用 Dpl 至少需要 Ruby 1.9.3,并且能够安装 gems。
基本用法
可以在任何机器上安装 Dpl:
gem install dpl这允许您从本地终端测试所有命令,而不必在 CI 服务器上测试。
如果您没有安装 Ruby,可以在兼容 Debian 的 Linux 系统上安装:
apt-get update
apt-get install ruby-devDpl 支持大量服务,包括:Heroku、Cloud Foundry、AWS/S3 等。 要使用它,需要定义提供商以及提供商所需的任何额外参数。
例如,如果您想使用它将应用程序部署到 Heroku,需要指定 heroku 作为提供商,并指定 api_key 和 app。
所有可能的参数可以在 Heroku API 部分 中找到。
staging:
stage: deploy
script:
- gem install dpl
- dpl heroku api --app=my-app-staging --api_key=$HEROKU_STAGING_API_KEY
environment: staging在上面的示例中,我们使用 Dpl 将 my-app-staging 部署到 Heroku 服务器,API 密钥存储在 HEROKU_STAGING_API_KEY 安全变量中。
要使用不同的提供商,请查看 支持的提供商 的长列表。
在 Docker 中使用 Dpl
在大多数情况下,您配置了 GitLab Runner 使用服务器的 shell 命令。
这意味着所有命令都在本地用户上下文中运行(例如 gitlab_runner 或 gitlab_ci_multi_runner)。
这也意味着在您的 Docker 容器中很可能没有安装 Ruby 运行时。您必须安装它:
staging:
stage: deploy
script:
- apt-get update -yq
- apt-get install -y ruby-dev
- gem install dpl
- dpl heroku api --app=my-app-staging --api_key=$HEROKU_STAGING_API_KEY
rules:
- if: $CI_COMMIT_BRANCH == "main"
environment: staging第一行 apt-get update -yq 更新可用软件包列表,
第二行 apt-get install -y ruby-dev 在系统上安装 Ruby 运行时。
前面的示例适用于所有兼容 Debian 的系统。
在暂存和生产环境中的使用
在开发工作流程中,拥有暂存(开发)和生产环境是很常见的
让我们考虑以下示例:我们希望将 main 分支部署到 staging,并将所有标签部署到 production 环境。
该设置的最终 .gitlab-ci.yml 如下所示:
staging:
stage: deploy
script:
- gem install dpl
- dpl heroku api --app=my-app-staging --api_key=$HEROKU_STAGING_API_KEY
rules:
- if: $CI_COMMIT_BRANCH == "main"
environment: staging
production:
stage: deploy
script:
- gem install dpl
- dpl heroku api --app=my-app-production --api_key=$HEROKU_PRODUCTION_API_KEY
rules:
- if: $CI_COMMIT_TAG
environment: production我们创建了两个在不同事件上执行的部署作业:
staging:对推送到main分支的所有提交执行production:对所有推送的标签执行
我们还使用了两个安全变量:
HEROKU_STAGING_API_KEY:用于部署暂存应用的 Heroku API 密钥HEROKU_PRODUCTION_API_KEY:用于部署生产应用的 Heroku API 密钥
存储 API 密钥
将 API 密钥存储为安全变量:
- 在左侧边栏,选择 Search or go to 并找到您的项目。
- 选择 Settings > CI/CD。
- 展开 Variables。
在项目设置中定义的变量会随构建脚本一起发送给 runner。
安全变量存储在仓库之外。切勿将机密信息存储在项目的 .gitlab-ci.yml 文件中。重要的是,机密值应在作业日志中隐藏。
您可以通过在变量名前加上 $(非 Windows runner)或 %(Windows Batch runner)来访问添加的变量:
$VARIABLE:用于非 Windows runner%VARIABLE%:用于 Windows Batch runner
阅读更多关于 CI/CD 变量 的信息。