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