From 521b0b696ca4890d0d96ccb2844896f5028bc778 Mon Sep 17 00:00:00 2001 From: Joshua Higgins Date: Sat, 25 Apr 2026 23:17:29 -0400 Subject: [PATCH] misc: optimized dockerfile, gh actions for cargo --- .github/workflows/cargo-check.yml | 18 ++++++++++++++++++ .github/workflows/cargo-fmt.yml | 20 ++++++++++++++++++++ Dockerfile | 21 +++++++++++++-------- 3 files changed, 51 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/cargo-check.yml create mode 100644 .github/workflows/cargo-fmt.yml diff --git a/.github/workflows/cargo-check.yml b/.github/workflows/cargo-check.yml new file mode 100644 index 0000000..9ecaa66 --- /dev/null +++ b/.github/workflows/cargo-check.yml @@ -0,0 +1,18 @@ +name: Cargo Check + +on: + push: + pull_request: + +jobs: + cargo-check: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + + - name: Run cargo check + run: cargo check --all-targets diff --git a/.github/workflows/cargo-fmt.yml b/.github/workflows/cargo-fmt.yml new file mode 100644 index 0000000..e53c7a7 --- /dev/null +++ b/.github/workflows/cargo-fmt.yml @@ -0,0 +1,20 @@ +name: Cargo Format Check + +on: + push: + pull_request: + +jobs: + cargo-fmt: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install Rust toolchain with rustfmt + uses: dtolnay/rust-toolchain@stable + with: + components: rustfmt + + - name: Run cargo fmt check + run: cargo fmt --all -- --check diff --git a/Dockerfile b/Dockerfile index 366f6d3..a9c9e96 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,19 @@ -FROM rust:1.92 AS build +FROM rust:1.92 AS builder RUN rustup target add x86_64-unknown-linux-musl && \ - apt update && \ - apt install -y musl-tools musl-dev && \ - update-ca-certificates + apt-get update && \ + apt-get install -y --no-install-recommends musl-tools musl-dev ca-certificates && \ + rm -rf /var/lib/apt/lists/* -COPY ./src ./src -COPY ./Cargo.lock . -COPY ./Cargo.toml . +WORKDIR /app +COPY Cargo.toml Cargo.lock ./ +COPY src ./src RUN cargo build --target x86_64-unknown-linux-musl --release -ENTRYPOINT ["./target/x86_64-unknown-linux-musl/release/connect4-moderator-server"] +FROM scratch AS runtime + +COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ +COPY --from=builder /app/target/x86_64-unknown-linux-musl/release/connect4-moderator-server /connect4-moderator-server + +ENTRYPOINT ["/connect4-moderator-server"]