不知道大家写 bash 脚本或者 Dockerfile 的时候有没有需要从 GitHub 下载 latest releases 来安装的情况?我之前遇到这个问题, google 后发现,比较好的处理思路是从 GitHub API 得到 releases 信息,然后用 jq 来处理 json ,得到目标 latest release 的下载链接。 jq 免去了用 sed 处理 json 的繁琐。
但我总觉得不够纯粹,为了方便地下载 latest release ,我得从 GitHub 先下载 jq (不知道为什么, Alpine apk 的安装包是不带正则处理的版本)。而且,虽然比用 sed 要好,下载的命令还是不那么直观。
于是我做了个小小的工具用来快捷地重定向至下载链接。
demo 搭在 arukas 上
用法:
curl -fLO https://glare.arukascloud.io/{owner}/{repo}/{file_name_regrex}
比如
curl -fLO https://glare.arukascloud.io/xtaci/kcptun/linux-amd64
Arukas beta 结束了,demo 我给换到 now.sh 上了:
用法
curl -fLO https://glare.now.sh/{owner}/{repo}/{file_name_regrex}
比如
curl -fLO https://glare.now.sh/xtaci/kcptun/linux-amd64
1
JhZ7z587cYROBgVQ 2017-01-07 16:11:47 +08:00
如果是 python 的话还有另外一个思路,类似 pip install git+https://github.com/dabeaz/curio.git 这样的操作
|
2
skydiver 2017-01-07 16:28:08 +08:00
|
3
Contextualist OP @jason0916 嗯,假如不介意版本的稳定性的话。这样是从源码直接安装吧
|
4
Contextualist OP @skydiver 是的, jq 那套就是从这里学来的
|
5
skydiver 2017-01-07 16:31:49 +08:00
其实直接访问 https://github.com/stedolan/jq/releases/latest 就会收到一个 302 响应,里面就有最新的版本号
|
6
JhZ7z587cYROBgVQ 2017-01-07 16:41:42 +08:00
@Contextualist 嗯对的,是这样子的,有些仓库里面没设 release 的时候可以考虑这么做,确实有可能不稳定
|
7
Warder 2017-01-07 16:56:47 +08:00
npm 上有个包叫做 github-release , 你能想到的功能估计 npm 上早有实现了,可以去搜搜。
|
8
Contextualist OP |
9
skydiver 2017-01-07 22:42:26 +08:00
@Contextualist 都拿到版本号了,想下载就很轻松的事情
|
10
Contextualist OP @skydiver 哈哈,我人懒啊(摊手
为了每次少思考几分钟,先花了几十分钟写轮子 |
11
Warder 2017-01-08 13:25:36 +08:00 via Android 1
@Contextualist 大部分应该提供了 cli 工具, npm i -g xxx 就能够用了
|
12
livc 2017-01-08 20:20:28 +08:00
有用一些开源软件,直接 RSS 了 release 页面。。有更新就手动去下载
|
13
Remember 2017-03-08 23:31:20 +08:00
curl 了之后 grep tag_name 然后 cut 就好了哇,并不需要 sed 处理
|
14
crystone 2018-04-18 15:53:26 +08:00
now 服务最近不能使用了?
|
15
Contextualist OP |
16
CharlieYu4994 2021-07-09 23:18:10 +08:00
|
17
CharlieYu4994 2021-07-09 23:18:55 +08:00
@skydiver 更进一步,其实 lstest 会被文本替换
|
18
learningman 2021-09-28 11:24:18 +08:00
@CharlieYu4994 #16 现在不行了
|
19
Contextualist OP @CharlieYu4994 @learningman
就目前来说,如果你需要的文件名在不同的 release 中都是一个固定的字符串,那推荐使用 GitHub 官方的直链。但有些仓库(比如 kcptun, frp )的作者会在文件名中包含版本号这种每个 release 都会变化的部分,那我这个的正则匹配还是有用武之地的。 顺带一提,开始写这个东西时,GitHub 还没有针对 latest release 的文件直链。 |