diff --git a/.github/workflows/compile-docker.yml b/.github/workflows/compile-docker.yml index 48b24ab..16c405e 100644 --- a/.github/workflows/compile-docker.yml +++ b/.github/workflows/compile-docker.yml @@ -7,7 +7,7 @@ jobs: main: strategy: matrix: - args: [arm64, amd64] + arch: [arm64, amd64] runs-on: ubuntu-20.04 permissions: packages: write @@ -39,22 +39,74 @@ jobs: images: | nebraltd/hm-miner ghcr.io/${{ github.repository }} - flavor: | - latest=true tags: | - type=sha,prefix=${{ matrix.args }}- - type=sha,format=long,prefix=${{ matrix.args }}- - type=ref,event=tag,prefix=${{ matrix.args }}- - type=raw,value=${{ matrix.args }}-latest + type=sha,prefix=${{ matrix.arch }}- + type=sha,format=long,prefix=${{ matrix.arch }}- + type=ref,event=tag,prefix=${{ matrix.arch }}- + type=raw,value=${{ matrix.arch }}-latest - name: Build and push id: docker_build uses: docker/build-push-action@v3 with: - build-args: BUILD_ARCH=${{ matrix.args }} + build-args: BUILD_ARCH=${{ matrix.arch }} push: true labels: ${{ steps.meta.outputs.labels }} tags: ${{ steps.meta.outputs.tags }} + cache-from: type=registry,ref=nebraltd/hm-miner:buildcache + cache-to: type=registry,ref=nebraltd/hm-miner:buildcache,mode=max - name: Image digest run: echo ${{ steps.docker_build.outputs.digest }} + + multiarch: + needs: main + runs-on: ubuntu-20.04 + permissions: + packages: write + contents: read + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Log in to the Container registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v4 + with: + images: | + nebraltd/hm-miner + ghcr.io/${{ github.repository }} + flavor: | + latest=true + tags: | + type=sha,prefix= + type=sha,format=long,prefix= + + - name: Create multi-arch images + run: | + tags=(${{ steps.meta.outputs.tags }}) + docker buildx imagetools create -t ${tags[0]} -t ${tags[1]} -t ${tags[2]} nebraltd/hm-miner:arm64-${{ github.sha }} nebraltd/hm-miner:amd64-${{ github.sha }} + docker buildx imagetools create -t ${tags[3]} -t ${tags[4]} -t ${tags[5]} ghcr.io/nebraltd/hm-miner:arm64-${{ github.sha }} ghcr.io/nebraltd/hm-miner:amd64-${{ github.sha }} + + - name: Update repo description + uses: peter-evans/dockerhub-description@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + short-description: ${{ github.event.repository.description }}