部署 (v2)

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

如何加入 v2 #

为了使用我们部署工具的 v2 版本,请将以下内容添加到您的 .travis.yml

deploy:
  provider: <provider>
  # ⋮
  edge: true

支持的提供商 #

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

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

Pull Request #

请注意,Pull Request 构建完全跳过部署步骤。

成熟度级别 #

为了传达 dpl 对特定服务的支持的当前开发状态和成熟度,根据给定的标准,相应的提供商将标记以下成熟度级别之一

  • dev - 提供商正在开发中(初始级别)
  • alpha - 提供商已完全测试
  • beta - 提供商已处于 alpha 阶段至少一个月,并且已观察到成功的现实世界生产部署
  • stable - 提供商已处于 beta 阶段至少两个月,并且没有开放的问题被归类为严重问题(例如部署失败、记录的功能中断等)。

Dpl v2 代表了重写,因此所有提供商的支持都已重置为 devalpha,具体取决于测试状态。

对于 stable 以外的所有级别,都会将一条消息打印到您的构建日志中,以告知您当前状态。

保护密钥 #

密钥选项值应作为构建配置(.travis.yml 文件)中的加密字符串或存储库设置中的环境变量给出。

环境变量可以在存储库的设置页面上设置,也可以使用 travis env set 设置。

travis env set <PROVIDER_NAME>_PASSWORD <password>

要加密将选项值添加到 .travis.yml 文件时,请使用 travis encrypt

travis encrypt <password>

或者使用 --add 直接将其添加到 .travis.yml 文件中。请注意,此命令必须在存储库的根目录中运行

travis encrypt --add deploy.password <password>

条件部署 #

只有在满足某些条件时才能部署。

请参阅 条件部署

清理 Git 工作目录 #

默认情况下,在部署步骤之前不会清理您的 Git 工作目录,因此它可能包含先前步骤中遗留的工件。

对于许多提供商和部署目标,这不是问题,甚至是有意的。

如果确实需要清理构建过程中所做更改的工作目录,可以将以下内容添加到 .travis.yml 文件中

deploy:
  provider: [your provider]
  cleanup: true

请注意,dpl(我们的部署集成工具)的先前版本用于重置您的工作目录并使用 git stash --all 删除构建期间所做的所有更改。为了保留更改,必须使用 skip_cleanup: true 选择退出。事实证明,此默认值仅对极少数提供商有用,并且已在 dpl v2 中更改。您仍然可能会发现提及 skip_cleanup 的外部教程或帖子。

在部署步骤之前和之后运行命令 #

有时您想在部署之前或之后运行命令。

您可以为此使用 before_deployafter_deploy 步骤。

请注意:只有在 Travis CI 实际部署时才会触发这些步骤。

before_deploy: "echo ready?"
deploy:
  # ⋮
after_deploy:
  - ./after_deploy_1.sh
  - ./after_deploy_2.sh

部署到多个目标 #

通过将配置作为列表添加到 deploy 部分,可以运行对不同提供商(或使用不同配置的同一提供商)的多个部署。例如,如果您想同时部署到 s3 和 Heroku,您的 deploy 部分将如下所示

deploy:
  - provider: s3
    access_key_id: <AWS access key id>
    secret_access_key: <AWS secret access key>
    # ⋮
  - provider: heroku
    api_key: <Heroku api key>
    # ⋮

运行边缘版本 #

如果您贡献或试验 dpl(我们的部署工具),请确保您使用 GitHub 上的边缘版本

deploy:
  provider: <your-provider>
  edge:
    branch: master
    source: <GitHub handle>/dpl # only needed for forks of travis-ci/dpl

您可以在此处找到有关为 dpl 贡献的更多信息 此处