【问题标题】:how can I use git CLI to get the latest release如何使用 git CLI 获取最新版本
【发布时间】:2016-04-26 06:44:21
【问题描述】:

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

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

但我被困在第一步,这就是我如何确定是否有新版本。

任何帮助/指针或方向将不胜感激。

【问题讨论】:

  • 我忘记提及的一件重要事情是它是一个私有 GitHub。

标签: git bash github command-line-interface


【解决方案1】:

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

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

您可以将它(与appropriate authenticationright 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 命令可以显示发布日期

      【讨论】:

        猜你喜欢
        • 2010-11-15
        • 2021-02-24
        • 2011-02-25
        • 2017-01-17
        • 1970-01-01
        • 1970-01-01
        • 2013-01-27
        • 2012-11-21
        • 1970-01-01
        相关资源
        最近更新 更多