如何使用脚本在 GitHub 上发布构建工件资产?

2024-05-18

我正在尝试找出一种在 GitHub 上生成构建的单命令流程。

我预计要做的是运行某种命令,比如 make release,make release 脚本会构建发布工件,然后以某种方式将其上传到 GitHub。

然而,我对如何在 GitHub 上实际获取发布工件感到相当困惑。源代码很棒,但并不是每个人都想自己构建。 :-)


2022 年更新:官方 GitHub CLI 附带gh release upload https://cli.github.com/manual/gh_release_upload

将资产文件上传到 GitHub 版本。

您可以先使用以下命令创建版本gh release create https://cli.github.com/manual/gh_release_create

Upload all tarballs in a directory as release assets
$ gh release create v1.2.3 ./dist/*.tgz

Upload a release asset with a display label
$ gh release create v1.2.3 '/path/to/asset.zip#My display label'

2013 年 9 月更新 http://developer.github.com/changes/2013-09-25-releases-api/, 你可以自动化发布 (预览模式下的 API http://developer.github.com/v3/repos/releases/#preview-mode)

2014 年 1 月更新 https://github.com/aktau/github-release,有一个非官方的命令行应用程序,名为github-发布 https://github.com/aktau/github-release by 尼古拉斯·希勒格尔(aktau) https://github.com/aktau,用于创建版本和上传(二进制)工件。
它使用上面提到的新的 github 发布 API。看着那(这Makefile https://github.com/aktau/github-release/blob/master/Makefile了解该项目,了解如何进一步实现自动化。

Example:

# create a formal release
$ github-release release \
    --user aktau \
    --repo gofinance \
    --tag v0.1.0 \
    --name "the wolf of source street" \
    --description "Not a movie, contrary to popular opinion. Still, my first release!" \
    --pre-release

由于二进制资产的原因,此 API 略有不同。请求发布资产时,我们使用 Accept 标头进行内容协商。
传递标准 API 媒体类型以获取 API 表示:

$ curl -i -H "Authorization: token TOKEN" \
     -H "Accept: application/vnd.github.manifold-preview" \
     "https://uploads.github.com/repos/hubot/singularity/releases/assets/123"

HTTP/1.1 200 OK

{
  "id": 123,
...
}

通过“application/octet-stream”来下载二进制内容。

$ curl -i -H "Authorization: token TOKEN" \
     -H "Accept: application/octet-stream" \
     "https://uploads.github.com/repos/hubot/singularity/releases/assets/123"

HTTP/1.1 302 Found

上传是通过对同伴的单个请求来处理的“uploads.github.com“ 服务。

$ curl -H "Authorization: token TOKEN" \
     -H "Accept: application/vnd.github.manifold-preview" \
     -H "Content-Type: application/zip" \
     --data-binary @build/mac/package.zip \
     "https://uploads.github.com/repos/hubot/singularity/releases/123/assets?name=1.0.0-mac.zip"

更新日期 2013 年 7 月 2 日 https://github.com/blog/1547-release-your-software,你现在可以定义一个版本.

  • 版本均附有发行说明以及下载软件或源代码的链接。
  • 遵循许多 Git 项目的惯例,版本与 Git 标签相关联。您可以使用现有标签,或者让版本在发布时创建该标签。
  • 您还可以将二进制资产(例如编译的可执行文件、缩小的脚本、文档)附加到发行版。发布后,任何可以查看存储库的人都可以使用发布详细信息和资产。

这就是取代的旧的二进制上传服务 https://stackoverflow.com/q/6978954/6309,这是2012 年 12 月删除 https://github.com/blog/1302-goodbye-uploads!


make 发布脚本构建发布工件,然后以某种方式将其上传到 github。

这意味着将其(“它”是由一个或多个文件组成的交付,通常包括二进制文件)添加到常规本地存储库,然后将该存储库推送到其匹配的 GitHub 存储库。

话虽这么说,在任何“发布”任务中都没有提及 GitHub 的原因是因为 Git 是一个source控制管理系统,并且不适合二进制文件。

当然,它可以拥有这些文件(二进制文件),但不会定期拥有它们,因为一段时间后存储库的大小会变得臃肿:每次克隆将花费越来越长的时间。
See Git 的限制是什么 https://stackoverflow.com/questions/984707/what-are-the-git-limits/984973#984973, 并且 ”git - 源文件和存储库应该在同一台机器上吗? https://stackoverflow.com/questions/5081074/git-should-source-files-and-repository-be-on-the-same-machine/5081959#5081959".

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用脚本在 GitHub 上发布构建工件资产? 的相关文章

随机推荐

  • 如何对联合进行零初始化?

    考虑以下代码 struct T int a union struct int a s1 struct char b 1024 s2 int main T x T 由于调用了显式构造函数 因此上述代码最终将 x 中的所有数据成员进行零初始化
  • 无法在 .net core 2 中从 MySQL 构建“日期”类型列

    我已经开始了一个新的 net core 2 项目 我正在尝试将 MySQL 数据库导入实体框架 我使用此命令来搭建数据库 Scaffold DbContext server localhost port 3306 user id user
  • 如何使信号量超时

    Go 中的信号量是通过通道来实现的 一个例子是这样的 https sites google com site gopatterns concurrency semaphores https sites google com site gop
  • SocketException:主机查找失败:“...com”(操作系统错误:未提供节点名或服务名,或未知,errno = 8)

    我们面临的情况是 生产应用程序面临以下套接字异常 并且在此之后无法执行任何其他网络操作 DioError DioErrorType DEFAULT SocketException Failed host lookup xyz abc com
  • 删除 woocommerce 店面主页标题 php

    我正在使用 woocommerce 的店面主题 我需要用 php 删除主页标题 h1 我知道 css 解决方案 但我不想使用它 因为我想将 h1 添加到该页面的其他位置 并且在一个页面中包含 2 个 h1 对 seo 不利页 我也知道删除页
  • Django、模板、for 循环和循环

    tl 博士在底部 让我尝试解释一下我想要完成的任务 我有一个二维数组 我想以某种方式显示其内容 我想要 行 并且每行只能显示不超过三个 对象 因为缺乏更好的词 所以我想迭代该数组并在此过程中创建 HTML 我的想法是这样的 数组中的每个 三
  • 如何访问android库项目中的资源

    我正在构建一个 android 库项目 它内部需要一些静态资源 图像 xml 等 然后我想知道我可以把这些资源放在哪里以及如何访问它们 既然我把资源放到了assets文件夹 我使用 AssetManager 来访问资源 public cla
  • 什么是WINVER?

    我正在查看一些代码 他们有这一行 define WINVER 0x0501 in stdafx h文件 为什么需要定义WINVER 它如何影响您的代码 有人可以解释一下吗 WINVER 确定构建应用程序所需的最低平台 SDK 这反过来又会在
  • Django:测试客户端的上下文在 shell 中为空

    我无法访问context的属性HttpResponse来自 ipython 的对象 但单元测试访问context 这是单元测试 测试运行正常通过 from django test import Client TestCase from dj
  • 如何在 Google 文档之间复制内容和格式?

    我需要复制 Google 文档的内容 并将其附加到另一个文档 如果我使用这样的东西 newDoc getBody appendParagraph template getText 我得到了文本 但丢失了原始文件中的格式 Bold Itali
  • 在 C# 中执行基于存储过程的查询后,如何重新使用 CommandText 的 SqlCommand 对象?

    我有一个示例代码 aCommand CommandType CommandType StoredProcedure aCommand Parameters AddWithValue book id bookID aCommand Param
  • 从特定 IP 地址发送 SOAP 请求

    我有一个具有多个 IP 地址的系统 但我只能从一个 IP 地址发起 SOAP 请求 我如何在 VB NET 中获得它 我从来没有这样做过 看起来很复杂 首先 阅读自定义 ASMX 客户端代理的方法 http johnwsaunders3 w
  • 错误域=AVFoundationErrorDomain代码=-11814“无法记录”

    它不断给我错误 错误域 AVFoundationErrorDomain代码 11814 无法记录 我不确定问题是什么 我试图在拍照后计数器达到 1 时录制声音 static int counter counter will always b
  • chown:不允许操作

    我有问题 我需要通过 php 脚本为系统中的不同用户设置文件所有者权限 所以我通过以下命令执行此操作 其中 1002 是系统的用户 ID file put contents filename content system chown 100
  • 当查询返回空结果集时使用 jdbc:outbound-gateway 时出现问题

    我注意到以下意外行为 并且可以使用 Spring Integration 示例 basic jdbc 重现它 运行 Spring Integration 示例 basic jdbc 并立即尝试查找不存在的名称 即使用 Spring Inte
  • jruby 的路边(卷曲)?

    我正在尝试将curl 与jruby 结合使用来获得网页 文件的一些响应时间 通常在 ruby 中这不会是一个问题 我可以安装 gem gem install junction 一切都很好 遏制似乎与 jruby 不兼容 那么有没有一种替代方
  • Android:我可以创建一个不是矩形的视图/画布吗?圆形的?

    我有一个圆形视图 悬停在主要内容上方 gt 从屏幕出来的 z 轴方向 当有人点击屏幕时 我希望选择主要内容或悬停在上方的视图 当它覆盖主视图时 到目前为止效果很好 我在透明画布上有一个圆形物品 这意味着您可以看到该圆圈之外的背景的所有内容
  • 在 Java(TM) Platform SE 二进制文件中打开

    我尝试删除一个文件 其中有两个文件 其中一个略有更改 因此我可以删除旧文件并将其替换为我更改的新文件 当我尝试删除该文件时 收到错误消息 文件正在使用 其中表示该操作无法完成 因为该文件是在 Java TM Platform SE 二进制文
  • 确定 Objective-C 方法在运行时是否是可变的

    有没有办法在运行时找出给定方法是否是可变参数类型 就像是method getTypeEncoding 这不会告诉我一个方法是否接受可变数量的参数 或者有什么技巧可以告诉我们吗 罗伯特的评论是正确的 考虑 interface Boogity
  • 如何使用脚本在 GitHub 上发布构建工件资产?

    我正在尝试找出一种在 GitHub 上生成构建的单命令流程 我预计要做的是运行某种命令 比如 make release make release 脚本会构建发布工件 然后以某种方式将其上传到 GitHub 然而 我对如何在 GitHub 上