From c7c24a509f3fe02fc5689409f15f8c80eb875579 Mon Sep 17 00:00:00 2001 From: PandaDEV <70103896+0PandaDEV@users.noreply.github.com> Date: Mon, 11 Nov 2024 22:00:59 +1000 Subject: [PATCH] feat: rust actions cache for faster builds --- .github/workflows/publish.yaml | 12 ++++++++++++ Dockerfile | 16 ++++++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index e436d96..4bd2a5b 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -18,6 +18,7 @@ env: DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} GITHUB_IMAGE_NAME: ${{ github.repository_owner }}/backend GITHUB_REGISTRY: ghcr.io + CARGO_TERM_COLOR: always jobs: build-and-push: @@ -29,6 +30,17 @@ jobs: - name: Checkout code uses: actions/checkout@v4 + - name: Cache Rust dependencies + uses: actions/cache@v3 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + target + key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + restore-keys: | + ${{ runner.os }}-cargo- + - name: Set up QEMU uses: docker/setup-qemu-action@v3 diff --git a/Dockerfile b/Dockerfile index ee9d951..32633c5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,18 +1,26 @@ FROM rust:1.82.0 AS builder -RUN USER=root cargo new --bin backend +RUN --mount=type=cache,target=/usr/local/cargo/registry \ + --mount=type=cache,target=/usr/local/cargo/git \ + USER=root cargo new --bin backend WORKDIR /backend COPY ./Cargo.lock ./Cargo.lock COPY ./Cargo.toml ./Cargo.toml -RUN cargo build --release +RUN --mount=type=cache,target=/usr/local/cargo/registry \ + --mount=type=cache,target=/usr/local/cargo/git \ + --mount=type=cache,target=/backend/target \ + cargo build --release RUN rm src/*.rs COPY ./src ./src -RUN rm ./target/release/deps/backend* -RUN cargo build --release +RUN --mount=type=cache,target=/usr/local/cargo/registry \ + --mount=type=cache,target=/usr/local/cargo/git \ + --mount=type=cache,target=/backend/target \ + rm ./target/release/deps/backend* && \ + cargo build --release FROM debian:bookworm-slim