ipfs/ipfs-cluster

View on GitHub
.github/workflows/docker-image.yml

Summary

Maintainability
Test Coverage
name: Publish Docker image

on:
  workflow_dispatch:
  push:
    branches:
      - 'master'
    tags:
      - 'v*'

env:
  REGISTRY: ""
  IMAGE_NAME: ipfs/ipfs-cluster

jobs:
  build-and-push-image:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
      
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Cache Docker layers
        uses: actions/cache@v3
        with:
          path: /tmp/.buildx-cache
          key: ${{ runner.os }}-buildx-${{ github.sha }}
          restore-keys: |
            ${{ runner.os }}-buildx-

      - name: Log in to the Container registry
        uses: docker/login-action@v3
        with:
          # registry: ${{ env.REGISTRY }}
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}

      - name: Get tags
        id: tags
        run: |
          echo "value<<EOF" >> $GITHUB_OUTPUT
          ./docker/get-docker-tags.sh "$(date -u +%F)" >> $GITHUB_OUTPUT
          echo "EOF" >> $GITHUB_OUTPUT
        shell: bash

      - name: Build Docker image and publish to Docker Hub
        uses: docker/build-push-action@v4
        with:
          platforms: linux/amd64,linux/arm/v7,linux/arm64/v8
          context: .
          push: true
          file: ./Dockerfile
          tags: "${{ steps.tags.outputs.value }}"
          cache-from: type=local,src=/tmp/.buildx-cache
          cache-to: type=local,dest=/tmp/.buildx-cache-new

      # https://github.com/docker/build-push-action/issues/252
      # https://github.com/moby/buildkit/issues/1896
      - name: Move cache to limit growth
        run: |
          rm -rf /tmp/.buildx-cache
          mv /tmp/.buildx-cache-new /tmp/.buildx-cache