From 827cabb427cd2ad5e90c34da4feba08ff66b6e8f Mon Sep 17 00:00:00 2001 From: Veirt Date: Mon, 5 Aug 2024 00:52:59 +0800 Subject: [PATCH] ci: test github action on aarch64 --- .github/workflows/build.yml | 8 +++----- Dockerfile | 3 +-- Dockerfile.aarch64 | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 7 deletions(-) create mode 100644 Dockerfile.aarch64 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index af20dc1..337d81f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,7 +3,7 @@ name: Docker Build on: push: branches: - - "master" + - "ci/optimize-build" tags: - "v*" pull_request: @@ -12,7 +12,7 @@ on: env: REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository }} + IMAGE_NAME: veirt/vesta-test jobs: docker: @@ -24,9 +24,6 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 @@ -54,6 +51,7 @@ jobs: uses: docker/build-push-action@v6 with: context: . + file: Dockerfile.aarch64 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} platforms: linux/amd64,linux/arm64 diff --git a/Dockerfile b/Dockerfile index 5d0b3f3..e1277f7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,8 +7,7 @@ COPY tailwind.config.js . COPY src ./src RUN bunx tailwindcss -i ./src/style.css -o ./out.css --minify -FROM --platform=$TARGETPLATFORM rust:1.80-alpine AS build -ARG TARGETPLATFORM +FROM rust:1.80-alpine AS build RUN apk add musl-dev --no-cache diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 new file mode 100644 index 0000000..162c17f --- /dev/null +++ b/Dockerfile.aarch64 @@ -0,0 +1,37 @@ +FROM --platform=$BUILDPLATFORM oven/bun:1-alpine AS css-builder +WORKDIR /temp +COPY package.json bun.lockb ./ +RUN bun install --frozen-lockfile + +COPY gridPlugin.js tailwind.config.js ./ +COPY src ./src +RUN bunx tailwindcss -i ./src/style.css -o ./out.css --minify + +FROM --platform=$BUILDPLATFORM rust:1.80-alpine AS build + +RUN apk add --no-cache \ + musl-dev \ + build-base \ + llvm \ + clang + +RUN rustup target add aarch64-unknown-linux-musl + +ENV CC_aarch64_unknown_linux_musl=clang \ + CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER=clang + +WORKDIR /usr/src +RUN USER=root cargo new --bin vesta +WORKDIR /usr/src/vesta +COPY Cargo.toml Cargo.lock ./ +COPY src ./src +RUN cargo build --release --target=aarch64-unknown-linux-musl + +FROM scratch + +WORKDIR /app +COPY ./static static +COPY --from=css-builder /temp/out.css ./static/style.css +COPY --from=build /usr/src/vesta/target/aarch64-unknown-linux-musl/release/vesta /app/vesta + +CMD ["/app/vesta"]