Skip to content

fix(ci): disable release draft update on PR events to prevent invalid target_commitish error#158

Open
phmatray wants to merge 43 commits intomainfrom
fix/release-drafter-pr-commitish
Open

fix(ci): disable release draft update on PR events to prevent invalid target_commitish error#158
phmatray wants to merge 43 commits intomainfrom
fix/release-drafter-pr-commitish

Conversation

@phmatray
Copy link
Contributor

Problem

The Release Drafter workflow was failing on every PR event with:

Error: Validation Failed: {"resource":"Release","code":"invalid","field":"target_commitish"}

Root cause: When triggered by a pull_request event, the GitHub Actions context sets the ref to refs/pull/*/merge. Release Drafter then tries to use this as the target_commitish when updating the draft release — but the GitHub Releases API rejects it because it's not a valid branch or tag ref.

Affected runs:

  • Run #23369773059 — 2026-03-21
  • Run #23369768998 — 2026-03-21
  • Run #23111592904 — 2026-03-15

Fix

Added disable-releaser: ${{ github.event_name == 'pull_request' }} to the Release Drafter step.

This means:

  • On push to main: Release Drafter drafts/updates the release as normal ✅
  • On pull_request: Release Drafter only runs the autolabeler, skips the release draft update ✅

This is the recommended pattern from the Release Drafter docs.

Testing

The fix will be validated when the next PR triggers the workflow — no failure expected.


Auto-fix PR created by Ritchie (CTO CI health check) — 2026-03-24

dependabot bot and others added 30 commits January 10, 2025 05:43
Bumps [xunit](https://github.com/xunit/xunit) from 2.9.2 to 2.9.3.
- [Commits](xunit/xunit@v2-2.9.2...v2-2.9.3)

---
updated-dependencies:
- dependency-name: xunit
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [coverlet.collector](https://github.com/coverlet-coverage/coverlet) from 6.0.3 to 6.0.4.
- [Release notes](https://github.com/coverlet-coverage/coverlet/releases)
- [Commits](coverlet-coverage/coverlet@v6.0.3...v6.0.4)

---
updated-dependencies:
- dependency-name: coverlet.collector
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [xunit.runner.visualstudio](https://github.com/xunit/visualstudio.xunit) from 3.0.0 to 3.0.2.
- [Release notes](https://github.com/xunit/visualstudio.xunit/releases)
- [Commits](xunit/visualstudio.xunit@3.0.0...3.0.2)

---
updated-dependencies:
- dependency-name: xunit.runner.visualstudio
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 17.12.0 to 17.13.0.
- [Release notes](https://github.com/microsoft/vstest/releases)
- [Changelog](https://github.com/microsoft/vstest/blob/main/docs/releases.md)
- [Commits](microsoft/vstest@v17.12.0...v17.13.0)

---
updated-dependencies:
- dependency-name: Microsoft.NET.Test.Sdk
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [Microsoft.Extensions.DependencyInjection.Abstractions](https://github.com/dotnet/runtime) from 9.0.0 to 9.0.4.
- [Release notes](https://github.com/dotnet/runtime/releases)
- [Commits](dotnet/runtime@v9.0.0...v9.0.4)

---
updated-dependencies:
- dependency-name: Microsoft.Extensions.DependencyInjection.Abstractions
  dependency-version: 9.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Verified that DirectoryRenamed event invocation already correctly passes
the new path parameter. Code at VFS.Rename.cs line 96 matches the
VFSDirectoryRenamedArgs constructor signature perfectly.

Build verification: Succeeded with 0 errors.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…aths

Verified that redo logic at line 180 in ChangeHistory.cs is already correct:
- Uses directoryRenamed.Path (old path where directory is after undo)
- Uses directoryRenamed.NewName to rename forward
- This correctly recreates the original rename operation

Flow verification:
1. Original: /dir1 -> /dir2 (directory at /dir2)
2. Undo: Uses NewPath (/dir2) to rename to OldName -> directory at /dir1
3. Redo: Uses Path (/dir1) to rename to NewName -> directory back at /dir2

No code changes needed - implementation already correct.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…y nested structure

Added comprehensive test RenameDirectory_handles_deeply_nested_structure() that verifies:
- Creates deeply nested structure /a/b/c/d/e with files at each level
- Creates subdirectories at different levels
- Renames a middle directory and verifies all nested paths are updated correctly
- Verifies file contents are preserved
- Verifies file and directory Path properties are correctly updated
- Total of 11 RenameDirectory tests now passing

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Verification Results:
- 25 rename-specific tests: ALL PASSED
- Total test results: 379 passed, 4 pre-existing failures (locale-related)
- No regressions introduced by directory rename fix

The 4 failures are in VFSBinaryExtensionsTests (decimal separator formatting)
and are completely unrelated to the rename operation implementation.

All directory rename functionality verified:
✓ Basic rename operations
✓ Nested file path updates
✓ Deeply nested structures
✓ Event args with correct paths
✓ Undo/redo operations
✓ Edge case and error handling

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…a-requested)

Fixes:
- Add duplicate directory check in VFS.Rename.cs before rename operation
- Add test to verify exception is thrown when renaming to existing name

Verified:
- Validation follows same pattern as CreateDirectory duplicate check
- Test matches pattern from existing duplicate validation tests
- Fixes acceptance criteria #5: renaming to existing name throws exception

QA Fix Session: 1

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Fixes #130

The RenameDirectory method signature takes (VFSDirectoryPath, string),
not (VFSDirectoryPath, VFSDirectoryPath). Updated the demo to use the
correct method signature.

Changes:
- Uncommented the directory rename step
- Fixed second parameter to be a string ('heroes') instead of VFSDirectoryPath
- Removed TODO comment

Tests: All 379 unit tests + 71 GitHub tests pass on net10.0
* chore: standardize renovate config

* chore: fix renovate config for repo technologies
…on.abstractions to 10.0.4 (#150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Resolve conflicts: keep dev Shouldly assertions, incorporate rename
validation fix and new test cases from branch.
Add contributors badge and CI badge to README.
…on.Abstractions-9.0.4' into dev

Keep 10.0.4 (already updated via Renovate), supersedes dependabot 9.0.4.
Keep dev's newer package versions (Test.Sdk 18.3.0, Shouldly, etc.).
phmatray and others added 13 commits March 10, 2026 23:52
Keep dev's newer coverlet.collector 8.0.0.
Keep dev's newer package versions.
Keep dev's generated CSS and .gitignore; incorporate WIP backup changes.
Keep dev versions for all conflicts; remove stale DemoCli csproj from stash.
The buildsphere package does not exist on NuGet, causing Renovate
package lookup failures (fixes #140).
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
… target_commitish error

Release Drafter was failing on all PR events with:
  Error: Validation Failed - field 'target_commitish' is invalid

This happens because on PR events the target_commitish is set to
refs/pull/*/merge which is not a valid target for the GitHub Releases
API. The fix adds  when the event is a
pull_request, so the action still runs autolabeling on PRs but only
updates the draft release on push to main.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant