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

或者,您可以使用 usernamepassword

deploy:
  provider: rubygems
  username: <username>
  password: <encrypted password>

状态 #

对 Rubygems 部署的支持 *稳定*。

已知选项 #

使用以下选项进一步配置部署。需要使用 api_keyusernamepassword

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。

拉取请求 #

请注意,拉取请求构建完全跳过部署步骤。

另请参阅 #