ci: sanitize hive workspace-log artifact names#21598
Merged
Merged
Conversation
matrix.sim and matrix.sim-limit are interpolated into the artifact name, but "/" (ethereum/engine, ethereum/rpc-compat), "|" (eth|discv5, exchange-capabilities|auth) and "*" (.*) are invalid in artifact names, so upload-artifact rejected the upload (masked by continue-on-error) and the hive workspace logs silently vanished for every leg except devp2p-eth-serial. Replace disallowed characters with "_" before upload.
Contributor
There was a problem hiding this comment.
Pull request overview
This PR fixes missing Hive workspace log artifacts in CI by sanitizing the artifact name so it always conforms to actions/upload-artifact naming constraints. This ensures simulator/client logs are consistently uploaded for all matrix legs (including those with /, |, * in interpolated values), instead of silently failing.
Changes:
- Add a step to compute a sanitized artifact name by replacing characters outside
[A-Za-z0-9._-]with_. - Use the computed sanitized name for the
actions/upload-artifactworkspace log upload.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Giulio2002
approved these changes
Jun 3, 2026
Contributor
Giulio2002
left a comment
There was a problem hiding this comment.
LGTM — sanitizes artifact names for GitHub Actions so hive workspace logs upload reliably despite matrix values containing invalid characters.
taratorio
approved these changes
Jun 3, 2026
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
Hive workspace logs (simulator output + erigon client logs) are uploaded with the matrix values interpolated into the artifact name:
actions/upload-artifactforbids/,|and*in artifact names, so the upload fails for every leg whose name contains them — i.e. allethereum/engine,ethereum/rpc-compat(.*limit) anddevp2p-eth|discv5legs. The failure is masked by the step'scontinue-on-error: true, so the logs just silently vanish:Only
hive-workspace-log-devp2p-eth-serialever uploaded. This bit during the investigation of theBlobViolationsflake behind #21597: the failing parallel-leg run (https://github.com/erigontech/erigon/actions/runs/26867180780) had no workspace-log artifact, and the root-cause analysis had to be reconstructed from the job stdout.Fix
Compute the artifact name in a small step that replaces any character outside
[A-Za-z0-9._-]with_. Resulting names per leg:hive-workspace-log-ethereum/engine-exchange-capabilities|auth-serialhive-workspace-log-ethereum_engine-exchange-capabilities_auth-serialhive-workspace-log-ethereum/engine-cancun-parallelhive-workspace-log-ethereum_engine-cancun-parallelhive-workspace-log-ethereum/rpc-compat-.*-serialhive-workspace-log-ethereum_rpc-compat-._-serialhive-workspace-log-devp2p-eth|discv5-parallelhive-workspace-log-devp2p-eth_discv5-parallelhive-workspace-log-devp2p-eth-serial(worked)test-hive-eest.yml(matrix.shardvalues likeparis+shanghai;+is allowed) andrelease.ymlartifact names contain no forbidden characters, so they are left alone.Validated with
actionlintand by evaluating the substitution against every matrix combination.