Skip to content

Commit

Permalink
ci: dockerfile with conditional
Browse files Browse the repository at this point in the history
  • Loading branch information
Veirt committed Aug 5, 2024
1 parent 6496970 commit 6936dce
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 79 deletions.
18 changes: 3 additions & 15 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,26 +46,14 @@ jobs:
type=semver,pattern={{major}}.{{minor}}
type=sha
- name: Build and push x86_64
- name: Build and push
uses: docker/build-push-action@v6
with:
context: .
file: Dockerfile.x86_64
file: Dockerfile
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
platforms: linux/amd64
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Build and push aarch64
uses: docker/build-push-action@v6
with:
context: .
file: Dockerfile.aarch64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
platforms: linux/arm64
platforms: linux/amd64,linux/arm64
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
57 changes: 57 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
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 AS build

RUN apt-get update && apt-get install --no-install-recommends -y \
musl-tools \
&& rm -rf /var/lib/apt/lists/*

ARG TARGETPLATFORM
RUN if [ "$TARGETPLATFORM" = "linux/arm64" ]; then \
apt-get update && apt-get install --no-install-recommends -y \
gcc-aarch64-linux-gnu \
&& rm -rf /var/lib/apt/lists/* \
&& rustup target add aarch64-unknown-linux-musl \
&& echo "export CC_aarch64_unknown_linux_musl=aarch64-linux-gnu-gcc" >> /etc/profile \
&& echo "export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER=aarch64-linux-gnu-gcc" >> /etc/profile; \
elif [ "$TARGETPLATFORM" = "linux/amd64" ]; then \
rustup target add x86_64-unknown-linux-musl; \
else \
echo "Unsupported platform: $TARGETPLATFORM" && exit 1; \
fi

# Set up the build environment
WORKDIR /usr/src
RUN USER=root cargo new --bin vesta
WORKDIR /usr/src/vesta
COPY Cargo.toml Cargo.lock ./
COPY src ./src

RUN if [ "$TARGETPLATFORM" = "linux/arm64" ]; then \
. /etc/profile && cargo build --release --target=aarch64-unknown-linux-musl; \
elif [ "$TARGETPLATFORM" = "linux/amd64" ]; then \
cargo build --release --target=x86_64-unknown-linux-musl; \
fi

FROM scratch
WORKDIR /app
COPY ./static static
COPY --from=css-builder /temp/out.css ./static/style.css

# Copy the appropriate binary based on the target platform
ARG TARGETPLATFORM
COPY --from=build /usr/src/vesta/target/aarch64-unknown-linux-musl/release/vesta /app/vesta-arm64
COPY --from=build /usr/src/vesta/target/x86_64-unknown-linux-musl/release/vesta /app/vesta-amd64
RUN if [ "$TARGETPLATFORM" = "linux/arm64" ]; then \
mv /app/vesta-arm64 /app/vesta; \
elif [ "$TARGETPLATFORM" = "linux/amd64" ]; then \
mv /app/vesta-amd64 /app/vesta; \
fi

CMD ["/app/vesta"]
36 changes: 0 additions & 36 deletions Dockerfile.aarch64

This file was deleted.

28 changes: 0 additions & 28 deletions Dockerfile.x86_64

This file was deleted.

0 comments on commit 6936dce

Please sign in to comment.