All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Successful in 52s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m26s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 5m25s
Release Docker Image / Build linux-amd64 (release) (pull_request) Successful in 6m14s
Release Docker Image / Build linux-arm64 (release) (pull_request) Successful in 5m26s
Release Docker Image / Create Multi-arch Release Manifest (pull_request) Successful in 10s
Release Docker Image / Build linux-amd64 (max-perf) (pull_request) Successful in 11m53s
Release Docker Image / Build linux-arm64 (max-perf) (pull_request) Successful in 11m52s
Release Docker Image / Create Max-Perf Manifest (pull_request) Successful in 12s
Documentation / Build and Deploy Documentation (push) Successful in 36s
Checks / Prek / Pre-commit & Formatting (push) Successful in 1m3s
Checks / Prek / Clippy and Cargo Tests (push) Successful in 5m37s
Release Docker Image / Build linux-amd64 (release) (push) Successful in 5m33s
Release Docker Image / Build linux-arm64 (release) (push) Successful in 5m23s
Release Docker Image / Create Multi-arch Release Manifest (push) Successful in 13s
Release Docker Image / Build linux-arm64 (max-perf) (push) Successful in 12m55s
Release Docker Image / Build linux-amd64 (max-perf) (push) Successful in 13m0s
Release Docker Image / Create Max-Perf Manifest (push) Successful in 9s
Matrix jobs stopped starting after upgrading from runner v9 to v11 due to changes in job dependency resolution. Remove redundant define-variables job that computed static image paths and replace with IMAGE_PATH environment variable. Also fix timelord action binary caching for compatibility between different runner images that install cargo binaries in different locations.
104 lines
3.4 KiB
YAML
104 lines
3.4 KiB
YAML
name: timelord
|
|
description: |
|
|
Use timelord to set file timestamps with git-warp-time fallback for cache misses
|
|
inputs:
|
|
key:
|
|
description: |
|
|
The key to use for caching the timelord data.
|
|
required: false
|
|
default: ''
|
|
path:
|
|
description: |
|
|
The path to the directory to be timestamped.
|
|
required: false
|
|
default: ''
|
|
|
|
outputs:
|
|
database-path:
|
|
description: Path to timelord database
|
|
value: '${{ env.TIMELORD_CACHE_PATH }}'
|
|
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- name: Set defaults
|
|
shell: bash
|
|
run: |
|
|
echo "TIMELORD_KEY=${{ inputs.key || format('timelord-v1-{0}-{1}', github.repository, hashFiles('**/*.rs', '**/Cargo.toml', '**/Cargo.lock')) }}" >> $GITHUB_ENV
|
|
echo "TIMELORD_PATH=${{ inputs.path || '.' }}" >> $GITHUB_ENV
|
|
echo "TIMELORD_CACHE_PATH=$HOME/.cache/timelord" >> $GITHUB_ENV
|
|
echo "PATH=/usr/share/rust/.cargo/bin:$HOME/.cargo/bin:$PATH" >> $GITHUB_ENV
|
|
|
|
- name: Restore binary cache
|
|
id: binary-cache
|
|
uses: actions/cache/restore@v4
|
|
with:
|
|
path: |
|
|
/usr/share/rust/.cargo/bin
|
|
~/.cargo/bin
|
|
key: timelord-binaries-v2
|
|
|
|
- name: Check if binaries need installation
|
|
shell: bash
|
|
id: check-binaries
|
|
run: |
|
|
NEED_INSTALL=false
|
|
if [ ! -e /usr/share/rust/.cargo/bin/timelord ] && [ ! -e ~/.cargo/bin/timelord ]; then
|
|
echo "timelord-cli not found in /usr/share/rust/.cargo/bin or ~/.cargo/bin, needs installation"
|
|
NEED_INSTALL=true
|
|
fi
|
|
if [ ! -e /usr/share/rust/.cargo/bin/git-warp-time ] && [ ! -e ~/.cargo/bin/git-warp-time ]; then
|
|
echo "git-warp-time not found in /usr/share/rust/.cargo/bin or ~/.cargo/bin, needs installation"
|
|
NEED_INSTALL=true
|
|
fi
|
|
echo "need-install=$NEED_INSTALL" >> $GITHUB_OUTPUT
|
|
|
|
- name: Install timelord-cli and git-warp-time
|
|
if: steps.check-binaries.outputs.need-install == 'true'
|
|
uses: https://github.com/taiki-e/install-action@v2
|
|
with:
|
|
tool: git-warp-time,timelord-cli@3.0.1
|
|
|
|
- name: Save binary cache
|
|
if: steps.check-binaries.outputs.need-install == 'true'
|
|
uses: actions/cache/save@v4
|
|
with:
|
|
path: |
|
|
/usr/share/rust/.cargo/bin
|
|
~/.cargo/bin
|
|
key: timelord-binaries-v2
|
|
|
|
|
|
- name: Restore timelord cache with fallbacks
|
|
id: timelord-restore
|
|
uses: actions/cache/restore@v4
|
|
with:
|
|
path: ${{ env.TIMELORD_CACHE_PATH }}
|
|
key: ${{ env.TIMELORD_KEY }}
|
|
restore-keys: |
|
|
timelord-v1-${{ github.repository }}-
|
|
|
|
- name: Initialize timestamps on complete cache miss
|
|
if: steps.timelord-restore.outputs.cache-hit != 'true'
|
|
shell: bash
|
|
run: |
|
|
echo "Complete timelord cache miss - running git-warp-time"
|
|
git fetch --unshallow
|
|
if [ "${{ env.TIMELORD_PATH }}" = "." ]; then
|
|
git-warp-time --quiet
|
|
else
|
|
git-warp-time --quiet ${{ env.TIMELORD_PATH }}
|
|
fi
|
|
echo "Git timestamps restored"
|
|
|
|
- name: Run timelord sync
|
|
shell: bash
|
|
run: |
|
|
mkdir -p ${{ env.TIMELORD_CACHE_PATH }}
|
|
timelord sync --source-dir ${{ env.TIMELORD_PATH }} --cache-dir ${{ env.TIMELORD_CACHE_PATH }}
|
|
|
|
- name: Save updated timelord cache immediately
|
|
uses: actions/cache/save@v4
|
|
with:
|
|
path: ${{ env.TIMELORD_CACHE_PATH }}
|
|
key: ${{ env.TIMELORD_KEY }}
|