Bintray 部署

此页面记录了使用下一个主要版本 dpl v2 的部署,该版本目前处于 Beta 发布阶段。请参阅 我们的博文 获取详细信息。当前默认版本为 dpl v1。请查看 此处提供的 dpl v1 文档

请务必阅读 v2 部署概述

Travis CI 可以在构建成功后自动将构建工件上传到 Bintray

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

deploy:
  provider: bintray
  user: <user>
  key: <encrypted key>
  file: <file>
  edge: true # opt in to dpl v2

状态 #

对 Bintray 部署的支持是 *稳定的*。

已知选项 #

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

用户 Bintray 用户 — **必需**,类型:字符串
密钥 Bintray API 密钥 — **必需**,**机密**,类型:字符串
文件 Bintray 上传描述符文件的路径 — **必需**,类型:字符串
密码 在 Bintray 上配置的密码(如果使用 GPG 签名)— 类型:字符串

共享选项 #

清理 在部署之前清理 Git 工作目录中的构建工件 — 类型:布尔值
运行 在部署成功完成后执行的命令 — 类型:字符串或字符串数组

环境变量 #

如果所有选项以 BINTRAY_ 为前缀,则可以作为环境变量提供。

例如,key 可以作为 BINTRAY_KEY=<key> 提供。

保护机密 #

机密选项值应作为构建配置(.travis.yml 文件)中的加密字符串或存储库设置中的环境变量提供。

环境变量可以在存储库的设置页面上设置,或者使用 travis env set 设置。

travis env set BINTRAY_KEY <key>

为了在将选项值添加到 .travis.yml 文件时对其进行加密,请使用 travis encrypt

travis encrypt <key>

或者使用 --add 直接将其添加到 .travis.yml 文件中。请注意,此命令必须在存储库的根目录中运行。

travis encrypt --add deploy.key <key>

描述符文件 #

描述符采用 JSON 文件格式,分为三个部分。

{
  "package": {
    "name": "auto-upload",
    "repo": "myRepo",
    "subject": "myBintrayUser",
    "desc": "I was pushed completely automatically",
    "website_url": "www.jfrog.com",
    "issue_tracker_url": "https://github.com/bintray/bintray-client-java/issues",
    "vcs_url": "https://github.com/bintray/bintray-client-java.git",
    "github_use_tag_release_notes": true,
    "github_release_notes_file": "RELEASE.txt",
    "licenses": ["MIT"],
    "labels": ["cool", "awesome", "gorilla"],
    "public_download_numbers": false,
    "public_stats": false,
    "attributes": [
       { "name": "att1", "values" : ["val1"], "type": "string" },
       { "name": "att2", "values" : [1, 2.2, 4], "type": "number" },
       { "name": "att5", "values" : ["2014-12-28T19:43:37+0100"], "type": "date" }
    ]
  },
  "version": {
      "name": "0.5",
      "desc": "This is a version",
      "released": "2015-01-04",
      "vcs_tag": "0.5",
      "attributes": [
         { "name": "VerAtt1", "values" : ["VerVal1"], "type": "string" },
         { "name": "VerAtt2", "values" : [1, 3.3, 5], "type": "number" },
         { "name": "VerAtt3", "values" : ["2015-01-01T19:43:37+0100"], "type": "date" }
      ],
      "gpgSign": false
  },
  "files": [
    {
      "includePattern": "build/bin(.*)*/(.*\\.gem)",
      "excludePattern": ".*/do-not-deploy/.*",
      "uploadPattern": "gems/$2"
    },
    {
      "includePattern": "build/docs/(.*)",
      "uploadPattern": "docs/$1",
      "listInDownloads": true
    }
  ],
  "publish": true
}

包部分 #

Bintray 包信息。以下信息在开源项目中是必需的。

  • name 是 Bintray 包名称。
  • repo 是 Bintray 存储库名称。
  • subject 是 Bintray 主题,可以是用户或组织。
  • vcs_url 是 Bintray 版本控制系统 URL,例如 GitHub 存储库 URL。
  • licensesBintray 许可证,它是一个至少包含一个项目的列表。

版本部分 #

包版本信息。如果版本已存在于 Bintray 上,则仅 name 字段是必需的。

文件部分 #

配置要上传到 Bintray 的文件及其上传路径。

您可以定义一个或多个模式组。每个组包含三个模式。

  • includePattern:采用 Ruby 正则表达式形式的模式,指示要上传到 Bintray 的文件路径。如果文件位于根目录中,则指示相对路径:\./
  • excludePattern:可选。采用 Ruby 正则表达式形式的模式,指示要从 includePattern 指定的文件列表中删除的文件路径。
  • uploadPattern:Bintray 上的上传路径。路径可以包含 $1、$2 等形式的符号,这些符号将替换为 include 模式中定义的捕获组。

如果 listInDownloads 设置为 true,则匹配的工件将显示在“下载列表”或“直接下载”中。这只能在发布的版本上执行,因此 publish 应设置为 true

在上面的示例中,上传以下文件:

  • 位于 build/bin/ 下的所有 gem 文件(包括子目录),但 do-not-deploy 目录下的文件除外。这些文件将上传到 Bintray 的 gems 文件夹下。
  • build/docs 下的所有文件。这些文件将上传到 Bintray 的 docs 文件夹下,并显示在项目概述的下载列表中。

作为 includePatternexcludePattern 属性一部分定义的正则表达式必须用括号括起来。

Debian 上传 #

当使用自动索引布局将工件上传到 Bintray 上的 Debian 存储库时,需要 Debian 发行版信息,并且必须指定该信息。该信息在描述符文件中通过 files 闭包中的 matrixParams 指定,如下例所示。

uploadPattern 应符合 bintray 自动布局方案

"files": [
  {
    "includePattern": "build/bin/(.*\.deb)",
    "uploadPattern": "pool/main/m/mypackage/$1",
    "matrixParams": {
      "deb_distribution": "vivid",
      "deb_component": "main",
      "deb_architecture": "amd64"
    }
  }
]

覆盖现有文件 #

如果给定名称的工件已存在于 Bintray 存储库中,则默认情况下不会覆盖它。如果要替换现有文件,请在矩阵属性中定义 override 密钥。

"files": [
  {
    "includePattern": "build/bin/(myfile.bin)",
    "uploadPattern": "$1",
    "matrixParams": {
        "override": 1
    }
  }
]

Pull Request #

请注意,Pull Request 构建完全跳过部署步骤。

另请参阅 #