diff --git a/.gitea/workflows/code-quality.yaml b/.gitea/workflows/code-quality.yaml index 8c35d11..dc69eb5 100644 --- a/.gitea/workflows/code-quality.yaml +++ b/.gitea/workflows/code-quality.yaml @@ -24,16 +24,14 @@ jobs: components: clippy, rustfmt cache: false + # Ein rohes 'actions/cache' auf target/ liefert zwar einen technischen Cache-Hit (Dateien + # werden wiederhergestellt), Cargo kompiliert die Abhängigkeiten aber oft trotzdem neu: + # Der tar-basierte Restore-Vorgang setzt bei allen wiederhergestellten Dateien dieselbe + # Mtime, wodurch Cargos Fingerprinting nicht mehr zuverlässig erkennen kann, was + # älter/neuer als was ist, und sicherheitshalber alles neu baut. Swatinem/rust-cache ist + # genau dafür gebaut (u. a. gezielte Mtime-Korrektur nach dem Restore). - name: Cache Cargo-Abhängigkeiten & Build-Artefakte - uses: actions/cache@v6 - with: - path: | - ~/.cargo/registry - ~/.cargo/git - target - key: cargo-${{ runner.os }}-${{ hashFiles('Cargo.lock') }} - restore-keys: | - cargo-${{ runner.os }}- + uses: Swatinem/rust-cache@v2 - name: Formatierung automatisch beheben run: cargo fmt diff --git a/.gitea/workflows/main.yaml b/.gitea/workflows/main.yaml index 7769ea2..d41f7b2 100644 --- a/.gitea/workflows/main.yaml +++ b/.gitea/workflows/main.yaml @@ -47,16 +47,16 @@ jobs: toolchain: stable cache: false + # Ein rohes 'actions/cache' auf target/ liefert zwar einen technischen Cache-Hit + # (Dateien werden restauriert), Cargo kompiliert die Abhängigkeiten aber trotzdem neu: + # Der tar-basierte Restore-Vorgang setzt bei allen wiederhergestellten Dateien + # (Quelldateien wie kompilierte .rlib/.d-Dateien) dieselbe Mtime, wodurch Cargos + # Fingerprinting nicht mehr zuverlässig erkennen kann, was tatsächlich älter/neuer als + # was ist, und sicherheitshalber alles neu baut. Swatinem/rust-cache ist genau dafür + # gebaut (u. a. gezielte Mtime-Korrektur nach dem Restore) und cached dabei automatisch + # auch beide Cross-Compilation-Targets (x86_64 + aarch64) in diesem Job. - name: Cache Cargo-Abhängigkeiten & Build-Artefakte - uses: actions/cache@v6 - with: - path: | - ~/.cargo/registry - ~/.cargo/git - target - key: cargo-${{ runner.os }}-${{ hashFiles('Cargo.lock') }} - restore-keys: | - cargo-${{ runner.os }}- + uses: Swatinem/rust-cache@v2 - name: Alte Paketierungs-Ausgaben aus dem Cache entfernen run: rm -rf target/debian target/generate-rpm target/arch target/completions diff --git a/.gitea/workflows/testing.yaml b/.gitea/workflows/testing.yaml index 0d49f7f..124cb5c 100644 --- a/.gitea/workflows/testing.yaml +++ b/.gitea/workflows/testing.yaml @@ -47,16 +47,16 @@ jobs: toolchain: stable cache: false + # Ein rohes 'actions/cache' auf target/ liefert zwar einen technischen Cache-Hit + # (Dateien werden restauriert), Cargo kompiliert die Abhängigkeiten aber trotzdem neu: + # Der tar-basierte Restore-Vorgang setzt bei allen wiederhergestellten Dateien + # (Quelldateien wie kompilierte .rlib/.d-Dateien) dieselbe Mtime, wodurch Cargos + # Fingerprinting nicht mehr zuverlässig erkennen kann, was tatsächlich älter/neuer als + # was ist, und sicherheitshalber alles neu baut. Swatinem/rust-cache ist genau dafür + # gebaut (u. a. gezielte Mtime-Korrektur nach dem Restore) und cached dabei automatisch + # auch beide Cross-Compilation-Targets (x86_64 + aarch64) in diesem Job. - name: Cache Cargo-Abhängigkeiten & Build-Artefakte - uses: actions/cache@v6 - with: - path: | - ~/.cargo/registry - ~/.cargo/git - target - key: cargo-${{ runner.os }}-${{ hashFiles('Cargo.lock') }} - restore-keys: | - cargo-${{ runner.os }}- + uses: Swatinem/rust-cache@v2 - name: Alte Paketierungs-Ausgaben aus dem Cache entfernen run: rm -rf target/debian target/generate-rpm target/arch target/completions diff --git a/.gitea/workflows/unit-tests.yaml b/.gitea/workflows/unit-tests.yaml index 7703f7f..4050f1c 100644 --- a/.gitea/workflows/unit-tests.yaml +++ b/.gitea/workflows/unit-tests.yaml @@ -23,16 +23,11 @@ jobs: toolchain: stable cache: false + # Siehe main.yaml/testing.yaml: Swatinem/rust-cache statt eines rohen 'actions/cache' auf + # target/, das trotz Cache-Hit wegen verschobener Mtimes nach dem Restore oft trotzdem + # alles neu kompiliert. - name: Cache Cargo-Abhängigkeiten & Build-Artefakte - uses: actions/cache@v6 - with: - path: | - ~/.cargo/registry - ~/.cargo/git - target - key: cargo-${{ runner.os }}-${{ hashFiles('Cargo.lock') }} - restore-keys: | - cargo-${{ runner.os }}- + uses: Swatinem/rust-cache@v2 - name: Run Tests run: cargo test