Using Dpl as deployment tool

原文:https://docs.gitlab.com/ee/ci/examples/deployment/README.html

Using Dpl as deployment tool

Dpl (发音为 DPL)是由 Travis CI 开发和使用的,用于连续部署的部署工具,但也可以与 GitLab CI / CD 一起使用.

Dpl 可用于部署到任何受支持的提供程序 .

Requirements

要使用 Dpl,您至少需要具备安装 gem 的 Ruby 1.9.3.

Basic usage

可以将 Dpl 安装在具有以下条件的任何计算机上:

  1. gem install dpl

这使您可以从本地终端测试所有命令,而不必在 CI 服务器上进行测试.

如果您没有安装 Ruby,则可以在兼容 Debian 的 Linux 上执行以下操作:

  1. apt-get update
  2. apt-get install ruby-dev

Dpl 为大量服务提供支持,包括:Heroku,Cloud Foundry,AWS / S3 等. 要使用它,只需定义提供者和提供者所需的任何其他参数.

例如,如果要使用它将应用程序部署到 Heroku,则需要将heroku指定为提供者,并指定api-keyapp . 所有可能的参数都可以在这里找到: https : //github.com/travis-ci/dpl#heroku-api .

  1. staging:
  2. stage: deploy
  3. script:
  4. - gem install dpl
  5. - dpl --provider=heroku --app=my-app-staging --api-key=$HEROKU_STAGING_API_KEY

在上面的示例中,我们使用 Dpl 通过存储在HEROKU_STAGING_API_KEY安全变量中的 API 密钥将my-app-staging部署到 Heroku 服务器.

要使用其他提供程序,请查看一整列受支持的提供程序 .

Using Dpl with Docker

在大多数情况下,您将配置GitLab Runner以使用服务器的 Shell 命令. 这意味着所有命令都在本地用户的上下文中运行(例如gitlab_runnergitlab_ci_multi_runner ). 这也意味着最有可能在 Docker 容器中没有安装 Ruby 运行时. 您将必须安装它:

  1. staging:
  2. stage: deploy
  3. script:
  4. - apt-get update -yq
  5. - apt-get install -y ruby-dev
  6. - gem install dpl
  7. - dpl --provider=heroku --app=my-app-staging --api-key=$HEROKU_STAGING_API_KEY
  8. only:
  9. - master

第一行apt-get update -yq更新可用软件包的列表,第二行apt-get install -y ruby-dev在系统上安装 Ruby 运行时. 上面的示例对所有与 Debian 兼容的系统均有效.

Usage in staging and production

在开发工作流程中具有暂存(开发)和生产环境是很常见的

让我们考虑以下示例:我们希望将master分支部署到staging并将所有标签部署到production环境. 该设置的最终.gitlab-ci.yml如下所示:

  1. staging:
  2. stage: deploy
  3. script:
  4. - gem install dpl
  5. - dpl --provider=heroku --app=my-app-staging --api-key=$HEROKU_STAGING_API_KEY
  6. only:
  7. - master
  8. production:
  9. stage: deploy
  10. script:
  11. - gem install dpl
  12. - dpl --provider=heroku --app=my-app-production --api-key=$HEROKU_PRODUCTION_API_KEY
  13. only:
  14. - tags

我们创建了两个在不同事件上执行的部署作业:

  1. staging is executed for all commits that were pushed to master branch,
  2. 对所有推送的标签执行production .

我们还使用两个安全变量:

  1. HEROKU_STAGING_API_KEY -Heroku API 密钥,用于部署登台应用程序,
  2. HEROKU_PRODUCTION_API_KEY -Heroku API 密钥,用于部署生产应用程序.

Storing API keys

可以通过在项目的设置➔CI / CD➔变量中添加安全变量 . 项目设置中定义的变量与构建脚本一起发送到 Runner. 安全变量存储在存储库之外. 切勿将机密存储在项目的.gitlab-ci.yml . 将秘密的值隐藏在作业日志中也很重要.

您可以通过使用$ (在非 Windows 运行程序上)或% (对于 Windows 批处理运行程序)前缀名称来访问添加的变量:

  1. $VARIABLE用于非 Windows 运行器
  2. %VARIABLE% -用于 Windows 批处理运行器

阅读有关CI 变量的更多信息.