Skip to content

fix: resolve CI release workflow artifact copy error#239

Closed
iberi22 wants to merge 2 commits into
mainfrom
fix/-node--20--deprecat-i-1774509997163
Closed

fix: resolve CI release workflow artifact copy error#239
iberi22 wants to merge 2 commits into
mainfrom
fix/-node--20--deprecat-i-1774509997163

Conversation

@iberi22
Copy link
Copy Markdown
Owner

@iberi22 iberi22 commented Mar 26, 2026

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 file

Fix

  • Changed copy destinations to dedicated subdirectories (linux/, macos/)
  • Updated Create Release file paths to match

Testing

This is a pure workflow fix. CI will validate on merge.

Summary by CodeRabbit

  • Chores
    • Optimized internal release workflow configuration and artifact staging directories for CLI binaries.

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
@gemini-code-assist
Copy link
Copy Markdown

Note

Gemini is unable to generate a summary for this pull request due to the file types involved not being currently supported.

@github-actions
Copy link
Copy Markdown
Contributor

🤖 Guardian Decision: AUTO-MERGE (Confidence: 100%)

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 26, 2026

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 3d4043d3-4d5d-462c-9e50-9c7379c08e96

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This 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., release-assets/gestalt-cli-linux/gestalt_cli) to flattened paths (e.g., release-assets/linux/gestalt).

Changes

Cohort / File(s) Summary
Release Workflow Configuration
.github/workflows/release.yml
Updated FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 environment variable from true to "true" (string format). Restructured CLI artifact copy destinations for Linux and macOS from nested directories to flattened structure, changing paths like release-assets/gestalt-cli-linux/gestalt_cli to release-assets/linux/gestalt. Updated the Create Release step's file list to reference the new flattened paths.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Poem

🐰 A rabbit hops through workflows fine,
Paths flatten smooth, like garden line,
Variables dressed in quoted string,
Release assets dance and spring! 🎯

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'fix: resolve CI release workflow artifact copy error' accurately and specifically describes the main change: fixing a critical cp command error in the release workflow that was copying files onto themselves.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/-node--20--deprecat-i-1774509997163

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 1655d19 and 7871142.

📒 Files selected for processing (1)
  • .github/workflows/release.yml

Comment on lines +168 to +171
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
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 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:


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.

@github-actions
Copy link
Copy Markdown
Contributor

📊 Benchmark Summary

Comparing Python memory benchmarks...
✅ No regressions detected.

Comparing Rust core benchmarks...
Current results not found: benchmarks/rust_current.json

@github-actions
Copy link
Copy Markdown
Contributor

🤖 Guardian Decision: AUTO-MERGE (Confidence: 90%)

@socket-security
Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatedtracing-subscriber@​0.3.22 ⏵ 0.3.239910093100100
Updateduuid@​1.19.0 ⏵ 1.22.010010093100100

View full report

@github-actions
Copy link
Copy Markdown
Contributor

📊 Benchmark Summary

Comparing Python memory benchmarks...
✅ No regressions detected.

Comparing Rust core benchmarks...
Current results not found: benchmarks/rust_current.json

@iberi22
Copy link
Copy Markdown
Owner Author

iberi22 commented Apr 15, 2026

Cannot merge cleanly (needs rebase). Will reassign to Jules.

@iberi22 iberi22 closed this Apr 15, 2026
@iberi22 iberi22 deleted the fix/-node--20--deprecat-i-1774509997163 branch April 30, 2026 02:11
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