RubyGems 部署

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

Travis CI 可以自动在构建成功后将您的 Ruby gem 发布到 RubyGems

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

deploy:
  provider: rubygems
  api_key: "YOUR API KEY"

您可能只希望在您的软件包的新版本发布时才部署到 RubyGems。为此,您可以告诉 Travis CI 仅在标记的提交上进行部署,如下所示

deploy:
  provider: rubygems
  api_key: "YOUR API KEY"
  on:
    tags: true

如果您在本地标记提交,请记住运行 git push --tags 以确保您的标签已上传到 GitHub。

您可以按照 这些说明 检索您的 API 密钥。建议您加密该密钥。假设您已安装 Travis CI 命令行客户端,则可以这样操作

travis encrypt --add deploy.api_key

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

您还可以让 travis 工具为您设置一切

travis setup rubygems

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

预发布 #

您可以让 Travis CI 为每个构建创建 预发布,而不是为您的 gem 的每个新版本进行发布。

这使得您的 gem 用户可以选择下载您 gem 的较新版本,该版本可能不太稳定。

要启用此功能,请将以下行添加到您的 gemspec 中,位于您现有的 version 行下方

s.version = "#{s.version}-alpha-#{ENV['TRAVIS_BUILD_NUMBER']}" if ENV['TRAVIS']

如果您的 gem 的当前版本为 1.0.0,那么 Travis CI 将创建具有版本 1.0.0-alpha-20 的预发布,其中 20 是构建编号。

要发布的 gem #

默认情况下,我们将尝试发布一个与存储库同名的 gem。例如,如果您从 GitHub 存储库 travis-ci/travis-chat 发布 gem,而没有明确指定应用程序的名称,Travis CI 将尝试发布名为 travis-chat 的 gem。

您可以通过 gem 选项明确设置名称

deploy:
  provider: rubygems
  api_key: ...
  gem: my-gem-123

也可以将不同的分支发布到不同的 gem

deploy:
  provider: rubygems
  api_key: ...
  gem:
    master: my-gem
    old: my-gem-old

如果这些 gem 属于不同的 RubyGems 帐户,您将需要对 API 密钥执行相同的操作

deploy:
  provider: rubygems
  api_key:
    master: ...
    old: ...
  gem:
    master: my-gem
    old: my-gem-old

要使用的 gemspec #

如果您愿意,可以使用 gemspec 选项指定其他选项

deploy:
    provider: rubygems
    api_key: ...
    gemspec: my-gemspec.gemspec

要发布的分支 #

如果您有分支特定选项,如 上面所示,Travis CI 将自动确定要发布的分支。否则,它将只从您的 master 分支发布。

您也可以使用 on 选项明确指定要发布的分支

deploy:
  provider: rubygems
  api_key: ...
  on:
    branch: production

或者,您也可以将其配置为从所有分支发布

deploy:
  provider: rubygems
  api_key: ...
  on:
    all_branches: true

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

发布构建工件 #

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

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

deploy:
  provider: rubygems
  api_key: ...
  skip_cleanup: true

条件发布 #

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

gem 必须事先注册 #

请注意,您上传的 gem 必须事先注册。如果 gem 不存在于其上传到的主机上,则部署将失败。有关详细信息,请参阅 此 GitHub 问题

在发布前后运行命令 #

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

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