# Scans, builds and releases a multi-architecture docker image name: 🐳 Build + Publish Multi-Platform Image on: workflow_dispatch: push: branches: ['master'] tags: [v*] paths: - '**.js' - 'src/**' - 'public/**' - 'services/**' - '.github/workflows/docker-build-publish.yml' - 'Dockerfile' concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: packages: write env: DH_IMAGE: ${{ secrets.DOCKER_REPO }} GH_IMAGE: ${{ github.repository_owner }}/${{ github.event.repository.name }} jobs: docker: runs-on: ubuntu-latest permissions: { contents: read, packages: write } if: "!contains(github.event.head_commit.message, '[ci-skip]')" steps: - name: 🛎️ Checkout Repo uses: actions/checkout@v2 - name: 🔖 Get App Version uses: tyankatsu0105/read-package-version-actions@v1 id: package-version - name: 🗂️ Make Docker Meta id: meta uses: docker/metadata-action@v3 with: images: | ${{ env.DH_IMAGE }} ghcr.io/${{ env.GH_IMAGE }} tags: | type=ref,event=tag,prefix=release-,suffix={{tag}} type=semver,pattern={{raw}},value=${{ steps.package-version.outputs.version }} labels: | maintainer=Lissy93 org.opencontainers.image.title=Dashy org.opencontainers.image.description=A self-hosted startpage for your server org.opencontainers.image.documentation=https://dashy.to/docs org.opencontainers.image.authors=Alicia Sykes org.opencontainers.image.licenses=MIT - name: 🔧 Set up QEMU uses: docker/setup-qemu-action@v1 with: platforms: linux/amd64,linux/arm64,linux/arm/v7 - name: 🔧 Set up Docker Buildx uses: docker/setup-buildx-action@v1 id: buildx with: driver-opts: image=moby/buildkit:v0.10.6 - name: 👀 Inspect builder run: | echo "Name: ${{ steps.buildx.outputs.name }}" echo "Endpoint: ${{ steps.buildx.outputs.endpoint }}" echo "Status: ${{ steps.buildx.outputs.status }}" echo "Flags: ${{ steps.buildx.outputs.flags }}" echo "Platforms: ${{ steps.buildx.outputs.platforms }}" - name: 🔑 Login to DockerHub uses: docker/login-action@v1 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: 🔑 Login to GitHub Container Registry uses: docker/login-action@v1 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: 🚦 Check Registry Status uses: crazy-max/ghaction-docker-status@v1 - name: ⚒️ Build and push uses: docker/build-push-action@v2 with: context: . file: ./Dockerfile platforms: linux/amd64,linux/arm64,linux/arm/v7 tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} push: true