From fea20c417cb20e5ebe0fccf604da9d8241a42242 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Wed, 18 Mar 2026 22:07:20 -0400 Subject: [PATCH] update builds to trigger only on relevant changes (#1170) --- .github/workflows/docker-publish-cpu.yml | 14 +++++++ build/service_cpu.Dockerfile | 53 +++++------------------- 2 files changed, 24 insertions(+), 43 deletions(-) diff --git a/.github/workflows/docker-publish-cpu.yml b/.github/workflows/docker-publish-cpu.yml index a6b79b8d0e..5b9fa61c64 100644 --- a/.github/workflows/docker-publish-cpu.yml +++ b/.github/workflows/docker-publish-cpu.yml @@ -10,6 +10,20 @@ on: #- $default-branch - main - test + # Only build when files that affect the Docker image change. + # This avoids expensive 15-25 min builds for docs-only or config-only changes. + paths: + # Individual files + - '.github/workflows/docker-publish-cpu.yml' + - 'Cargo.lock' + - 'Cargo.toml' + - 'build/service_cpu.Dockerfile' + # Directories + - '.sqlx/**' + - '_database/**' + - 'crates/**' + - 'includes/**' + - 'test_data/**' env: IMAGE_NAME: storyteller-rust diff --git a/build/service_cpu.Dockerfile b/build/service_cpu.Dockerfile index b7e15b1373..f33e8c8de6 100644 --- a/build/service_cpu.Dockerfile +++ b/build/service_cpu.Dockerfile @@ -130,53 +130,20 @@ RUN echo "Disk usage at current directory (after tests):" RUN pwd RUN du -hsc * | sort -hr -# Build all the binaries. -RUN SQLX_OFFLINE=true \ - LD_LIBRARY_PATH=/usr/lib:${LD_LIBRARY_PATH} \ - $HOME/.cargo/bin/cargo build \ - --release \ - --bin storyteller-web - -RUN SQLX_OFFLINE=true \ - LD_LIBRARY_PATH=/usr/lib:${LD_LIBRARY_PATH} \ - $HOME/.cargo/bin/cargo build \ - --release \ - --bin seedance2-pro-job - -RUN SQLX_OFFLINE=true \ - LD_LIBRARY_PATH=/usr/lib:${LD_LIBRARY_PATH} \ - $HOME/.cargo/bin/cargo build \ - --release \ - --bin worldlabs-job - -RUN SQLX_OFFLINE=true \ - LD_LIBRARY_PATH=/usr/lib:${LD_LIBRARY_PATH} \ - $HOME/.cargo/bin/cargo build \ - --release \ - --bin video-thumbnail-job - -RUN SQLX_OFFLINE=true \ - LD_LIBRARY_PATH=/usr/lib:${LD_LIBRARY_PATH} \ - $HOME/.cargo/bin/cargo build \ - --release \ - --bin dummy-service - -RUN SQLX_OFFLINE=true \ - LD_LIBRARY_PATH=/usr/lib:${LD_LIBRARY_PATH} \ - $HOME/.cargo/bin/cargo build \ - --release \ - --bin analytics-job - -RUN SQLX_OFFLINE=true \ - LD_LIBRARY_PATH=/usr/lib:${LD_LIBRARY_PATH} \ - $HOME/.cargo/bin/cargo build \ - --release \ - --bin email-sender-job - +# Build all the binaries in a single cargo invocation. +# This lets cargo parallelize shared dependency compilation across all targets, +# which is significantly faster than building each binary sequentially. RUN SQLX_OFFLINE=true \ LD_LIBRARY_PATH=/usr/lib:${LD_LIBRARY_PATH} \ $HOME/.cargo/bin/cargo build \ --release \ + --bin storyteller-web \ + --bin seedance2-pro-job \ + --bin worldlabs-job \ + --bin video-thumbnail-job \ + --bin dummy-service \ + --bin analytics-job \ + --bin email-sender-job \ --bin es-update-job # Print a report on disk space