RubyGems 部署
此页面记录使用即将发布的 dpl v2 版本进行的部署,该版本目前处于 beta 发布阶段。请参阅 我们的博客文章 获取详细信息。当前默认版本是 dpl v1。查看 dpl v1 文档。
请务必阅读 v2 部署概述。
Travis CI 可以在构建成功后自动将您的 Ruby gem 发布到 RubyGems。
对于最小配置,请将以下内容添加到您的 .travis.yml
deploy:
provider: rubygems
api_key: <encrypted api_key>
edge: true # opt in to dpl v2
或者,您可以使用 username
和 password
deploy:
provider: rubygems
username: <username>
password: <encrypted password>
状态 #
对 Rubygems 部署的支持 *稳定*。
已知选项 #
使用以下选项进一步配置部署。需要使用 api_key
或 username
和 password
。
api_key |
Rubygems API 密钥 - **机密**,类型:字符串 |
username |
Rubygems 用户名 - 类型:字符串,别名:user |
password |
Rubygems 密码 - **机密**,类型:字符串 |
gem |
要发布的 gem 的名称 - 类型:字符串,默认:仓库名称 |
gemspec |
用于构建 gem 的 gemspec 文件 - 类型:字符串 |
gemspec_glob |
当仓库中生成多个 gem 时搜索 gemspec 文件的通配符模式(覆盖 gemspec 选项) - 类型:字符串 |
host |
类型:字符串 |
共享选项 #
cleanup |
在部署前从 Git 工作目录中清理构建工件 - 类型:布尔值 |
run |
部署成功完成后要执行的命令 - 类型:字符串或字符串数组 |
环境变量 #
如果所有选项以 RUBYGEMS_
为前缀,则可以作为环境变量给出。
例如,api_key
可以作为 RUBYGEMS_API_KEY=<api_key>
给出。
保护机密 #
机密选项值应作为您的构建配置中的加密字符串给出(.travis.yml
文件)或您的仓库设置中的环境变量。
环境变量可以在您的仓库的设置页面上设置,也可以使用 travis env set
设置。
travis env set RUBYGEMS_API_KEY <api_key>
为了在将选项值添加到您的 .travis.yml
文件时加密它们,请使用 travis encrypt
travis encrypt <api_key>
或者使用 --add
直接将其添加到您的 .travis.yml
文件中。请注意,此命令必须在您的仓库的根目录中运行。
travis encrypt --add deploy.api_key <api_key>
您可以按照 这些说明 获取您的 API 密钥。
预发布 #
您可以为每个构建创建一个 预发布,而不是为您的 gem 的每个新版本发布。
这使您的 gem 的用户可以选择下载您 gem 的较新、可能不太稳定的版本。要启用此功能,请将以下行添加到您的 gemspec 中,位于您现有的 version
行下方。
s.version = "#{s.version}-alpha-#{ENV['TRAVIS_BUILD_NUMBER']}" if ENV['TRAVIS']
如果您的 gem 的当前版本是 1.0.0
,则预发布版本将是 1.0.0-alpha-20,其中 20
是构建编号。
指定 gem 名称 #
默认情况下,我们将尝试根据仓库名称发布一个 gem。
您可以通过 gem
选项显式设置名称。
deploy:
provider: rubygems
# ⋮
gem: <name>
为了根据当前分支发布 gem,请使用单独的部署配置。
deploy:
- provider: rubygems
# ⋮
gem: <name-1>
on:
branch: master
- provider: rubygems
# ⋮
gem: <name-2>
on:
branch: staging
或使用 YAML 引用。
deploy:
- &deploy
provider: rubygems
# ⋮
gem: <name-1>
on:
branch: master
- <<: *deploy
gem: <name-2>
on:
branch: staging
指定 gemspec #
您可以使用 gemspec
选项指定 gemspec。
deploy:
provider: rubygems
# ⋮
gemspec: <gemspec>
部署标签 #
您很可能只希望在剪切您的包的新版本时进行部署。
为此,您可以包含一个 tags
条件,如下所示。
deploy:
provider: rubygems
# ⋮
on:
tags: true
如果您在本地标记了一个提交,请记住运行 git push --tags
以确保您的标签已上传到 GitHub。
拉取请求 #
请注意,拉取请求构建完全跳过部署步骤。