Spaces:
Paused
Paused
| name: Build and Push Docker Image | |
| on: | |
| release: | |
| types: | |
| - created | |
| push: | |
| tags: | |
| - "v[0-9]+.[0-9]+.[0-9]+" | |
| workflow_dispatch: | |
| env: | |
| REGISTRY: ghcr.io | |
| jobs: | |
| build: | |
| name: Build and push container | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| packages: write | |
| attestations: write | |
| id-token: write | |
| strategy: | |
| matrix: | |
| target: | |
| - lite | |
| - full | |
| steps: | |
| - name: Free Disk Space (Ubuntu) | |
| uses: jlumbroso/free-disk-space@main | |
| with: | |
| # this might remove tools that are actually needed, | |
| # if set to "true" but frees about 6 GB | |
| tool-cache: true | |
| # all of these default to true, but feel free to set to | |
| # "false" if necessary for your workflow | |
| android: true | |
| dotnet: true | |
| haskell: true | |
| large-packages: true | |
| docker-images: true | |
| swap-storage: true | |
| - name: Set repository and image name | |
| run: | | |
| echo "FULL_IMAGE_NAME=${{ env.REGISTRY }}/${IMAGE_NAME,,}" >>${GITHUB_ENV} | |
| env: | |
| IMAGE_NAME: "${{ github.repository }}" | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| with: | |
| image: tonistiigi/binfmt:latest | |
| platforms: arm64,arm | |
| - name: Set up Docker Buildx | |
| id: buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Set up Docker meta | |
| id: meta | |
| uses: docker/metadata-action@v5 | |
| with: | |
| images: ${{ env.FULL_IMAGE_NAME }} | |
| tags: | | |
| # branch | |
| type=ref,event=branch,suffix=-${{ matrix.target }} | |
| # semver with suffix for lite/full targets | |
| type=semver,pattern={{version}},suffix=-${{ matrix.target }} | |
| # latest tag with suffix for lite/full targets | |
| type=raw,value=latest,enable=${{ startsWith(github.ref, 'refs/tags/') && !contains(github.ref, 'pre') }},suffix=-${{ matrix.target }} | |
| flavor: | | |
| # This is disabled here so we can use the raw form above | |
| latest=false | |
| # Suffix is not used here since there's no way to disable it above | |
| - name: Log in to the Container registry | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ${{ env.REGISTRY }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Build docker image | |
| uses: docker/build-push-action@v6 | |
| with: | |
| file: Dockerfile | |
| context: . | |
| push: true | |
| platforms: linux/amd64, linux/arm64 | |
| tags: | | |
| ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| target: ${{ matrix.target }} | |
| cache-from: type=gha | |
| cache-to: type=gha,mode=max | |