fix: resolve CI release workflow artifact copy error#239
Conversation
The 'Prepare CLI Binaries' step was trying to copy a file to itself: - gestalt-cli-linux/gestalt_cli -> gestalt-cli-linux/gestalt_cli (same file!) Fixed by: - Using dedicated subdirectories: linux/ and macos/ - Updated Create Release step to use correct file paths - This unblocks the Build and Release workflow
|
Note Gemini is unable to generate a summary for this pull request due to the file types involved not being currently supported. |
|
🤖 Guardian Decision: AUTO-MERGE (Confidence: 100%) |
|
Important Review skippedReview was skipped due to path filters ⛔ Files ignored due to path filters (1)
CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughThis PR modifies the GitHub Actions release workflow to update an environment variable format from a boolean-like value to a string, and restructures the CLI artifact staging directories from nested paths (e.g., Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/workflows/release.yml:
- Around line 168-171: The release asset copy commands create identical
basenames causing overwrite; update the cp targets to give each platform a
unique asset name (e.g., copy release-assets/gestalt-cli-linux/gestalt_cli ->
release-assets/linux/gestalt-linux or gestalt_linux and
release-assets/gestalt-cli-macos/gestalt_cli ->
release-assets/macos/gestalt-macos or gestalt_macos) so
softprops/action-gh-release will upload distinct asset names; modify the two cp
commands (the ones copying gestalt_cli into release-assets/linux/gestalt and
release-assets/macos/gestalt) to use platform-specific filenames.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 2d77c3c9-6674-4124-81bc-c1bb9c2c2047
📒 Files selected for processing (1)
.github/workflows/release.yml
| mkdir -p release-assets/linux | ||
| cp release-assets/gestalt-cli-linux/gestalt_cli release-assets/linux/gestalt | ||
| mkdir -p release-assets/macos | ||
| cp release-assets/gestalt-cli-macos/gestalt_cli release-assets/macos/gestalt |
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
Does softprops/action-gh-releaseuse each file's basename as the uploaded asset name, and how does it handle two files with the same basename whenoverwrite_files is enabled?
💡 Result:
Yes, softprops/action-gh-release uses each file's basename (filename without path) as the uploaded asset name on GitHub Releases. When overwrite_files is enabled (default: true), it overwrites existing assets with the same name; the later file replaces the earlier one if basenames match.
Citations:
- 1: https://github.com/softprops/action-gh-release
- 2: feat: add input option
overwrite_filessoftprops/action-gh-release#343 - 3: Support release asset patching behavior to overwrite existing release assets softprops/action-gh-release#45
Duplicate release asset basenames will cause overwrite during release upload.
The files copied to release-assets/linux/gestalt and release-assets/macos/gestalt have identical basenames. Since softprops/action-gh-release uses each file's basename as the asset name and overwrites existing assets with the same name by default, the second file will overwrite the first during upload, causing loss of one binary.
Rename the files to unique platform-specific names:
Proposed fix
- name: Prepare CLI Binaries
run: |
cp release-assets/neural-link-backend-windows/gestalt.exe release-assets/gestalt_timeline.exe
cp release-assets/neural-link-app-android/app-release.apk release-assets/app-release.apk
cp release-assets/gestalt-cli-windows/gestalt_cli.exe release-assets/gestalt-cli-windows.exe
mkdir -p release-assets/linux
- cp release-assets/gestalt-cli-linux/gestalt_cli release-assets/linux/gestalt
+ cp release-assets/gestalt-cli-linux/gestalt_cli release-assets/linux/gestalt-linux
mkdir -p release-assets/macos
- cp release-assets/gestalt-cli-macos/gestalt_cli release-assets/macos/gestalt
+ cp release-assets/gestalt-cli-macos/gestalt_cli release-assets/macos/gestalt-macos
@@
files: |
release-assets/gestalt_timeline.exe
release-assets/app-release.apk
release-assets/gestalt-cli-windows.exe
- release-assets/linux/gestalt
- release-assets/macos/gestalt
+ release-assets/linux/gestalt-linux
+ release-assets/macos/gestalt-macos🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.github/workflows/release.yml around lines 168 - 171, The release asset copy
commands create identical basenames causing overwrite; update the cp targets to
give each platform a unique asset name (e.g., copy
release-assets/gestalt-cli-linux/gestalt_cli ->
release-assets/linux/gestalt-linux or gestalt_linux and
release-assets/gestalt-cli-macos/gestalt_cli ->
release-assets/macos/gestalt-macos or gestalt_macos) so
softprops/action-gh-release will upload distinct asset names; modify the two cp
commands (the ones copying gestalt_cli into release-assets/linux/gestalt and
release-assets/macos/gestalt) to use platform-specific filenames.
📊 Benchmark SummaryComparing Python memory benchmarks... Comparing Rust core benchmarks... |
|
🤖 Guardian Decision: AUTO-MERGE (Confidence: 90%) |
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
📊 Benchmark SummaryComparing Python memory benchmarks... Comparing Rust core benchmarks... |
|
Cannot merge cleanly (needs rebase). Will reassign to Jules. |
Summary
The 'Prepare CLI Binaries' step in release.yml was failing because it tried to copy a file to itself:
cp: 'release-assets/gestalt-cli-linux/gestalt_cli' and 'release-assets/gestalt-cli-linux/gestalt_cli' are the same fileFix
Testing
This is a pure workflow fix. CI will validate on merge.
Summary by CodeRabbit