如何在ArgoCD管理的Helm Chart中获取Git提交SHA?
在ArgoCD管理的Helm Chart中获取Git提交SHA值的方法
方案一:用ArgoCD自动注入的内置参数(优先推荐)
ArgoCD会自动给从Git仓库拉取的Helm Chart注入一组内置参数,其中就包含当前拉取版本对应的Git完整提交SHA,直接在Helm模板里引用即可:
- 完整SHA:
{{ .Values.argocd.rev }} - 短SHA(截取前7位,符合镜像标签常见格式):
{{ .Values.argocd.rev | trunc 7 }}
比如在Deployment的镜像配置里这么用:
apiVersion: apps/v1 kind: Deployment spec: template: spec: containers: - name: app image: my-registry.com/my/great-project:{{ .Values.argocd.rev | trunc 7 }}
这个参数不需要你手动在Application里配置,只要你的Application是通过Git repo拉取Helm Chart的,ArgoCD就会自动帮你注入。
方案二:手动在Application中传递SHA参数(适合特殊场景)
如果需要完全手动控制,可以在ArgoCD的Application配置里通过Helm参数传递SHA,但需要你提前获取当前HEAD的提交SHA,每次代码更新后都要同步修改这个配置,比较繁琐:
修改后的Application示例:
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: foo-app namespace: argocd spec: destination: name: some-cluster namespace: foo-namespace project: default source: path: kubernetes/helm repoURL: https://github.com/my/great-project.git targetRevision: HEAD helm: parameters: - name: image.tag value: a1b2c3d # 替换成实际的Git提交SHA
然后在Helm模板里用{{ .Values.image.tag }}引用这个值。
方案三:从Application的状态字段获取(适合脚本或外部工具)
ArgoCD的Application资源的status.source.revision字段会记录实际拉取的Git提交SHA,你可以用kubectl直接查询:
kubectl get application foo-app -n argocd -o jsonpath='{.status.source.revision}'
不过这个方法没法直接在Helm模板里使用,适合脚本自动化或者外部系统获取的场景。
内容的提问来源于stack exchange,提问作者GreNodge
相关产品推荐
相关产品推荐

