Spaces:
Sleeping
Sleeping
| name: π³ Build & Push Docker Image | |
| on: | |
| workflow_call: | |
| inputs: | |
| tag: | |
| description: "Release tag" | |
| required: true | |
| type: string | |
| env: | |
| GHCR_REGISTRY: ghcr.io | |
| GHCR_IMAGE_NAME: ${{ github.repository_owner }}/picoclaw | |
| DOCKERHUB_REGISTRY: docker.io | |
| DOCKERHUB_IMAGE_NAME: ${{ vars.DOCKERHUB_REPOSITORY }} | |
| jobs: | |
| build: | |
| name: ποΈ Build Docker Image | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| packages: write | |
| steps: | |
| # ββ Checkout ββββββββββββββββββββββββββββββ | |
| - name: π₯ Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ inputs.tag }} | |
| # ββ 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 Docker Hub ββββββββββββββββββββ | |
| - name: π Login to Docker Hub | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ${{ env.DOCKERHUB_REGISTRY }} | |
| username: ${{ secrets.DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.DOCKERHUB_TOKEN }} | |
| # ββ Metadata (tags & labels) ββββββββββββββ | |
| - name: π·οΈ Prepare image tags | |
| id: tags | |
| shell: bash | |
| run: | | |
| tag="${{ inputs.tag }}" | |
| echo "ghcr_tag=${{ env.GHCR_REGISTRY }}/${{ env.GHCR_IMAGE_NAME }}:${tag}" >> "$GITHUB_OUTPUT" | |
| echo "ghcr_latest=${{ env.GHCR_REGISTRY }}/${{ env.GHCR_IMAGE_NAME }}:latest" >> "$GITHUB_OUTPUT" | |
| echo "dockerhub_tag=${{ env.DOCKERHUB_REGISTRY }}/${{ env.DOCKERHUB_IMAGE_NAME }}:${tag}" >> "$GITHUB_OUTPUT" | |
| echo "dockerhub_latest=${{ env.DOCKERHUB_REGISTRY }}/${{ env.DOCKERHUB_IMAGE_NAME }}:latest" >> "$GITHUB_OUTPUT" | |
| # ββ Build & Push ββββββββββββββββββββββββββ | |
| - name: π Build and push Docker image | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: . | |
| push: true | |
| tags: | | |
| ${{ steps.tags.outputs.ghcr_tag }} | |
| ${{ steps.tags.outputs.ghcr_latest }} | |
| ${{ steps.tags.outputs.dockerhub_tag }} | |
| ${{ steps.tags.outputs.dockerhub_latest }} | |
| cache-from: type=gha | |
| cache-to: type=gha,mode=max | |
| platforms: linux/amd64,linux/arm64,linux/riscv64 | |