You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions推送Docker镜像到仓库后如何获取SHA值用于K8s部署

问题解答

核心问题答复

github.sha 是 GitHub Actions 内置的全局默认变量,你不需要额外手动设置,也不需要导出为环境变量,整个工作流的所有步骤都可以直接通过 ${{ github.sha }} 调用,它的值是触发当前工作流的 Git 提交对应的 40 位完整哈希值。

现有配置的潜在问题修正

你当前的配置存在两处不匹配的问题,直接运行会找不到镜像:

  • 你在部署步骤中使用 ${{ github.repository }} 作为镜像前缀,这个变量是你的 GitHub 代码仓库地址,和你推送到阿里云的镜像仓库地址不匹配
  • 构建步骤开启了 tag_with_sha: true,该参数生成的镜像标签格式为 sha-<Git SHA前7位>,和 github.sha 的40位完整哈希值不匹配

方案1:直接用完整SHA作为镜像标签(推荐)

修改构建步骤配置,取消 tag_with_sha 参数,手动指定用 github.sha 作为标签:

- name: Build image push to aliyun
  uses: docker/build-push-action@v1
  with:
    registry: ${{ secrets.ALI_DOCKER_HUB_REGISTRY }}
    username: ${{ secrets.ALIYUN_DOCKER_REPO_USER_NAME }}
    password: ${{ secrets.ALIYUN_DOCKER_REPO_USER_PASSWORD }}
    tags: ${{ github.sha }}
    repository: reddwarf-pro/dolphin-post
    path: 'dolphin-post'

对应的部署步骤调整为:

- name: deploy to cluster
  uses: steebchen/kubectl@v2.0.0
  with:
    config: ${{ secrets.KUBE_CONFIG_DATA }}
    command: set image --record deployment/my-app container=${{ secrets.ALI_DOCKER_HUB_REGISTRY }}/reddwarf-pro/dolphin-post:${{ github.sha }}
- name: verify deployment
  uses: steebchen/kubectl@v2.0.0
  with:
    config: ${{ secrets.KUBE_CONFIG_DATA }}
    version: v1.21.0
    command: rollout status deployment/my-app

方案2:保留原有打标规则

如果要保留 tag_with_sha: true 的标签格式,只需要调整部署步骤的镜像标签写法,截取SHA前7位拼接即可:

- name: deploy to cluster
  uses: steebchen/kubectl@v2.0.0
  with:
    config: ${{ secrets.KUBE_CONFIG_DATA }}
    command: set image --record deployment/my-app container=${{ secrets.ALI_DOCKER_HUB_REGISTRY }}/reddwarf-pro/dolphin-post:sha-${{ github.sha.substring(0,7) }}

内容的提问来源于stack exchange,提问作者Dolphin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 23:42:03