前言

经常在需要使用脚本监控仓库是不是有最新的release版本的发布,然后进行自动构建。
如何知道远程的github是发布新的release版本,可以能过脚本来获得。

git ls-remote

作用:查看远程分支。能够列出远程分中的内容。

查看远程所有tag

1
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

查看指定仓库分支

1
git ls-remote http://www.kernel.org/pub/scm/git/git.git master seen rc

5fe978a5381f1fbad26a80e682ddd2a401966740 refs/heads/master
c781a84b5204fb294c9ccc79f8b3baceeb32c061 refs/heads/seen

检查远程

写一个脚本来实现自动检查远端仓库是否有新的release,脚本需要具备:

  1. 过滤指定仓库
  2. 查看最新版本

借助 git ls-remote 来实现。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/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自带的检查远程仓库的功能来实现,加了一些简单判断就可以实现功能。