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_deploy
和 after_deploy
阶段。这些只有在 Travis CI 实际推送发布时才会触发。
before_deploy: "echo 'ready?'"
deploy:
# ⋮
after_deploy:
- ./after_deploy_1.sh
- ./after_deploy_2.sh