如何使用 git CLI 获取最新版本
Posted
技术标签:
【中文标题】如何使用 git CLI 获取最新版本【英文标题】:how can I use git CLI to get the latest release 【发布时间】:2016-04-26 06:44:21 【问题描述】:我想使用 gitHub“发布”功能告诉我的生产服务器何时应该从 GitHub 更新其代码库。 我不希望它在每次推送时都抓取,而只是在创建新版本时抓取。
我的计划是创建一个 bash 脚本,它每 10-15 分钟检查一次是否有新版本,如果找到新版本,它将执行拉取请求或下载最新版本的 zip 文件,部署新版本代码并重新启动节点服务。
但我被困在第一步,这就是我如何确定是否有新版本。
任何帮助/指针或方向将不胜感激。
【问题讨论】:
我忘记提及的一件重要事情是它是一个私有 GitHub。 【参考方案1】:正如我在“GitHub latest release”中提到的,您有一个专用于获取最新版本的 API。
GET /repos/:owner/:repo/releases/latest
您可以将它(与appropriate authentication 和right scope 一起使用)用于私人回购。
如果您缓存最新版本,则每次新的最新版本与您缓存的版本不同时,您都可以触发您的流程。
【讨论】:
【参考方案2】:在 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
。
对于私人项目,您需要正确地进行身份验证和范围,如另一个答案中所述。
【讨论】:
【参考方案3】:CLI gh release list
命令可以显示发布日期
【讨论】:
以上是关于如何使用 git CLI 获取最新版本的主要内容,如果未能解决你的问题,请参考以下文章