| ---
|
| name: Docker Publish
|
|
|
| on:
|
| workflow_dispatch:
|
| push:
|
| branches:
|
| - main
|
| tags:
|
| - v*
|
| - "*"
|
|
|
| env:
|
| REGISTRY: ghcr.io
|
| DOCKER_IMAGE: ghcr.io/${{ github.repository }}
|
| BUILD_TARGET: bolt-ai-production
|
|
|
| jobs:
|
| docker-build-publish:
|
| runs-on: ubuntu-latest
|
| steps:
|
| - name: Checkout
|
| uses: actions/checkout@v4
|
|
|
| - id: string
|
| uses: ASzc/change-string-case-action@v6
|
| with:
|
| string: ${{ env.DOCKER_IMAGE }}
|
|
|
| - name: Docker meta
|
| id: meta
|
| uses: crazy-max/ghaction-docker-meta@v5
|
| with:
|
| images: ${{ steps.string.outputs.lowercase }}
|
| flavor: |
|
| latest=true
|
| prefix=
|
| suffix=
|
| tags: |
|
| type=semver,pattern={{version}}
|
| type=pep440,pattern={{version}}
|
| type=ref,event=tag
|
| type=raw,value={{sha}}
|
|
|
| - name: Set up QEMU
|
| uses: docker/setup-qemu-action@v3
|
|
|
| - name: Set up Docker Buildx
|
| uses: docker/setup-buildx-action@v3
|
|
|
| - name: Login to Container Registry
|
| uses: docker/login-action@v3
|
| with:
|
| registry: ${{ env.REGISTRY }}
|
| username: ${{ github.actor }}
|
| password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
| - name: Build and push
|
| uses: docker/build-push-action@v6
|
| with:
|
| context: .
|
| file: ./Dockerfile
|
| target: ${{ env.BUILD_TARGET }}
|
| push: true
|
| tags: ${{ steps.meta.outputs.tags }}
|
| labels: ${{ steps.meta.outputs.labels }}
|
| cache-from: type=registry,ref=${{ steps.string.outputs.lowercase }}:latest
|
| cache-to: type=inline
|
|
|
| - name: Check manifest
|
| run: |
|
| docker buildx imagetools inspect ${{ steps.string.outputs.lowercase }}:${{ steps.meta.outputs.version }}
|
|
|
| - name: Dump context
|
| if: always()
|
| uses: crazy-max/ghaction-dump-context@v2
|
|
|