diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 720c8f53..80c68b2d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,6 +14,7 @@ on: env: REPO_SLUG_ORIGIN: "moby/buildkit:master" CACHEKEY_BINARIES: "binaries" + PLATFORMS: "linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/s390x,linux/ppc64le" jobs: base: @@ -82,9 +83,40 @@ jobs: env: TEST_COVERAGE: 1 TESTFLAGS: -v --parallel=6 --timeout=20m - CACHEDIR_FROM: /tmp/.buildkit-cache/${{ env.CACHEKEY_BINARIES }} + CACHEDIR_FROM: /tmp/.buildx-cache/${{ env.CACHEKEY_BINARIES }} - name: Send to Codecov uses: codecov/codecov-action@v1 with: file: ./coverage/coverage.txt + + cross: + runs-on: ubuntu-latest + needs: [base] + steps: + - + name: Checkout + uses: actions/checkout@v2 + - + name: Cache ${{ env.CACHEKEY_BINARIES }} + uses: actions/cache@v2 + with: + path: /tmp/.buildx-cache/${{ env.CACHEKEY_BINARIES }} + key: ${{ runner.os }}-buildx-${{ env.CACHEKEY_BINARIES }}-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx-${{ env.CACHEKEY_BINARIES }}- + - + name: Set up QEMU + uses: docker/setup-qemu-action@v1 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + with: + driver-opts: image=${{ env.REPO_SLUG_ORIGIN }} + - + name: Cross + run: | + make cross + env: + TARGETPLATFORM: ${{ env.PLATFORMS }},darwin/amd64,windows/amd64 + CACHEDIR_FROM: /tmp/.buildx-cache/${{ env.CACHEKEY_BINARIES }} diff --git a/Makefile b/Makefile index 2954179a..ea0f95b8 100644 --- a/Makefile +++ b/Makefile @@ -7,6 +7,9 @@ binaries: binaries-cross: EXPORT_LOCAL=cross-out ./hack/cross +cross: + ./hack/cross + install: binaries mkdir -p ~/.docker/cli-plugins cp bin/buildx ~/.docker/cli-plugins/docker-buildx diff --git a/hack/cross b/hack/cross index d1d9b5d9..8dedda92 100755 --- a/hack/cross +++ b/hack/cross @@ -1,20 +1,24 @@ #!/usr/bin/env bash . $(dirname $0)/util +set -e : ${TARGETPLATFORM=linux/amd64,linux/arm/v7,linux/arm64,darwin/amd64,windows/amd64,linux/ppc64le,linux/s390x} -: ${CONTINUOUS_INTEGRATION=} : ${EXPORT_LOCAL=} -set -ex +importCacheFlags="" +if [ "$GITHUB_ACTIONS" = "true" ]; then + if [ -n "$cacheRefFrom" ]; then + importCacheFlags="--cache-from=type=local,src=$cacheRefFrom" + fi +fi exportFlag="" if [ -n "$EXPORT_LOCAL" ]; then - exportFlag="--output=type=local,dest=$EXPORT_LOCAL" + exportFlag="--output=type=local,dest=$EXPORT_LOCAL" fi -progressFlag="" -if [ "$CONTINUOUS_INTEGRATION" == "true" ]; then progressFlag="--progress=plain"; -fi - -buildctl build $progressFlag --frontend=dockerfile.v0 --local context=. --local dockerfile=. --opt platform=$TARGETPLATFORM $exportFlag --opt target=binaries \ No newline at end of file +buildxCmd build $importCacheFlags $exportFlag \ + --target "binaries" \ + --platform "$TARGETPLATFORM" \ + $currentcontext