packagecloud 部署

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

在成功构建后,Travis CI 可以自动将您的 RPM、Deb、Deb 源代码或 RubyGem 软件包构建工件推送到 packagecloud.io

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

deploy:
  provider: packagecloud
  repository: "YOUR REPO"
  username: "YOUR USERNAME"
  token: "YOUR TOKEN"
  dist: "YOUR DIST" # like 'ubuntu/precise', or 'centos/5', if pushing deb or rpms

请注意,您的存储库名称中不应包含正斜杠。例如,如果您的存储库在 packagecloud.io 上显示为 username / repo,则您应该只在 repository: 选项中放入 repo,并在 username: 选项中放入 username

您可以在登录并访问帐户设置下的 API 令牌 页面来检索您的 API 令牌。

这是 受支持的发布版 的列表,用于“dist”选项。

建议您加密您的身份验证令牌。假设您已安装 Travis CI 命令行客户端,您可以按照以下步骤操作

travis encrypt THE-API-TOKEN --add deploy.token

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

travis setup packagecloud

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

要发布的分支 #

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

deploy:
  provider: packagecloud
  on:
    branch: production
  # ⋮

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

deploy:
  provider: packagecloud
  on:
    all_branches: true
  # ⋮

默认情况下,Travis CI 仅从 **master** 分支发布。

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

发布构建工件 #

在您的测试运行并发布之前,Travis CI 将清理您所做的任何其他文件和更改。

也许这不是您想要的,因为您可能生成了也应该发布的一些工件。现在有一个选项可以跳过清理

deploy:
  provider: packagecloud
  skip_cleanup: true
  # ⋮

指定软件包文件夹 #

默认情况下,packagecloud 提供程序将扫描当前目录并推送所有支持的软件包。您可以使用 local-dir 选项指定要扫描的目录。此示例从您的项目 build 目录扫描。

deploy:
  provider: packagecloud
  local-dir: build
  # ⋮

或者,您可能希望指定 package_glob 参数来限制要扫描的文件。它默认为 **/*(递归查找所有软件包文件),但这可能会拾取您不想发布的其他工件。例如,如果您只想推送顶层目录中的 gem

deploy:
  provider: packagecloud
  package_glob: "*.gem"
  # ⋮

关于 Debian 源代码包的说明 #

如果 packagecloud 提供程序找到任何 .dsc 文件,它将扫描它并尝试在 local-dir 目录中找到其内容。确保源代码包及其内容输出到同一个目录,以便它能够正常工作。

条件发布 #

您可以在满足特定条件时才进行部署。请参阅 使用 on: 的条件发布

在发布之前和之后运行命令 #

有时您想在发布软件包之前或之后运行命令。您可以为此使用 before_deployafter_deploy 阶段。这些只有在 Travis CI 实际推送发布时才会触发。

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