feat: 重构为基于汉化版镜像 + 三仓库CI推送 + 版本锁定2026.3.7-zh.2 #7
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build and Push Docker Images | |
| on: | |
| push: | |
| tags: | |
| - 'v*' | |
| workflow_dispatch: | |
| inputs: | |
| openclaw_zh_tag: | |
| description: '汉化版基础镜像标签(如 2026.3.7-zh.2)' | |
| required: false | |
| default: '' | |
| env: | |
| GHCR_REGISTRY: ghcr.io | |
| TENCENT_REGISTRY: ccr.ccs.tencentyun.com | |
| DOCKERHUB_REGISTRY: docker.io | |
| IMAGE_NAME: qingchencloud/openclaw | |
| jobs: | |
| build-and-push: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| packages: write | |
| strategy: | |
| matrix: | |
| include: | |
| - target: full | |
| dockerfile: full/Dockerfile | |
| tag_suffix: "" | |
| - target: gateway | |
| dockerfile: gateway/Dockerfile | |
| tag_suffix: "-gateway" | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| # 读取 VERSION 文件获取锁定的基础镜像版本 | |
| - name: Read VERSION file | |
| id: version | |
| run: | | |
| # 从 VERSION 文件读取默认值 | |
| ZH_TAG=$(grep '^OPENCLAW_ZH_TAG=' VERSION | cut -d= -f2) | |
| # workflow_dispatch 可覆盖 | |
| INPUT_TAG="${{ github.event.inputs.openclaw_zh_tag }}" | |
| if [ -n "$INPUT_TAG" ]; then | |
| ZH_TAG="$INPUT_TAG" | |
| fi | |
| echo "zh_tag=${ZH_TAG}" >> $GITHUB_OUTPUT | |
| # 从 git tag 提取版本号 | |
| OUR_VERSION="latest" | |
| if [[ "$GITHUB_REF" == refs/tags/v* ]]; then | |
| OUR_VERSION="${GITHUB_REF#refs/tags/v}" | |
| fi | |
| echo "our_version=${OUR_VERSION}" >> $GITHUB_OUTPUT | |
| echo "基础镜像: 1186258278/openclaw-zh:${ZH_TAG}" | |
| echo "输出版本: ${OUR_VERSION}" | |
| - name: Set up QEMU (multi-arch) | |
| uses: docker/setup-qemu-action@v3 | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| # ── 登录三个仓库 ── | |
| - name: Login to GHCR | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ${{ env.GHCR_REGISTRY }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Login to Docker Hub | |
| uses: docker/login-action@v3 | |
| with: | |
| username: ${{ secrets.DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.DOCKERHUB_TOKEN }} | |
| - name: Login to Tencent Cloud TCR | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ${{ env.TENCENT_REGISTRY }} | |
| username: ${{ secrets.TCR_USERNAME }} | |
| password: ${{ secrets.TCR_PASSWORD }} | |
| # ── 生成标签 ── | |
| - name: Generate tags | |
| id: tags | |
| run: | | |
| SUFFIX="${{ matrix.tag_suffix }}" | |
| VER="${{ steps.version.outputs.our_version }}" | |
| # 三个仓库都推 latest 标签 | |
| TAGS="${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}:latest${SUFFIX}" | |
| TAGS="${TAGS},${{ env.DOCKERHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:latest${SUFFIX}" | |
| TAGS="${TAGS},${{ env.TENCENT_REGISTRY }}/${{ env.IMAGE_NAME }}:latest${SUFFIX}" | |
| # 如果有版本号,额外推版本标签 | |
| if [ "$VER" != "latest" ]; then | |
| TAGS="${TAGS},${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}:${VER}${SUFFIX}" | |
| TAGS="${TAGS},${{ env.DOCKERHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${VER}${SUFFIX}" | |
| TAGS="${TAGS},${{ env.TENCENT_REGISTRY }}/${{ env.IMAGE_NAME }}:${VER}${SUFFIX}" | |
| fi | |
| echo "tags=${TAGS}" >> $GITHUB_OUTPUT | |
| echo "推送标签:" | |
| echo "$TAGS" | tr ',' '\n' | sed 's/^/ /' | |
| # ── 构建并推送 ── | |
| - name: Build and push | |
| uses: docker/build-push-action@v5 | |
| with: | |
| context: . | |
| file: ${{ matrix.dockerfile }} | |
| push: true | |
| tags: ${{ steps.tags.outputs.tags }} | |
| platforms: linux/amd64,linux/arm64 | |
| build-args: | | |
| OPENCLAW_ZH_TAG=${{ steps.version.outputs.zh_tag }} | |
| cache-from: type=gha | |
| cache-to: type=gha,mode=max | |
| summary: | |
| needs: build-and-push | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Summary | |
| run: | | |
| echo "✅ 镜像构建并推送成功!" | |
| echo "" | |
| echo "📦 GHCR: ghcr.io/${{ env.IMAGE_NAME }}:latest" | |
| echo "🐳 DockerHub: docker.io/${{ env.IMAGE_NAME }}:latest" | |
| echo "🇨🇳 腾讯云: ${{ env.TENCENT_REGISTRY }}/${{ env.IMAGE_NAME }}:latest" | |
| echo "" | |
| echo "用户一键部署:" | |
| echo " docker run -d -p 1420:1420 -p 18789:18789 -v openclaw-data:/root/.openclaw ghcr.io/${{ env.IMAGE_NAME }}:latest" |