很抱歉问这个可能是菜鸟问题。
我是 GitHub 和 DevOps 环境的新手,我的任务是自动化一些东西。我在 GitHub 上发现了一个仍在维护的项目,并且将来会收到新版本。
我想构建一个管道,在其中我需要从 GitHub 下载适合我的特定环境的最新 exe 版本。
目前,他们的 git 存储库中的 /releases/vX.yz 下有发布包(其中 X、y 和 z 是发布版本),其中包含多个包,名称如下:
- package.v1.2.3.linux-amd64.tar.gz (https://github.com/some-example-repo/download/v1.2.3/package.v1.2.3-linux-arm64.tar.gz)
- package.v1.2.3.linux-arm64.tar.gz (https://github.com/some-example-repo/download/v1.2.3/package.v1.2.3-linux-arm64.tar.gz)
- package.v1.2.3.windows-amd64.zip(https://github.com/some-example-repo/download/v1.2.3/package.v1.2.3-windows-amd64.zip)
ETC。
考虑到版本会及时更改,有什么方法可以通过使用某种模式来获取特定的包吗?
庆幸的是链接:https://github.com/some-example-repo/releases/latest重定向到最新发布的版本,所以我在想类似的事情:
wget https://github.com/some-example-repo/download/*????/package.V???*-linux-arm64.tar.gz
想一想,既然我已经把这个作为一个问题了,我认为 wget 不可能自动完成 URL...
答案1
如果您确实想始终下载最新版本,则应该使用GitHub API 用于此目的:
curl https://api.github.com/repos/$USER/$REPO/releases/latest
这将返回一个描述最新版本的 JSON 文档,包括所有工件;您可以使用过滤结果jq
,例如
| jq -r '.assets[].browser_download_url'
提取所有资源下载 URL。
然而在实践中,始终下载最新版本通常是个坏主意,因为任何重大更改都可能会破坏您的 CI。您应该下载特定版本并根据需要手动升级(也许可以自动测试新版本并建议相应的 PR)。