0%

shell 脚本获取gradle project 版本

在目前的项目中,我们采用的微服务架构,后端服务主要使用gradle进行依赖管理。我们希望在线上环境出现问题的时候,能够快速的定位是哪一个版本出现了问题。目前没有做应用监控,应用是部署到了Kubernetes集群中的, 因此我们希望通过一条比较简单的命令获取到应用名称、应用版本、应用使用的版本。

获取Gradle Project Version

第一种方案:

1
version="$(./gradlew properties | grep '^version:' | awk '{printf $2}')"

这种方案还是被放弃了。因为需要下载gradlew,而在我们的高环境上,并不能访问外网。

第二种方案:

1
version="$(cat "./build.gradle" | sed "s/=//g" | grep '^version' | awk '{printf $2}' | sed "s/'//g")"

这种方案中,最开始的版本中没有sed "s/=//g",为什么加上这个语句?因为在build.gradle中,可以通过version = 1.0.0或者 version 1.0.0这两种方式设置版本。

获取Kubernetes Deployment的name、version、image

1
kubectl get deploy -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name,"VERSION":".metadata.labels.app\.kubernetes\.io/version","IMAGE":".spec.template.spec.containers[0].image" --selector=app.kubernetes.io/managed-by=Helm -A