diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..cbaae10 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,70 @@ +name: Build Image + +on: + push: + paths-ignore: + - 'README.md' + pull_request: + paths-ignore: + - 'README.md' + schedule: + - cron: '0 20 * * 5' + +jobs: + build: + + runs-on: ubuntu-latest + + env: + BUILDKIT_HOST: tcp://0.0.0.0:1234 + DOCKER_CLI_EXPERIMENTAL: enabled + DOCKER_IMAGE: hass-wheel-builder + DOCKER_TAG: latest + PLATFORM_1: amd64 + PLATFORM_2: arm + PLATFORM_3: arm64 + REPO: tobbenb/hass-wheel-builder-test + + steps: + - uses: actions/checkout@v1 + - name: Getting buildkit + run: | + sudo docker run --privileged linuxkit/binfmt:v0.7 + sudo docker run -d --privileged -p 1234:1234 --name buildkit moby/buildkit:latest --addr tcp://0.0.0.0:1234 \ + --oci-worker-platform linux/${PLATFORM_1} \ + --oci-worker-platform linux/${PLATFORM_2} \ + --oci-worker-platform linux/${PLATFORM_3} + sudo docker cp buildkit:/usr/bin/buildctl /usr/bin/ + + - name: Build amd64 + env: + DOCKERFILE_LOCATION: ./Dockerfile.amd64 + run: | + buildctl build --frontend dockerfile.v0 \ + --opt platform=linux/${PLATFORM_1} \ + --opt filename=./${DOCKERFILE_LOCATION} \ + --output type=docker,name=${REPO}:${DOCKER_TAG}-${PLATFORM_1} \ + --local dockerfile=. \ + --local context=. | docker load + + - name: Build armhf + env: + DOCKERFILE_LOCATION: ./Dockerfile.armhf + run: | + buildctl build --frontend dockerfile.v0 \ + --frontend-opt platform=linux/${PLATFORM_2} \ + --frontend-opt filename=./${DOCKERFILE_LOCATION} \ + --output type=docker,name=${REPO}:${DOCKER_TAG}-${PLATFORM_2} \ + --local dockerfile=. \ + --local context=. | docker load + + - name: Build arm64 + env: + DOCKERFILE_LOCATION: ./Dockerfile.arm64 + run: | + buildctl build --frontend dockerfile.v0 \ + --frontend-opt platform=linux/${PLATFORM_3} \ + --frontend-opt filename=./${DOCKERFILE_LOCATION} \ + --output type=docker,name=${REPO}:${DOCKER_TAG}-${PLATFORM_3} \ + --local dockerfile=. \ + --local context=. | docker load