ci: make critical artifact uploads resilient - #431
Open
XuPeng-SH wants to merge 11 commits into
Open
Conversation
Contributor
Author
|
Follow-up deep review completed on Findings fixed:
Fresh evidence: full actionlint passed; 18 workflows plus the composite action passed current SchemaStore schemas; AJV strict validation passed; 5/5 state-machine counterexamples and a non-literal constant-false counterexample were rejected; artifact closure remains 7 retry callers and 12 isolated failure diagnostics; No artifact-path correctness or performance blockers remain in the complete diff. |
Contributor
Author
Follow-up deep review —
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
macos-12andmacos-13labels tomacos-15-intelCorrectness and generation handling
Retry attempts use the same job-owned artifact name. Attempts two and three overwrite any partial artifact left by an ambiguous finalize response, so the downstream merge sees at most one profile from that producer.
Required producer artifacts include the current run attempt or shared assignment generation. BVT execution logs and all failure-diagnostic artifacts defined by the current main entrypoint workflows use immutable attempt-specific names. A rerun cannot collide with, overwrite, or misrepresent evidence from an earlier attempt.
The fixed-name final-result-files artifact retains its established consumer contract and explicitly overwrites on its first attempt.
Every internal composite step has an explicit not-cancelled status condition. This avoids the implicit success-only gate inside a composite action and preserves callers that intentionally upload artifacts after an earlier job step has failed.
BVT execution logs are diagnostic. They are published after container shutdown and required coverage publication, retry publication failures, and use continue-on-error so their final failure cannot turn a successful coverage producer into a failed prerequisite.
Missing UT profiles and other required single-file inputs remain errors. BVT coverage uploads retain their existing warning behavior for legacy branches where coverage is intentionally unsupported.
Observability and user experience
Performance
The successful producer path still invokes actions/upload-artifact only once and executes no backoff shell step. The final coverage summary adds one small reporting shell step after publication. Retries operate on existing producer output.
The shared build is already a tar.gz file, so it uses compression level 0 to avoid redundant zlib work; text coverage profiles retain the default compression level 6.
Diagnostic retries run only after service cleanup and required coverage publication. Failure diagnostics remain direct single-attempt best-effort uploads so an already-failed job does not incur additional retry delay.
The protected Check Yaml job downloads one checksum-pinned ARM64 actionlint binary only when workflow/action validation is triggered and has a 10-minute job bound. The raw disablement-baseline pass reuses that binary; the full second scan completed locally in under 0.1 seconds. Removing changed-files removes a 7-second action step; unconditional validation costs the same measured 7 seconds on action-only changes and saves about 7 seconds when workflows change.
Validation
macos-15-intelas the supported x86_64 successor to the fully retiredmacos-13; actionlint recognizes both migrated jobsDecision log
macos-15-intelpreserves the Darwin/x86 release architecture while replacing hosted images that GitHub no longer schedules@mainso fixes propagate to MatrixOne callersMitigates matrixorigin/matrixone#27526 and hardens the broader artifact publication and diagnostic paths.