packagecloud 部署
此页面记录了使用下一个主要版本 dpl v2 的部署,该版本目前处于 Beta 发布阶段。有关详细信息,请参阅 我们的博客文章。当前默认版本为 dpl v1。请查看 此处 dpl v1 文档。
请务必阅读 v2 部署概述。
Travis CI 可以在构建成功后自动将您的 RPM、Deb、Deb 源或 RubyGem 包构建工件推送到 packagecloud.io。
对于最小配置,请将以下内容添加到您的 .travis.yml
中
deploy:
provider: packagecloud
username: <username>
token: <encrypted token>
repository: <repository>
edge: true # opt in to dpl v2
请注意,您的存储库名称中不应包含正斜杠:例如,如果您的存储库在 packagecloud.io 上显示为
username/repo
,则repository
选项为repo
,username
选项为username
。
您可以通过登录并访问帐户设置下的 API 令牌 页面来检索您的 API 令牌。
此外,对于 Debian、RPM 和 Node.js 包,需要 dist
选项
deploy:
provider: packagecloud
# ⋮
dist: <dist> # required for , e.g. 'centos/5'
dist
选项支持的分布列表可以在 此处 找到。
状态 #
对 Packagecloud 部署的支持处于 alpha 阶段。有关详细信息,请参阅 成熟度级别。
已知选项 #
使用以下选项进一步配置部署。
username |
packagecloud.io 用户名。— 必需,类型:字符串 |
token |
packagecloud.io API 令牌。— 必需、机密,类型:字符串 |
repository |
要推送到哪个存储库。— 必需,类型:字符串 |
local_dir |
构建资产用于部署的子目录。— 类型:字符串,默认值:. |
dist |
对于 debian、rpm 和 node.js 包是必需的(对于 node.js 包使用“node”)。支持的完整字符串列表可以在 packagecloud.io 文档中找到。— 类型:字符串 |
force |
是否必须在上传前(重新)上传/删除包 — 类型:布尔值 |
connect_timeout |
类型:整数,默认值:60 |
read_timeout |
类型:整数,默认值:60 |
write_timeout |
类型:整数,默认值:180 |
package_glob |
类型:字符串或字符串数组,默认值:["**/*"] |
共享选项 #
cleanup |
在部署前清理 Git 工作目录中的构建工件 — 类型:布尔值 |
run |
在部署成功完成后要执行的命令 — 类型:字符串或字符串数组 |
环境变量 #
如果以 PACKAGECLOUD_
为前缀,则所有选项都可以作为环境变量提供。
例如,token
可以作为 PACKAGECLOUD_TOKEN=<token>
提供。
保护机密 #
机密选项值应作为构建配置(.travis.yml
文件)中的加密字符串或存储库设置中的环境变量提供。
可以在存储库的设置页面或使用 travis env set
设置环境变量
travis env set PACKAGECLOUD_TOKEN <token>
为了在将选项值添加到 .travis.yml
文件时对其进行加密,请使用 travis encrypt
travis encrypt <token>
或者使用 --add
直接将其添加到 .travis.yml
文件中。请注意,此命令必须在存储库的根目录中运行
travis encrypt --add deploy.token <token>
指定包文件夹 #
默认情况下,packagecloud 提供程序将扫描当前目录并推送所有受支持的包。
您可以使用 local_dir
选项指定要扫描的目录。此示例从 ./build
目录扫描。
deploy:
provider: packagecloud
# ⋮
local_dir: build
或者,您可以指定 package_glob
参数来限制要扫描的文件。它默认为 **/*
(递归查找所有包文件),但这可能会选择您不想发布的其他工件。
例如,如果您只想推送顶层目录中的 gem
deploy:
provider: packagecloud
# ⋮
package_glob: "*.gem"
关于 Debian 源包的说明 #
如果 packagecloud 提供程序找到任何 .dsc
文件,它将扫描它并尝试在 local_dir
目录中找到其内容。确保源包及其内容输出到同一目录才能使其正常工作。
Pull Request #
请注意,Pull Request 构建完全跳过部署步骤。