From a27aeb0f10d803c03670db8e82c1c64cabba6e41 Mon Sep 17 00:00:00 2001 From: Joshua Coles Date: Tue, 17 Sep 2024 23:14:02 +0100 Subject: [PATCH] Bump Docker build --- .github/workflows/build.yml | 45 ++++++++++++++++++------------------- Dockerfile | 2 +- 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1466242..e2aa4ec 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,13 +1,12 @@ -name: Rust CI +name: Build and Publish on: push: branches: [ main ] - pull_request: - branches: [ main ] env: CARGO_TERM_COLOR: always + RUST_BINARY_NAME: toggl-bridge jobs: build: @@ -27,12 +26,12 @@ jobs: components: rustfmt, clippy - name: Add ARM64 target - run: rustup target add aarch64-unknown-linux-gnu + run: rustup target add aarch64-unknown-linux-musl - name: Install ARM64 toolchain run: | apt-get update - apt-get install -y gcc-aarch64-linux-gnu + apt-get install -y gcc-aarch64-linux-gnu build-essential musl-tools - name: Cache dependencies uses: actions/cache@v3 @@ -42,7 +41,7 @@ jobs: target/ key: "${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}" restore-keys: | - ${{ runner.os }}-cargo- + ${{ runner.os }}-cargo- - name: Build (x86_64) uses: actions-rs/cargo@v1 @@ -54,23 +53,9 @@ jobs: uses: actions-rs/cargo@v1 with: command: build - args: --release --all-features --target aarch64-unknown-linux-gnu + args: --release --all-features --target aarch64-unknown-linux-musl env: - CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc - - - name: Run tests - uses: actions-rs/cargo@v1 - with: - command: test - args: --all-features - - - name: Upload artifacts - uses: actions/upload-artifact@v3 - with: - name: binaries - path: | - target/release/${{ github.event.repository.name }} - target/aarch64-unknown-linux-gnu/release/${{ github.event.repository.name }} + CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER: aarch64-linux-gnu-gcc - name: Set up QEMU uses: docker/setup-qemu-action@v2 @@ -85,6 +70,18 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} + - name: Upload artifacts + uses: actions/upload-artifact@v3 + with: + name: binaries + path: | + target/release/${{ env.RUST_BINARY_NAME }} + target/aarch64-unknown-linux-musl/release/${{ env.RUST_BINARY_NAME }} + + # The target directory is kept in the .dockerignore file, so allow these to be copied in we need to move them to a + # new directory. + - run: mv target docker-target + - name: Build and push multi-arch Docker image uses: docker/build-push-action@v4 with: @@ -92,7 +89,9 @@ jobs: file: ./Dockerfile platforms: linux/amd64,linux/arm64 push: true - tags: git.joshuacoles.me/${{ github.repository }}:latest,git.joshuacoles.me/${{ github.repository }}:${{ github.sha }} + tags: git.joshuacoles.me/${{ github.repository }}:${{ github.sha }},git.joshuacoles.me/${{ github.repository }}:latest + build-args: | + BINARY_NAME=${{ env.RUST_BINARY_NAME }} - uses: robiningelbrecht/ntfy-action@v1.0.0 name: Notify via ntfy.sh diff --git a/Dockerfile b/Dockerfile index 1602664..ae01972 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ FROM --platform=$BUILDPLATFORM debian:bullseye-slim AS builder ARG TARGETPLATFORM WORKDIR /app -COPY . . +COPY docker-target target RUN case "$TARGETPLATFORM" in \ "linux/amd64") BINARY_PATH="target/release/toggl-bridge" ;; \ "linux/arm64") BINARY_PATH="target/aarch64-unknown-linux-gnu/release/toggl-bridge" ;; \