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

如何通过GitHub Actions从package.json取版本号推送双标签Docker镜像

实现GitHub Actions推送带版本号的Docker镜像

步骤1:提取package.json中的版本号

在GitHub Actions工作流里,你可以用jq工具直接从package.json读取version字段,并存为环境变量。添加以下步骤:

- name: 获取版本号
  id: get_version
  run: echo "VERSION=$(jq -r '.version' package.json)" >> $GITHUB_ENV

如果你的 runner 没预装jq,可以用actions/github-script替代:

- name: 获取版本号
  id: get_version
  uses: actions/github-script@v6
  with:
    script: |
      const fs = require('fs');
      const packageJson = JSON.parse(fs.readFileSync('package.json', 'utf8'));
      core.exportVariable('VERSION', packageJson.version);

步骤2:构建并推送双标签镜像

修改现有构建推送步骤,给镜像同时打上latest和${{ env.VERSION }}两个标签,一次性完成推送:

- name: 登录Docker仓库
  uses: docker/login-action@v3
  with:
    username: ${{ secrets.DOCKER_USERNAME }}
    password: ${{ secrets.DOCKER_PASSWORD }}

- name: 构建并推送镜像
  uses: docker/build-push-action@v5
  with:
    context: .
    push: true
    tags: |
      my-app:latest
      my-app:${{ env.VERSION }}

完整工作流示例

整合后的完整工作流片段如下:

name: 构建并推送Docker镜像

on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取代码
        uses: actions/checkout@v4

      - name: 获取版本号
        id: get_version
        run: echo "VERSION=$(jq -r '.version' package.json)" >> $GITHUB_ENV

      - name: 登录Docker仓库
        uses: docker/login-action@v3
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}

      - name: 构建并推送双标签镜像
        uses: docker/build-push-action@v5
        with:
          context: .
          push: true
          tags: |
            my-app:latest
            my-app:${{ env.VERSION }}

关键说明

  • 用$GITHUB_ENV存储版本号,确保后续步骤能直接引用
  • docker/build-push-action支持通过多行tags参数一次指定多个标签,避免重复构建镜像
  • 确保仓库已配置Docker仓库的用户名和密码作为Secrets(DOCKER_USERNAME和DOCKER_PASSWORD)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 20:10:14