diff --git a/.github/workflows/docker_build_push_amd64.yml b/.github/workflows/docker_build_push.yml similarity index 78% rename from .github/workflows/docker_build_push_amd64.yml rename to .github/workflows/docker_build_push.yml index fa016a0..4c2b5b1 100644 --- a/.github/workflows/docker_build_push_amd64.yml +++ b/.github/workflows/docker_build_push.yml @@ -21,6 +21,9 @@ jobs: - name: GitHub Environment run: echo "BRANCH=${GITHUB_REF##*/}" >> $GITHUB_ENV + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 @@ -39,9 +42,11 @@ jobs: tags: | ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:latest file: ./docker/Dockerfile - platforms: linux/amd64 + cache-from: type=gha + cache-to: type=gha,mode=max + platforms: linux/amd64,linux/arm64 - - name: Release build and push x86_64-slim + - name: Release build and push slim if: ${{ env.BRANCH == 'main' }} uses: docker/build-push-action@v4 with: @@ -50,7 +55,9 @@ jobs: tags: | ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:slim, ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:latest-slim file: ./docker/Dockerfile.amd64-slim - platforms: linux/amd64 + cache-from: type=gha + cache-to: type=gha,mode=max + platforms: linux/amd64,linux/arm64 - name: Nightly build and push if: ${{ env.BRANCH == 'develop' }} @@ -61,4 +68,6 @@ jobs: tags: | ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:nightly file: ./docker/Dockerfile - platforms: linux/amd64 + cache-from: type=gha + cache-to: type=gha,mode=max + platforms: linux/amd64,linux/arm64 diff --git a/.github/workflows/docker_build_push_arm64.yml b/.github/workflows/docker_build_push_arm64.yml deleted file mode 100644 index 2fd59d6..0000000 --- a/.github/workflows/docker_build_push_arm64.yml +++ /dev/null @@ -1,64 +0,0 @@ -name: Build and Publish Docker Aarch64 - -on: - push: - branches: - - main - - develop - -jobs: - build_and_push: - runs-on: ubuntu-latest - env: - IMAGE_NAME: rpxy - - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - submodules: recursive - - - name: GitHub Environment - run: echo "BRANCH=${GITHUB_REF##*/}" >> $GITHUB_ENV - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Login to Docker Hub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Release build and push - if: ${{ env.BRANCH == 'main' }} - uses: docker/build-push-action@v4 - with: - context: . - push: true - tags: | - ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:latest - file: ./docker/Dockerfile - platforms: linux/arm64 - - - name: Release build and push aarch64-slim - if: ${{ env.BRANCH == 'main' }} - uses: docker/build-push-action@v4 - with: - context: . - push: true - tags: | - ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:slim, ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:latest-slim - file: ./docker/Dockerfile.arm64-slim - platforms: linux/arm64 - - - name: Nightly build and push - if: ${{ env.BRANCH == 'develop' }} - uses: docker/build-push-action@v4 - with: - context: . - push: true - tags: | - ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:nightly - file: ./docker/Dockerfile - platforms: linux/arm64 diff --git a/docker/Dockerfile b/docker/Dockerfile index fd6d510..95b76aa 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -6,7 +6,7 @@ SHELL ["/bin/sh", "-x", "-c"] ENV SERIAL 2 ######################################## -FROM base as builder +FROM --platform=$BUILDPLATFORM base AS builder ENV CFLAGS=-Ofast ENV BUILD_DEPS curl make ca-certificates build-essential @@ -27,7 +27,7 @@ RUN apt-get update && apt-get install -qy --no-install-recommends $BUILD_DEPS && strip --strip-all /tmp/target/release/rpxy ######################################## -FROM base AS runner +FROM --platform=$TARGETPLATFORM base AS runner ENV RUNTIME_DEPS logrotate ca-certificates gosu diff --git a/docker/Dockerfile.amd64-slim b/docker/Dockerfile.amd64-slim index 12cd261..7d8c366 100644 --- a/docker/Dockerfile.amd64-slim +++ b/docker/Dockerfile.amd64-slim @@ -1,5 +1,5 @@ ######################################## -FROM messense/rust-musl-cross:x86_64-musl as builder +FROM --platform=$BUILDPLATFORM messense/rust-musl-cross:x86_64-musl AS builder ENV TARGET_DIR=x86_64-unknown-linux-musl ENV CFLAGS=-Ofast @@ -15,7 +15,7 @@ RUN echo "Building rpxy from source" && \ musl-strip --strip-all /tmp/target/${TARGET_DIR}/release/rpxy ######################################## -FROM alpine:latest as runner +FROM --platform=$TARGETPLATFORM alpine:latest AS runner LABEL maintainer="Jun Kurihara" ENV TARGET_DIR=x86_64-unknown-linux-musl diff --git a/docker/Dockerfile.arm64-slim b/docker/Dockerfile.arm64-slim index 83b2d16..ff433a2 100644 --- a/docker/Dockerfile.arm64-slim +++ b/docker/Dockerfile.arm64-slim @@ -1,5 +1,5 @@ ######################################## -FROM messense/rust-musl-cross:aarch64-musl as builder +FROM --platform=$BUILDPLATFORM messense/rust-musl-cross:aarch64-musl AS builder ENV TARGET_DIR=aarch64-unknown-linux-musl ENV CFLAGS=-Ofast @@ -15,7 +15,7 @@ RUN echo "Building rpxy from source" && \ musl-strip --strip-all /tmp/target/${TARGET_DIR}/release/rpxy ######################################## -FROM alpine:latest as runner +FROM --platform=$TARGETPLATFORM alpine:latest AS runner LABEL maintainer="Jun Kurihara" ENV TARGET_DIR=aarch64-unknown-linux-musl