Repository navigation
fix(ci): restore the workflow_dispatch re-run path in the release pipeline - #54
Merged
Merged
Conversation
…eline PR #52 added `startsWith(github.ref, 'refs/tags/')` to publish, create-github-release and post-release-validation. That guard is wrong for this workflow: workflow_dispatch takes a *required* `tag` input and every job checks it out via `inputs.tag || github.ref`, so a dispatch is the documented way to re-run the pipeline for an existing tag. On a dispatch `github.ref` is `refs/heads/main`, so the guard was always false. The upload was skipped silently and the run still went green -- failure that looks like success. v2.0.0 needed three attempts, which is exactly when that re-run path matters. Duplicate uploads were never the risk this guard protected against: validate-release already exits 1 via "Check if tag already exists in releases". The least-privilege permissions work from #52 is kept untouched. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Contributor
🔍 CI Quality Gates SummaryOverall Status: ✅ All Passed
🔗 Quick Links🛠️ Quick Fix Commands# Fix most issues automatically
ruff format .
ruff check . --fix
# Run tests locally
pytest tests/unit/ --cov=markitdown_mcp
# Check types
mypy markitdown_mcpLast updated: 2026-08-24 22:48:31 UTC |
Contributor
🔍 PR Quality SummaryCI Status✅ Docs: success Metrics
Quality Checks
MCP Tools
🤖 Auto-generated by CI • Last updated: 2026-08-24 22:48 UTC |
This was referenced Aug 24, 2026
4 tasks
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.
Follow-up to #52. That PR's least-privilege permissions work in
pre-release.ymlis good and stays untouched — this only reverts the three tag guards it added torelease.yml.The problem
#52 added to
publish,create-github-releaseandpost-release-validation:with the rationale that "a manual
workflow_dispatchrun is a dry run of build + quality gates". That is not what a dispatch means in this workflow:The input is required, and every job checks it out via
ref: ${{ inputs.tag || github.ref }}(lines 39, 91, 148, 191, 290, 488). A dispatch is the documented way to re-run the pipeline for a tag that already exists.On
workflow_dispatch,github.refisrefs/heads/main, neverrefs/tags/*. So the guard was always false:publishwas skipped,create-github-releasewas skipped, and the run still finished green. Failure that looks like success — the worst kind.Why this matters concretely
v2.0.0needed three attempts (21:56,22:08,22:12) because themypy --strictgate failed on Python 3.12 over a PEP 695typestatement in the numpy stubs. A tag that exists with a half-finished pipeline is exactly the situation the dispatch re-run exists for. With the guard in place the only remaining option would be deleting and re-pushing the tag.The risk it was meant to address is already covered
A duplicate upload cannot slip through, because
validate-releaseruns:A re-run of a fully completed release fails early and loudly. A re-run of a half-failed one proceeds, which is the intent.
Changes
CHANGELOG.mdentry under[Unreleased]Validation
actionlint: 7 shellcheck findings before, 7 after — all pre-existing in untouched jobs, none introducedgrep -c "startsWith(github.ref" .github/workflows/release.yml→ 0Note on the same guard elsewhere
In trsdn/obsidian-mcp I deliberately added this exact guard (PR #11). There
workflow_dispatchhas no tag input, so a dispatch would have published whatever versionmainheld. Same line, opposite effect — what decides it is the trigger design of the individual workflow.