From 121bffc2896633f57765aa753df061c4cc1c6e82 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Sun, 20 Sep 2026 23:18:19 +0200 Subject: [PATCH] =?UTF-8?q?CI:=20Ersetzt=20rohes=20actions/cache=20f=C3=BC?= =?UTF-8?q?r=20Cargo-Build-Artefakte=20durch=20Swatinem/rust-cache?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ein rohes 'actions/cache' auf target/ lieferte zwar einen technischen Cache-Hit, Cargo kompilierte die Abhängigkeiten aber 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. Swatinem/rust-cache behebt das gezielt (u. a. gezielte Mtime-Korrektur nach dem Restore). Co-Authored-By: Claude Sonnet 5 --- .gitea/workflows/code-quality.yaml | 16 +++++++--------- .gitea/workflows/main.yaml | 18 +++++++++--------- .gitea/workflows/testing.yaml | 18 +++++++++--------- .gitea/workflows/unit-tests.yaml | 13 ++++--------- 4 files changed, 29 insertions(+), 36 deletions(-) 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