Skip to content

Déployer sccache sur les quatre autres images Rust, une fois le pilote FerrFleet prouvé #183

Description

@BryanFRD

#182 a ajouté les secrets sccache au workflow réutilisable, et FerrFleet-Cloud#508 a instrumenté le premier Dockerfile.

Pourquoi ce n'est pas encore déployé

Le premier build après merge donne :

sccache active
Compile requests   598
Cache hits           0     (0.00 %)
Cache misses       510
Cache write errors   0

sccache active prouve la prémisse réseau — garage est joignable depuis l'intérieur du build, grâce à --isolation=chroot qui fait partager le réseau du pod aux RUN. Et 0 write errors sur 510 misses veut dire que le cache s'est rempli.

Mais 0 hit : ce build n'a rien gagné (~18 min, comme avant). C'est le comportement attendu d'un cache froid. La preuve est au build suivant. Si le taux reste à 0, les clés ne se rejouent pas d'un build à l'autre et il faut creuser avant d'élargir.

À faire une fois le taux de hits non nul confirmé

Même changement dans les quatre autres images Rust :

  • FerrLabs/FerrLabs-Cloudapi/Dockerfile
  • FerrLabs/FerrVault-Cloudapi/Dockerfile
  • FerrLabs/FerrTrack-Cloudapi/Dockerfile
  • FerrLabs/FerrGrowth-Cloudapi/Dockerfile

Plus FerrFleet-Cloud/api/runner/Dockerfile, laissé hors du pilote : les secrets lui sont déjà passés, mais il ne les monte pas, donc il les ignore silencieusement.

Chaque dépôt a besoin de : le bump du SHA épinglé de reusable-docker-build.yml, les deux secrets passés dans son docker.yml, et l'instrumentation du Dockerfile (installation de sccache + montage des secrets + RUSTC_WRAPPER conditionnel).

Le problème d'origine, pour mémoire

Le commit de release bump la ligne version de api/Cargo.toml, entrée de la couche qui met en cache la compilation des dépendances. Une couche invalidée invalide ses descendantes → ~10 min à recompiler des crates qui n'ont pas changé. Cargo.lock, lui, n'est pas touché : le seul fichier qui casse le cache est celui dont la modification ne change rien à ce qui doit être compilé.

Mesuré sur FerrFleet : 15 à 21 min par image.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions