name: "Release docker images from release" on: workflow_dispatch: inputs: release_tag: description: 'The release tag to build containers for (preview or x.y.z)' required: true jobs: build_docker_image: name: Build docker images runs-on: ubuntu-latest permissions: contents: read packages: write strategy: matrix: bin: [maker,taker] env: GITHUB_TOKEN: ${{ secrets.ITCHY_GITHUB_TOKEN }} steps: - name: Checkout tagged commit uses: actions/checkout@v2.4.0 with: ref: ${{ github.event.inputs.release_tag }} - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up docker buildx uses: docker/setup-buildx-action@v1 - name: Login into github registry uses: docker/login-action@v1.10.0 with: registry: ghcr.io username: ${{ github.repository }} password: ${{ secrets.GITHUB_TOKEN }} - name: Download release run: | gh release download ${{ github.event.inputs.release_tag }} -p '${{matrix.bin}}*Linux_x86_64*' -p '${{matrix.bin}}*aarch64*' -p '${{matrix.bin}}*armv7*' - name: Unpack archives run: | # We need to extract into sub folders to so that our dockerimage can fine the binaries. # # By providing `platform` to `docker buildx` the variable `TARGETPLATFORM` will be available # when building the image. This variable is either # `linux/amd64/`, `linux/arm64/` or `linux/arm/v7`. Hence we need to extract into subfolders. 7z x ${{matrix.bin}}_${{ github.event.inputs.release_tag }}_Linux_aarch64.tar -olinux/arm64/ 7z x ${{matrix.bin}}_${{ github.event.inputs.release_tag }}_Linux_x86_64.tar -olinux/amd64/ 7z x ${{matrix.bin}}_${{ github.event.inputs.release_tag }}_Linux_armv7.tar -olinux/arm/v7 - name: Build docker image for ${{matrix.bin}} run: | VERSION=${{ github.event.inputs.release_tag }} if [ "$VERSION" = "preview" ]; then VERSION=latest fi docker buildx build \ --push \ --platform linux/amd64,linux/arm64,linux/arm/v7 \ --label "org.opencontainers.image.source https://github.com/${{ github.repository }}" \ --tag ghcr.io/${{ github.repository }}/${{matrix.bin}}:${VERSION} \ --build-arg BINARY_PATH=${{matrix.bin}} \ .