From 06c21d8febb86fc08024f9bcabd891ec0e0c676c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E7=92=90=E7=91=B6?= <1347888240@qq.com> Date: Wed, 11 Mar 2026 11:16:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=B7=A5=E4=BD=9C=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/docker-release.yml | 72 ++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 .github/workflows/docker-release.yml diff --git a/.github/workflows/docker-release.yml b/.github/workflows/docker-release.yml new file mode 100644 index 000000000..6cfb359dc --- /dev/null +++ b/.github/workflows/docker-release.yml @@ -0,0 +1,72 @@ +name: 🐳 Build & Push Docker Image + +on: + workflow_dispatch: + inputs: + version: + description: "Image version tag (e.g. v0.2.0, latest)" + required: true + type: string + default: "latest" + +env: + GHCR_REGISTRY: ghcr.io + GHCR_IMAGE_NAME: ${{ github.repository_owner }}/picoclaw + ALIYUN_REGISTRY: registry.cn-beijing.aliyuncs.com + ALIYUN_IMAGE_NAME: ${{ secrets.ALIYUN_NAMESPACE }}/picoclaw + +jobs: + docker-build: + name: 🏗️ Build Docker Image + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + # ── Checkout ────────────────────────────── + - name: 📥 Checkout repository + uses: actions/checkout@v4 + + # ── Docker Buildx ───────────────────────── + - name: 🔧 Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + # ── Login to GHCR ───────────────────────── + - name: 🔑 Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ${{ env.GHCR_REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + # ── Login to Aliyun ─────────────────────── + - name: 🔑 Login to Aliyun Container Registry + uses: docker/login-action@v3 + with: + registry: ${{ env.ALIYUN_REGISTRY }} + username: ${{ secrets.ALIYUN_USERNAME }} + password: ${{ secrets.ALIYUN_PASSWORD }} + + # ── Metadata (tags & labels) ────────────── + - name: 🏷️ Prepare image tags + id: tags + shell: bash + run: | + version="${{ inputs.version }}" + echo "ghcr_tag=${{ env.GHCR_REGISTRY }}/${{ env.GHCR_IMAGE_NAME }}:${version}" >> "$GITHUB_OUTPUT" + echo "aliyun_tag=${{ env.ALIYUN_REGISTRY }}/${{ env.ALIYUN_IMAGE_NAME }}:${version}" >> "$GITHUB_OUTPUT" + + # ── Build & Push ────────────────────────── + - name: 🚀 Build and push Docker image + uses: docker/build-push-action@v6 + with: + context: . + file: ./docker/Dockerfile + push: true + tags: | + ${{ steps.tags.outputs.ghcr_tag }} + ${{ steps.tags.outputs.aliyun_tag }} + cache-from: type=gha + cache-to: type=gha,mode=max + platforms: linux/amd64,linux/arm64,linux/riscv64