条件部署

此页面记录了使用下一个主要版本 dpl v2 的部署,该版本目前处于测试版发布阶段。请参阅 我们的博客文章 获取详细信息。当前默认版本是 dpl v1。查看 此处提供的 dpl v1 文档

请务必阅读 v2 部署概述

使用任何部署提供程序的 on 选项,将构建设置为仅在特定情况下部署。

deploy:
  provider: <provider>
  # ⋮
  on:
    branch: release
    condition: $MY_ENV = value

如果满足 on 部分中指定的所有条件,则构建将部署。

以下条件可用

仓库 #

要仅在构建发生在特定存储库上时部署,请添加 repo,格式为 owner_name/repo_name

deploy:
  provider: <provider>
  # ⋮
  on:
    repo: travis-ci/dpl

分支 #

默认情况下,部署仅在 master 分支上进行。您可以使用 branchall_branches 选项覆盖此设置。

例如,要仅在 production 分支上部署,请使用

deploy:
  provider: <provider>
  # ⋮
  on:
    branch: production

要从所有分支部署,请使用

deploy:
  provider: <provider>
  # ⋮
  on:
    all_branches: true

条件 #

您可以指定单个 Bash condition,该条件需要评估为 true 才能进行部署。

这必须是一个字符串值,它将被包装到 if [[ <condition> ]]; then <deploy>; fi 中。

例如,要仅在 $CCgcc 时部署,请使用

deploy:
  provider: s3
  # ⋮
  on:
    condition: $CC = gcc

标签 #

您可以使用 tags 选项指定是否在标签构建上部署。如果设置为 true,则部署仅在标签构建上进行,如果设置为 false,则不会在标签构建上进行。

例如,要仅在标签构建上部署,请使用

deploy:
  provider: <provider>
  # ⋮
  on:
    tags: true
  • tags 可以是 truefalse 或任何其他字符串

这将检查环境变量 $TRAVIS_TAG 是否已设置。根据您的工作流程,即使这是在启动时被显式初始化的非标签构建,您也可以显式设置 $TRAVIS_TAG

tags 设置为 true 会导致忽略 branch 条件,否则会忽略 $TRAVIS_TAG,并考虑 branch 条件。

条件部署示例 #

这使用自定义脚本 deploy.sh 部署,仅针对 stagingproduction 分支上的构建。

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: <encrypted access_key_id>
  secret_access_key: <encrypted secret_access_key>
  bucket: <bucket>
  on:
    condition: $CC = gcc