部署
此页面记录了使用 dpl v1 的部署,它是默认版本。下一个主要版本 dpl v2 即将发布。请参阅 公告博客文章 了解有关发布流程的详细信息。 dpl v2 的文档可以在此处找到。
支持的提供商 #
支持以下提供商的持续部署
- anynines
- Atlas
- AWS CodeDeploy
- AWS Elastic Beanstalk
- AWS Lambda
- AWS OpsWorks
- AWS S3
- Azure Web Apps
- bintray
- BitBalloon
- Bluemix CloudFoundry
- Boxfuse
- Catalyze
- Chef Supermarket
- Cloud 66
- CloudFoundry
- Cargo
- Engine Yard
- GitHub Pages
- GitHub Releases
- Google App Engine
- Google Cloud Storage
- Google Firebase
- Hackage
- Hephy
- Heroku
- Launchpad
- npm
- OpenShift
- packagecloud.io
- Puppet Forge
- PyPI
- Rackspace Cloud Files
- RubyGems
- Scalingo
- 脚本
- Snap Store
- Surge.sh
- TestFairy
- Transifex
要部署到自定义或不受支持的提供商,请使用 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:
并使用其他条件来控制您的部署。 -
jdk
、node
、perl
、php
、python
、ruby
、scala
、go
: 对于支持多个版本的语言运行时,您可以将部署限制为仅在与特定版本匹配的作业上发生。 -
condition
: 当单个 bash 条件评估为true
时进行部署。这必须是字符串值,并且等效于if [[ <condition> ]]; then <deploy>; fi
。例如,$CC = gcc
。 -
tags
可以是true
、false
或任何其他字符串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
下一个示例仅对 staging
和 production
分支上的构建使用自定义脚本 deploy.sh
进行部署。
deploy:
provider: script
script: deploy.sh
on:
all_branches: true
condition: $TRAVIS_BRANCH =~ ^(staging|production)$
下一个示例使用自定义脚本 deploy_production.sh
和 deploy_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
拉取请求 #
请注意,拉取请求构建完全跳过了部署步骤。