2016-01-20 41 views
2

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

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

但是我被困在第一步,这就是我如何才能弄清楚是否有新版本。

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

+0

我忘记提到的一件重要的事情是它是一个私人GitHub。 – Hadar

回答

3

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

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

你可以用它(与appropriate authenticationright scope)的私人回购协议。

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

0

使用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

对于私人项目,您需要正确认证和范围,如其他答案中所述。