Rackspace Cloud Files 部署

此页面记录了使用 dpl v1 进行的部署,该版本目前是默认版本。下一个主要版本 dpl v2 将很快发布,我们建议您开始使用它。请参阅 我们的博文 获取详细信息。 dpl v2 文档可在此处找到

在构建成功后,Travis CI 可以自动将您的构建上传到 Rackspace Cloud Files

对于最简单的配置,您只需将以下内容添加到您的 .travis.yml

deploy:
  provider: cloudfiles
  username: "RACKSPACE USERNAME"
  api_key: "RACKSPACE API KEY"
  region: "CLOUDFILE REGION"
  container: "CLOUDFILES CONTAINER NAME"

此示例几乎肯定不是理想的,因为您可能希望上传构建的二进制文件和文档。将 skip_cleanup 设置为 true 以防止 Travis CI 删除您的构建工件。

deploy:
  provider: cloudfiles
  username: "RACKSPACE USERNAME"
  api_key: "RACKSPACE API KEY"
  region: "CLOUDFILE REGION"
  container: "CLOUDFILES CONTAINER NAME"
  skip_cleanup: true

建议您加密 Rackspace api 密钥。假设您已安装 Travis CI 命令行客户端,您可以按以下方式进行操作

travis encrypt --add deploy.api-key

系统会提示您在命令行中输入您的 api 密钥。

您还可以让 travis 工具为您设置所有内容

travis setup cloudfiles

请记住,上述命令必须在您的项目目录中运行,以便它可以为您修改 .travis.yml

按标签部署 #

通常,您只想在发布代码的新版本时进行部署。

您可以告诉 Travis CI 仅在标签上部署,如下所示

deploy:
  provider: cloudfiles
  username: "RACKSPACE USERNAME"
  api_key: "RACKSPACE API KEY"
  region: "CLOUDFILE REGION"
  container: "CLOUDFILES CONTAINER NAME"
  skip_cleanup: true
  on:
    tags: true

仅部署到一个文件夹 #

通常,您不希望将整个项目上传到 Cloud Files。您可以告诉 Travis CI 仅将单个文件夹上传到 Cloud Files。此示例将项目的构建目录上传到 Cloud Files

before_deploy: "cd build"
deploy:
  provider: cloudfiles
  username: "RACKSPACE USERNAME"
  api_key: "RACKSPACE API KEY"
  region: "CLOUDFILE REGION"
  container: "CLOUDFILES CONTAINER NAME"
  skip_cleanup: true

部署到多个容器: #

如果要上传到多个容器,可以执行以下操作

deploy:
  - provider: cloudfiles
    username: "RACKSPACE USERNAME"
    api_key: "RACKSPACE API KEY"
    region: "CLOUDFILE REGION"
    container: "CLOUDFILES CONTAINER NAME"
    skip_cleanup: true
  - provider: cloudfiles
    username: "RACKSPACE USERNAME"
    api_key: "RACKSPACE API KEY"
    region: "CLOUDFILE REGION"
    container: "CLOUDFILES CONTAINER NAME"
    skip_cleanup: true

要从中发布的分支 #

您可以使用 on 选项显式指定要从中发布的分支

deploy:
  provider: cloudfiles
  username: "RACKSPACE USERNAME"
  api_key: "RACKSPACE API KEY"
  region: "CLOUDFILE REGION"
  container: "CLOUDFILES CONTAINER NAME"
  skip_cleanup: true
  on:
    branch: production

或者,您还可以配置 Travis CI 从所有分支发布

deploy:
  provider: cloudfiles
  username: "RACKSPACE USERNAME"
  api_key: "RACKSPACE API KEY"
  region: "CLOUDFILE REGION"
  container: "CLOUDFILES CONTAINER NAME"
  skip_cleanup: true
  on:
    all_branches: true

从拉取请求触发的构建永远不会触发发布。

条件发布 #

您只有在满足某些条件时才能部署。请参阅 使用 on: 进行条件发布

在发布前后运行命令 #

有时您希望在发布 gem 前或后运行命令。为此,您可以使用 before_deployafter_deploy 阶段。只有在 Travis CI 实际推送发布时才会触发这些阶段。

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