前言
经常在需要使用脚本监控仓库是不是有最新的release版本的发布,然后进行自动构建。 如何知道远程的github是发布新的release版本,可以能过脚本来获得。
git ls-remote
作用:查看远程分支。能够列出远程分中的内容。
查看远程所有tag
代码语言:javascript复制git ls-remote --tags ./.
结果如下:
d6602ec5194c87b0fc87103ca4d67251c76f233a refs/tags/v0.99 f25a265a342aed6041ab0cc484224d9ca54b6f41 refs/tags/v0.99.1 7ceca275d047c90c0c7d5afb13ab97efdf51bd6e refs/tags/v0.99.3 c5db5456ae3b0873fc659c19fafdde22313cc441 refs/tags/v0.99.2
查看指定仓库分支
代码语言:javascript复制git ls-remote http://www.kernel.org/pub/scm/git/git.git master seen rc
5fe978a5381f1fbad26a80e682ddd2a401966740 refs/heads/master c781a84b5204fb294c9ccc79f8b3baceeb32c061 refs/heads/seen
检查远程
写一个脚本来实现自动检查远端仓库是否有新的release,脚本需要具备:
- 过滤指定仓库
- 查看最新版本
借助 git ls-remote 来实现。
代码语言:javascript复制#!/bin/bash
GITHUB_CLONE_TYPE='HTTPS'
GITHUB_REPOSITORY=''
GITHUB_REPOSITORY_HTTPS_URL='https://github.com/liukai/test.git'
GITHUB_REPOSITORY_SSH_URL='git@github.com:liukai/test.git'
if [[ $GITHUB_CLONE_TYPE == 'HTTPS' ]]; then
GITHUB_REPOSITORY=$GITHUB_REPOSITORY_HTTPS_URL
else
GITHUB_REPOSITORY=$GITHUB_REPOSITORY_SSH_URL
fi
getLatestReleaseVersion() {
full_node_version=`git ls-remote --tags $GITHUB_REPOSITORY | awk -F '/' 'END{print $3}'`
if [[ -n $full_node_version ]]; then
echo $full_node_version
else
echo ''
fi
}
checkVersion() {
github_release_version=$(`echo getLatestReleaseVersion`)
if [[ -n $github_release_version ]]; then
echo "info: github latest version: $github_release_version"
echo $github_release_version
else
echo 'info: not getting the latest version'
exit
fi
}
# 测试调用一下
checkVersion
总结
这个脚本主要是利用git
自带的检查远程仓库的功能来实现,加了一些简单判断就可以实现功能。