GitOps场景下如何将Git日志标签同步至另一仓库的values.yaml
自动更新Chart镜像标签实现ArgoCD自动部署方案
核心思路
在仓库A的GitHub Action镜像构建、推送至ECR成功后,新增流水线步骤直接拉取仓库B代码,修改values.yaml中的镜像标签字段后提交推送,触发ArgoCD自动同步新镜像到EKS集群。
前置准备
- 生成具备仓库B读写权限的GitHub Personal Access Token(PAT),将该token存入仓库A的Secrets中,命名为
GH_PAT_FOR_REPO_B - 确认仓库B中values.yaml的镜像标签字段路径,通用场景下为
image.tag,可根据你的实际配置调整 - 提前确认你构建镜像时生成的标签已存储为GitHub Action环境变量,例如命名为
IMAGE_TAG
流水线修改步骤
在仓库A现有的镜像构建、推送ECR的步骤之后,新增如下配置:
- name: 拉取仓库B代码 uses: actions/checkout@v4 with: repository: 你的GitHub用户名/仓库B名称 token: ${{ secrets.GH_PAT_FOR_REPO_B }} path: repo-b - name: 更新values.yaml镜像标签 run: | # 若运行环境未预装yq可提前执行安装命令配置 cd repo-b # 按实际字段路径调整,此处以image.tag为例 yq eval ".image.tag = \"${{ env.IMAGE_TAG }}\"" -i values.yaml - name: 提交修改到仓库B run: | cd repo-b git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" git add values.yaml git commit -m "更新镜像标签为 ${{ env.IMAGE_TAG }}" git push
注意事项
- 若仓库B开启了分支保护规则,需要给PAT配置对应分支的提交权限,或者允许GitHub Action机器人绕过分支保护
- 如果你有多环境的values配置文件(如values-prod.yaml、values-test.yaml),对应修改操作的文件名即可
- 提交信息可根据你的团队规范自定义调整
内容的提问来源于stack exchange,提问作者user16764089
相关产品推荐
相关产品推荐

