部署

此页面记录了使用 dpl v1 的部署,它是默认版本。下一个主要版本 dpl v2 即将发布。请参阅 公告博客文章 了解有关发布流程的详细信息。 dpl v2 的文档可以在此处找到

支持的提供商 #

支持以下提供商的持续部署

要部署到自定义或不受支持的提供商,请使用 after-success 构建阶段脚本提供商

上传文件和 skip_cleanup #

当将文件部署到提供商时,通过将 skip_cleanup 添加到您的 .travis.yml 来阻止 Travis CI 重置您的工作目录并删除构建期间进行的所有更改(git stash --all)。

deploy:
  skip_cleanup: true

部署到多个提供商 #

可以通过将不同的提供商作为列表添加到 deploy 部分来部署到多个提供商。例如,如果您想同时部署到 cloudControl 和 Heroku,您的 deploy 部分将如下所示

deploy:
  - provider: cloudcontrol
    email: "YOUR CLOUDCONTROL EMAIL"
    password: "YOUR CLOUDCONTROL PASSWORD"
    deployment: "APP_NAME/DEP_NAME"
  - provider: heroku
    api_key: "YOUR HEROKU API KEY"

使用 on: 的条件发布 #

通过为任何部署提供商配置 on: 键,将您的构建设置为仅在特定情况下进行部署。

deploy:
  provider: s3
  access_key_id: "YOUR AWS ACCESS KEY"
  secret_access_key: "YOUR AWS SECRET KEY"
  bucket: "S3 Bucket"
  skip_cleanup: true
  on:
    branch: release
    condition: $MY_ENV = super_awesome

on: 部分中指定的所有条件都满足时,您的构建将部署。

使用以下选项配置条件部署

  • repo: 格式为 owner_name/repo_name。仅在构建发生在特定存储库上时进行部署。例如

     deploy:
       provider: s3
       on:
         repo: travis-ci/dpl
    
  • branch: 分支的名称。如果省略,则默认为特定于应用程序的分支,或 master。如果分支名称事先未知,您可以指定 all_branches: true 而不是 branch: 并使用其他条件来控制您的部署。

  • jdknodeperlphppythonrubyscalago: 对于支持多个版本的语言运行时,您可以将部署限制为仅在与特定版本匹配的作业上发生。

  • condition: 当单个 bash 条件评估为 true 时进行部署。这必须是字符串值,并且等效于 if [[ <condition> ]]; then <deploy>; fi。例如,$CC = gcc

  • tags 可以是 truefalse 或任何其他字符串

    • tags: true: 当且仅当 $TRAVIS_TAG 设置时触发部署。根据您的工作流程,您可能明确设置 $TRAVIS_TAG,即使这是在启动时是一个非标记构建。这会导致忽略 branch 条件。
    • tags: false: 当且仅当 $TRAVIS_TAG 为空时触发部署。这也导致忽略 branch 条件。
    • tags 未设置或设置为任何其他值时,将忽略 $TRAVIS_TAG,并且如果设置了 branch 条件,则会考虑该条件。

条件部署示例 #

此示例仅在 Node.js 版本 0.11 上运行测试时,才从 staging 分支部署到 Appfog。

language: node_js
deploy:
  provider: appfog
  user: ...
  api_key: ...
  on:
    branch: staging
    node_js: '0.11' # this should be quoted; otherwise, 0.10 would not work

下一个示例仅对 stagingproduction 分支上的构建使用自定义脚本 deploy.sh 进行部署。

deploy:
  provider: script
  script: deploy.sh
  on:
    all_branches: true
    condition: $TRAVIS_BRANCH =~ ^(staging|production)$

下一个示例使用自定义脚本 deploy_production.shdeploy_staging.sh 进行部署,具体取决于触发作业的分支。

deploy:
  - provider: script
    script: deploy_production.sh
    on:
      branch: production
  - provider: script
    script: deploy_staging.sh
    on:
      branch: staging

下一个示例仅当 $CC 设置为 gcc 时,才部署到 S3。

deploy:
  provider: s3
  access_key_id: "YOUR AWS ACCESS KEY"
  secret_access_key: "YOUR AWS SECRET KEY"
  skip_cleanup: true
  bucket: "S3 Bucket"
  on:
    condition: "$CC = gcc"

此示例在设置标签且 Ruby 版本为 2.0.0 时,部署到 GitHub Releases。

deploy:
  provider: releases
  api_key: "GITHUB OAUTH TOKEN"
  file: "FILE TO UPLOAD"
  skip_cleanup: true
  on:
    tags: true
    rvm: 2.0.0

添加部署提供商 #

我们正在努力添加对其他 PaaS 提供商的支持。如果您在未在此处列出的提供商处托管您的应用程序,并且您希望 Travis CI 自动部署您的应用程序,请 联系我们

如果您对 部署工具 做出贡献或进行试验,请确保您使用来自 GitHub 的边缘版本

deploy:
  provider: awesome-experimental-provider
  edge: true

拉取请求 #

请注意,拉取请求构建完全跳过了部署步骤。