fix(ci): de vier oorzaken achter de faalmails van de GitHub-spiegel #966
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!966
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/ci-groen"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
De faalmails van de GitHub-spiegel kwamen van vier oorzaken. Veertien gefaalde
draaien (27-07 t/m 29-07) teruggelezen; het beeld was consistent: de
Windows-leg viel bijna elke draai om, maar telkens op een ánder testgeval —
het patroon van een machine die traag is, niet van code die stuk is.
native_git_mirror_test— 3 min time-out, elke keer een ander gevalopenkat_module_test— vaste 800 ms-pollus te krapmiauw_end_to_end_test— 30 s-time-outmermaid_render_pipeline_test— "er is geen pagina geladen"dart formatop een niet-opgemaakt bestandac89350d)make licenses—fuchsia_remote_debug_protocol1 · Een echte vastloper in de git-laag
De belangrijkste vondst is geen testfout.
NativeGitCli._spawnlas de uitvoervan git tot de stromen klaar waren, en die zijn pas klaar als de pijp sluit —
wat pas gebeurt als élk proces dat hem geërfd heeft weg is. Git start er zelf
een paar: een credential helper,
git-remote-https. Overleeft zo'n kleinkindzijn ouder, dan sluit de pijp niet mee en wachtte de aanroep daar onbegrensd
op: geen fout, geen resultaat, en geen tijdslimiet die nog kon vuren — die was
al afgezegd op het moment dat git zelf klaar was.
Op de Windows-CI strandde daar per draai een willekeurig git-testgeval drie
minuten op vast. In de app zou een git-handeling er even geruisloos in blijven
staan; dát is de reden dat dit onder Fixed staat en niet alleen onder de
testfixes.
De diagnose is eerst los van het project nagemeten: proces klaar na 4 ms, pijp
na 2 s nog open. De regressietest bootst dezelfde erfenis POSIX na (
shmeteen achtergrondproces) en staat rood zonder de fix (10 s) en groen ermee
(2 s) — één keer gedraaid tegen de onherstelde code om dat te bewijzen.
2 · Drie tests die op de klok gokten
openkat_module_test(40 × 20 ms),mermaid_render_pipeline_test(200 × 5 ms) en
miauw_end_to_end_test(de standaard 30 s) wachtten met eenvast budget op echt werk. Dat getal is een gok op de snelheid van de machine —
precies waar
test/support/pump_until.dartal voor waarschuwt. De eerste tweewachten nu op de uitkomst in plaats van op de klok; de derde krijgt alleen op
Windows meer tijd, dezelfde afweging als in
native_git_mirror_test(#933).openkat_module_testviel óók op de Linux-poort om — het was dus geenWindows-eigenaardigheid maar een testfout die daar het eerst zichtbaar werd.
Zijn tempmappen gaan meteen ook langs
deleteTempDir; de Windows-log toondeer de bekende errno 32 bij, die een geslaagd testgeval alsnog rood maakt.
3 · Herkansing op de gepinde scannerdownloads
Twee draaien strandden op curl-code 35 (TLS-handshake) bij het ophalen van
gitleaks. Vijf pogingen met drie seconden ertussen. De pin verzwakt niet:
wat er binnenkomt gaat onveranderd tegen de sha256 uit het checksums-bestand.
Wat er niet in zit
make licensesstonden ook in de lijst, maar zijn alopgelost op main (respectievelijk
ac89350den de sbom/licence-tak van27-07). Nagemeten:
make licensesis hier groen.slide_dedup_dialogs — tientallen gevallen per draai) waren de errno-32- en
padscheidings-fouten die #933 wegnam. Sinds 28-07 niet meer teruggekomen.
de vijf: geen bestandsformaat, geen opslag, geen afhankelijkheid, geen
uitgaand verkeer of nieuw vertrouwde partij, geen publieke belofte. De
git-wijziging zit wél in een geharde laag (§10.2), maar versoepelt daar
niets: de argv-opbouw, het gesloten milieu, de tijdslimiet en de
uitvoerbegrenzing blijven ongewijzigd. Het enige nieuwe gedrag is dat er na
afloop van git nog maximaal 2 s op de pijp gewacht wordt in plaats van
eeuwig — de uitvoer zelf is dan al gelezen, want die wordt gelezen zodra ze
binnenkomt.
het geserveerde oppervlak.
Poorten
make check— groen (exit 0), 87,0% regeldekking, per-bestandsvloer 0 onderde grens.
make check-secrets— groen, 0 geverifieerde en 0 ongeverifieerde geheimen.make sast— groen, 3 regels over 871 bestanden, 0 bevindingen.