shell--检查github最新release

2023-10-20 12:21:53 浏览数 (3)

前言

经常在需要使用脚本监控仓库是不是有最新的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,脚本需要具备:

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

借助 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自带的检查远程仓库的功能来实现,加了一些简单判断就可以实现功能。

0 人点赞