Skip to content

perf(ci): acelerar el carril lento con cache de libreria nativa, tests grada C y release en paralelo - #582

Merged
sgomez merged 2 commits into
mainfrom
perf/ci-accelerate-native-lane
Sep 8, 2026
Merged

sgomez merged 2 commits into
mainfrom
perf/ci-accelerate-native-lane

Conversation

@sgomez

@sgomez sgomez commented Sep 8, 2026

Copy link
Copy Markdown
Owner

Qué resuelve este PR

El carril lento de CI (native) tardaba más de 10 minutos (entre 11m 45s y 12m 56s medidos en ejecuciones recientes). Este PR aplica tres optimizaciones clave para reducir su tiempo de pared a ~3–4 minutos:

  1. Caché de librfirma_crypto.so en CI:

    • Se añade un paso de actions/cache para rfirma-native-bridge/target/lib/rfirma con clave hash de bootstrap.sh y rfirma-native-bridge/**.
    • Si no hay cambios en el puente Java, la biblioteca nativa se restaura en ~2 segundos y se salta just native, ahorrando los ~2m 15s de native-image.
  2. Poda de ejecuciones duplicadas en test-native:

    • Se cambia -- --include-ignored por -- --ignored en la receta test-native de justfile.
    • test-native ahora ejecuta estrictamente las pruebas de grada C (marcadas con #[ignore]: el ciclo completo de native_cycle.rs, los casos del protocolo con RFIRMA_LIB_DIR y las de Maven con -DexcludedGroups=).
    • Evita reejecutar los 1.193 tests unitarios y los 95 segundos del banco de conformidad que ya corrieron en check-rust y que volverán a correr bajo llvm-cov en crap-full.
    • Ahorra ~2m 40s (de 3m 46s a ~1m 05s).
  3. Paralelización de la compilación de release:

    • Se extrae just build-rust (cargo build --release --features custom-protocol) del final del job native a un nuevo job paralelo release («Binario de release»).
    • Al usar libloading dinámico en tiempo de ejecución, Rust no enlaza contra librfirma_crypto.so en compilación ni depende de GraalVM, permitiendo que la compilación de release corra en concurrencia y ahorre ~1m de tiempo de pared en native.
  4. Documentación:

    • Actualizados ADR-0014 y docs/agents/code-host-ci.md reflejando las flags y la nueva división de jobs.

Verificaciones

  • just check-actions: todas las acciones fijadas por SHA y sin invariantes rotas.
  • cargo test --test adr_citations_resolve: citas de ADR íntegras.
  • just check-repo: todos los candados de repositorio y versiones pasando.
  • just fmt: formato limpio.

…s grada C y release en paralelo

- Cachea librfirma_crypto.so por hash del puente Java y bootstrap.sh para ahorrar los ~2m de native-image en PRs que no tocan Java
- Cambia --include-ignored por --ignored en test-native para ejecutar unicamente las pruebas de grada C sin duplicar unitarios ni conformance
- Mueve la compilacion del binario de release a un job paralelo independiente release
@sgomez sgomez added the native label Sep 8, 2026
@sgomez
sgomez force-pushed the perf/ci-accelerate-native-lane branch from eefe981 to d01dcf8 Compare September 8, 2026 21:40
@sgomez
sgomez merged commit c57bac2 into main Sep 8, 2026
6 checks passed
@sgomez
sgomez deleted the perf/ci-accelerate-native-lane branch September 8, 2026 21:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant