Conversation
…terns match patternToRegexp() silently escaped glob characters (* and ?), treating "sentry-*" as an exact match for the literal string "sentry-*" instead of matching "sentry-linux-x64" etc. This caused getsentry/cli#230 where a release shipped without platform binaries. Add first-class glob support: * maps to .* and ? maps to . in regex. Plain strings and /regex/ syntax remain unchanged. Add validation in doListArtifactsWithFilters() that every configured workflow pattern matched at least one workflow run, and every artifact pattern matched at least one artifact. This catches misconfigurations early with clear error messages listing available names, instead of letting them surface as confusing per-target failures. Add a belt-and-suspenders check in publishMain() that errors when artifact filters are configured but zero artifacts are found.
BYK
commented
Feb 11, 2026
Address PR review feedback to use a more idiomatic check.
Member
Author
|
Addressed the review feedback in e19fc46 — switched from |
…rkflow Address Cursor BugBot feedback: - validateAllPatternsMatched now returns errors instead of throwing, allowing the retry loop to retry when not all patterns match yet (e.g. due to API propagation delay) - Artifact pattern checks are now scoped to runs matching the filter's workflow pattern, preventing cross-workflow false positives
BYK
commented
Feb 11, 2026
…ests Avoid conditionals in test assertions — use workflow!.test() instead of workflow?.test() to make it explicit that workflow is expected to be defined.
Contributor
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.
The belt-and-suspenders check in publishMain() was dead code: printRevisionSummary() already calls listArtifactsForRevision() which triggers the provider's validation. If that throws, execution stops before this check; if it succeeds, the cached result is non-empty.
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
Fixes a class of silent misconfiguration bugs in artifact pattern matching, motivated by getsentry/cli#230 where
'sentry-*'in.craft.ymlwas silently treated as an exact match for the literal string"sentry-*"instead of matching"sentry-linux-x64"etc.Changes
Glob pattern support (
src/utils/filters.ts):patternToRegexp()now supports glob wildcards:*maps to.*,?maps to.in regex/regex/syntax remain unchangedglobToRegex()helper functionAll-patterns-must-match validation (
src/artifact_providers/github.ts):validateAllPatternsMatched()method ensures every configured workflow pattern matched at least one workflow run, and every artifact pattern matched at least one artifactPublish-level safeguard (
src/commands/publish.ts):artifactProvider.config.artifactsis set but zero artifacts are found,reportError()stops the publish early instead of proceeding to targets that will individually fail with confusing messagesBackward Compatibility
*or?: behavior unchanged (exact match)/regex/syntax: behavior unchanged*or?: previously silently wrong (escaped the chars), now correctly treated as globs — this is a bugfixRefs: getsentry/cli#230