ci: Refactor timelord action to use git-warp-time fallback #994

Open
tcpipuk wants to merge 1 commit from tom/git-timestamps into main
Owner

Updates the timelord action to fall back to git-warp-time when the cache is completely empty, enabling timestamp restoration even on fresh builds.

When git-warp-time is used, performs an unshallow fetch to get full history, while subsequent runs use normal fetches. Simplifies the interface by making inputs optional with sensible defaults.

Adds binary caching for timelord-cli and git-warp-time tools to avoid repeated installations, and updates paths to use /usr/share/rust/.cargo/bin/ for the catthehacker runner image used by the dind profile (may need updating if/when switching to standard image).

The main timelord restore now happens inside the Dockerfile itself, as Docker intentionally wipes all file mtimes on COPY/ADD operations.

Updates the timelord action to fall back to git-warp-time when the cache is completely empty, enabling timestamp restoration even on fresh builds. When git-warp-time is used, performs an unshallow fetch to get full history, while subsequent runs use normal fetches. Simplifies the interface by making inputs optional with sensible defaults. Adds binary caching for timelord-cli and git-warp-time tools to avoid repeated installations, and updates paths to use /usr/share/rust/.cargo/bin/ for the catthehacker runner image used by the dind profile (may need updating if/when switching to standard image). The main timelord restore now happens inside the Dockerfile itself, as Docker intentionally wipes all file mtimes on COPY/ADD operations.
tcpipuk self-assigned this 2025-09-08 01:04:04 +00:00
ci: Preserve git timestamps to improve build cache efficiency
Some checks failed
Release Docker Image / define-variables (pull_request) Successful in 16s
Documentation / Build and Deploy Documentation (pull_request) Successful in 37s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 52s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Failing after 18s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Failing after 55s
Release Docker Image / merge (pull_request) Has been skipped
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 4m9s
6df55957b7
Enable BuildKit git context preservation to maintain stable file timestamps
between builds, improving Rust incremental compilation cache effectiveness.

Adds full git history checkout and --keep-git-dir=true COPY instruction.
tcpipuk force-pushed tom/git-timestamps from 6df55957b7
Some checks failed
Release Docker Image / define-variables (pull_request) Successful in 16s
Documentation / Build and Deploy Documentation (pull_request) Successful in 37s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 52s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Failing after 18s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Failing after 55s
Release Docker Image / merge (pull_request) Has been skipped
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 4m9s
to 45adfabbcd
Some checks failed
Release Docker Image / define-variables (pull_request) Successful in 14s
Documentation / Build and Deploy Documentation (pull_request) Successful in 48s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Failing after 50s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m39s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Failing after 54s
Release Docker Image / merge (pull_request) Has been skipped
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 5m1s
2025-09-08 03:33:31 +00:00
Compare
tcpipuk force-pushed tom/git-timestamps from 45adfabbcd
Some checks failed
Release Docker Image / define-variables (pull_request) Successful in 14s
Documentation / Build and Deploy Documentation (pull_request) Successful in 48s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Failing after 50s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m39s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Failing after 54s
Release Docker Image / merge (pull_request) Has been skipped
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 5m1s
to 09802a1629
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Successful in 27s
Release Docker Image / define-variables (pull_request) Successful in 19s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Failing after 22s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Failing after 40s
Release Docker Image / merge (pull_request) Has been skipped
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m17s
Checks / Prek / Clippy and Cargo Tests (pull_request) Has been cancelled
2025-09-08 03:43:07 +00:00
Compare
tcpipuk force-pushed tom/git-timestamps from 09802a1629
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Successful in 27s
Release Docker Image / define-variables (pull_request) Successful in 19s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Failing after 22s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Failing after 40s
Release Docker Image / merge (pull_request) Has been skipped
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m17s
Checks / Prek / Clippy and Cargo Tests (pull_request) Has been cancelled
to 96a9e89e83
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Successful in 31s
Release Docker Image / define-variables (pull_request) Successful in 5s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m31s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 4m39s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Failing after 4m8s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Failing after 3m36s
Release Docker Image / merge (pull_request) Has been skipped
2025-09-08 03:45:35 +00:00
Compare
tcpipuk force-pushed tom/git-timestamps from 96a9e89e83
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Successful in 31s
Release Docker Image / define-variables (pull_request) Successful in 5s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m31s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 4m39s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Failing after 4m8s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Failing after 3m36s
Release Docker Image / merge (pull_request) Has been skipped
to a1064dd8f8
Some checks failed
Release Docker Image / define-variables (pull_request) Successful in 11s
Documentation / Build and Deploy Documentation (pull_request) Successful in 26s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m13s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Failing after 4m16s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 5m4s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Successful in 11m50s
Release Docker Image / merge (pull_request) Has been skipped
2025-09-08 03:53:12 +00:00
Compare
tcpipuk force-pushed tom/git-timestamps from a1064dd8f8
Some checks failed
Release Docker Image / define-variables (pull_request) Successful in 11s
Documentation / Build and Deploy Documentation (pull_request) Successful in 26s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m13s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Failing after 4m16s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 5m4s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Successful in 11m50s
Release Docker Image / merge (pull_request) Has been skipped
to 90baadd032
All checks were successful
Release Docker Image / define-variables (pull_request) Successful in 22s
Documentation / Build and Deploy Documentation (pull_request) Successful in 46s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m43s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 6m45s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Successful in 10m52s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Successful in 11m5s
Release Docker Image / merge (pull_request) Successful in 14s
2025-09-08 04:12:21 +00:00
Compare
tcpipuk force-pushed tom/git-timestamps from 90baadd032
All checks were successful
Release Docker Image / define-variables (pull_request) Successful in 22s
Documentation / Build and Deploy Documentation (pull_request) Successful in 46s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m43s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 6m45s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Successful in 10m52s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Successful in 11m5s
Release Docker Image / merge (pull_request) Successful in 14s
to b1c39e6bf8
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Successful in 37s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m21s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 5m19s
Release Docker Image / define-variables (pull_request) Successful in 2s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Successful in 3m54s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Successful in 3m57s
Release Docker Image / merge (pull_request) Successful in 7s
2025-09-08 04:34:59 +00:00
Compare
tcpipuk force-pushed tom/git-timestamps from b1c39e6bf8
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Successful in 37s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m21s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 5m19s
Release Docker Image / define-variables (pull_request) Successful in 2s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Successful in 3m54s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Successful in 3m57s
Release Docker Image / merge (pull_request) Successful in 7s
to e8fa658da5
Some checks failed
Release Docker Image / define-variables (pull_request) Successful in 7s
Documentation / Build and Deploy Documentation (pull_request) Successful in 30s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m11s
Release Docker Image / merge (pull_request) Has been cancelled
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Has been cancelled
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Has been cancelled
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 5m51s
2025-09-08 04:51:23 +00:00
Compare
tcpipuk force-pushed tom/git-timestamps from e8fa658da5
Some checks failed
Release Docker Image / define-variables (pull_request) Successful in 7s
Documentation / Build and Deploy Documentation (pull_request) Successful in 30s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m11s
Release Docker Image / merge (pull_request) Has been cancelled
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Has been cancelled
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Has been cancelled
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 5m51s
to 4076727ed1
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Successful in 27s
Release Docker Image / define-variables (pull_request) Successful in 5s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m19s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 5m18s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Successful in 7m3s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Successful in 7m38s
Release Docker Image / merge (pull_request) Successful in 26s
2025-09-08 04:53:38 +00:00
Compare
tcpipuk force-pushed tom/git-timestamps from 4076727ed1
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Successful in 27s
Release Docker Image / define-variables (pull_request) Successful in 5s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m19s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 5m18s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Successful in 7m3s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Successful in 7m38s
Release Docker Image / merge (pull_request) Successful in 26s
to 4f852a3a73
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Successful in 33s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m22s
Checks / Prek / Clippy and Cargo Tests (pull_request) Has been cancelled
Release Docker Image / define-variables (pull_request) Successful in 2s
Release Docker Image / merge (pull_request) Has been cancelled
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Has been cancelled
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Has been cancelled
2025-09-08 05:07:01 +00:00
Compare
tcpipuk force-pushed tom/git-timestamps from 4f852a3a73
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Successful in 33s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m22s
Checks / Prek / Clippy and Cargo Tests (pull_request) Has been cancelled
Release Docker Image / define-variables (pull_request) Successful in 2s
Release Docker Image / merge (pull_request) Has been cancelled
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Has been cancelled
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Has been cancelled
to 6ee80e71cc
Some checks failed
Checks / Prek / Clippy and Cargo Tests (pull_request) Has been cancelled
Checks / Prek / Pre-commit & Formatting (pull_request) Has been cancelled
Release Docker Image / define-variables (pull_request) Successful in 2s
Documentation / Build and Deploy Documentation (pull_request) Successful in 33s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Successful in 7m45s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Has been cancelled
Release Docker Image / merge (pull_request) Has been cancelled
2025-09-08 05:17:42 +00:00
Compare
tcpipuk force-pushed tom/git-timestamps from 6ee80e71cc
Some checks failed
Checks / Prek / Clippy and Cargo Tests (pull_request) Has been cancelled
Checks / Prek / Pre-commit & Formatting (pull_request) Has been cancelled
Release Docker Image / define-variables (pull_request) Successful in 2s
Documentation / Build and Deploy Documentation (pull_request) Successful in 33s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Successful in 7m45s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Has been cancelled
Release Docker Image / merge (pull_request) Has been cancelled
to 4a7c57b79b
All checks were successful
Release Docker Image / define-variables (pull_request) Successful in 14s
Documentation / Build and Deploy Documentation (pull_request) Successful in 37s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m14s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 4m24s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Successful in 7m1s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Successful in 3m33s
Release Docker Image / merge (pull_request) Successful in 7s
2025-09-08 05:52:40 +00:00
Compare
tcpipuk force-pushed tom/git-timestamps from 4a7c57b79b
All checks were successful
Release Docker Image / define-variables (pull_request) Successful in 14s
Documentation / Build and Deploy Documentation (pull_request) Successful in 37s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m14s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 4m24s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Successful in 7m1s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Successful in 3m33s
Release Docker Image / merge (pull_request) Successful in 7s
to 96db0cdbb3
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Successful in 24s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m3s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 5m19s
Release Docker Image / define-variables (pull_request) Successful in 2s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Successful in 1m9s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Successful in 1m6s
Release Docker Image / merge (pull_request) Successful in 6s
2025-09-08 07:56:05 +00:00
Compare
tcpipuk force-pushed tom/git-timestamps from 96db0cdbb3
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Successful in 24s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m3s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 5m19s
Release Docker Image / define-variables (pull_request) Successful in 2s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Successful in 1m9s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Successful in 1m6s
Release Docker Image / merge (pull_request) Successful in 6s
to 93ae4ec849
All checks were successful
Release Docker Image / define-variables (pull_request) Successful in 34s
Documentation / Build and Deploy Documentation (pull_request) Successful in 57s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m27s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 8m59s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Successful in 9m23s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Successful in 7m32s
Release Docker Image / merge (pull_request) Successful in 20s
2025-09-08 08:32:17 +00:00
Compare
tcpipuk changed title from WIP: ci: Preserve git timestamps to improve build cache efficiency to ci: Refactor timelord action to use git-warp-time fallback 2025-09-08 08:34:16 +00:00
tcpipuk force-pushed tom/git-timestamps from 93ae4ec849
All checks were successful
Release Docker Image / define-variables (pull_request) Successful in 34s
Documentation / Build and Deploy Documentation (pull_request) Successful in 57s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m27s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 8m59s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Successful in 9m23s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Successful in 7m32s
Release Docker Image / merge (pull_request) Successful in 20s
to 7950e2cc7f
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Successful in 1m24s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m43s
Release Docker Image / define-variables (pull_request) Successful in 9s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 8m21s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Successful in 6m38s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Successful in 5m58s
Release Docker Image / merge (pull_request) Successful in 9s
2025-09-08 08:34:30 +00:00
Compare
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Successful in 1m24s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m43s
Required
Details
Release Docker Image / define-variables (pull_request) Successful in 9s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 8m21s
Required
Details
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Successful in 6m38s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Successful in 5m58s
Release Docker Image / merge (pull_request) Successful in 9s
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin tom/git-timestamps:tom/git-timestamps
git switch tom/git-timestamps
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
continuwuation/continuwuity!994
No description provided.