如何使用 Git CLI 获取最新版本?

问题描述 投票:0回答:3

我想使用 GitHub“发布”功能来告诉我的生产服务器何时应该从 GitHub 更新其代码库。 我不希望它抓住每次推送,而是在创建新版本时抓住。

我的计划是创建一个 Bash 脚本,每 10-15 分钟检查一次是否有新版本,如果找到新版本,它将执行拉取请求或下载最新版本 ZIP 文件,部署新版本编码并重启节点服务。

但是我被困在第一步了。我如何知道是否有新版本?

git bash github command-line-interface
3个回答
4
投票

正如我在“GitHub 最新版本”中提到的,您有一个专用于获取最新版本的 API。

GET /repos/:owner/:repo/releases/latest

您可以将它(通过适当的身份验证正确的范围)用于私人存储库。

如果您缓存最新版本,则每次新的最新版本与您缓存的版本不同时,您都可以触发流程。


或者 gh 版本列表 显示版本,自 gh 2.18.0(2022 年 11 月)起,带有 列标题:

$ gh release list
TITLE                   TYPE         TAG NAME      PUBLISHED
GitHub CLI 2.18.1       Latest       v2.18.1       about 12 days ago
GitHub CLI 2.18.0                    v2.18.0       about 14 days ago

2
投票

CLI

gh release list
命令可以显示发布日期


1
投票

在curl的帮助下使用bash,您可以使用这一长串从公共存储库获取最新版本:

git clone -b $(basename $(curl -Ls -o /dev/null -w %{url_effective} https://github.com/OWNER/PROJECT/releases/latest)) https://github.com/OWNER/PROJECT.git

像这样的 bash 函数:

gh-clone-latest() {
  local owner=$1 project=$2
  local output_directory=${3:-$owner-$project-release}
  local release_url=$(curl -Ls -o /dev/null -w %{url_effective} https://github.com/$owner/$project/releases/latest)
  local release_tag=$(basename $release_url)
  git clone -b $release_tag -- https://github.com/$owner/$project.git $output_directory
}

会将其减少到

gh-clone-latest Owner Project

对于私人项目,您需要正确进行身份验证并确定范围,如其他答案中所述。

© www.soinside.com 2019 - 2024. All rights reserved.