mirror of
https://seed.radicle.dev/rad:z4D5UCArafTzTQpDZNQRuqswh3ury.git
synced 2026-10-18 19:10:45 +08:00
On an incremental image build, setting a changed file to the commit time can make it older than its stale build output, so cargo would skip the rebuild. Rounding down to the whole second still survives the image layer and never moves a file back past its outputs.
25 lines
1.5 KiB
YAML
25 lines
1.5 KiB
YAML
steps:
|
|
# An image layer keeps whole-second mtimes, but cargo fingerprints the
|
|
# nanoseconds it saw at build time. Rounding tracked files down to the
|
|
# second before building keeps the warm target/ fresh at run time. Never
|
|
# set them to the commit time: on an incremental image build that can make
|
|
# a changed file older than its stale build output.
|
|
- name: round source mtimes down to whole seconds (image builds only)
|
|
run: '[ "$RYPH_SETUP_PHASE" != image ] || git ls-files -z | xargs -0 perl -e ''for (@ARGV) { next if -l; my $m = (lstat)[9]; utime $m, $m, $_ }'''
|
|
- name: install npm dependencies
|
|
run: npm install --prefer-offline
|
|
- name: install Playwright WebKit
|
|
run: npx playwright install webkit
|
|
- name: install the pinned Radicle binaries for e2e tests
|
|
run: scripts/install-binaries
|
|
- name: warm clippy (scripts/check-rs)
|
|
run: mkdir -p build && cargo clippy --workspace --all-targets --locked
|
|
- name: warm cargo test (scripts/check-rs)
|
|
run: cargo test --workspace --no-run --locked
|
|
- name: warm the e2e backend (tests/support/globalSetup.ts)
|
|
run: cargo build --manifest-path ./crates/test-http-api/Cargo.toml --locked && cargo build -p radicle-job --bin rad-job --locked
|
|
# rustc's incremental cache only speeds up rebuilding this repo's own
|
|
# crates after an edit, and it is gigabytes. Image builds only.
|
|
- name: drop the incremental cache (image builds only)
|
|
run: '[ "$RYPH_SETUP_PHASE" != image ] || rm -rf target/debug/incremental'
|