Skip to content

Commit 177c22c

Browse files
bdejongclaude
andcommitted
Create release zips on native platforms to preserve permissions
Each build job now creates its own zip using platform-native tools (ditto on macOS, zip on Linux, 7z on Windows) instead of re-zipping on the ubuntu release runner. This fixes macOS standalone apps being unopenable due to lost executable permissions in the artifact transfer. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent c35cc69 commit 177c22c

1 file changed

Lines changed: 10 additions & 11 deletions

File tree

.github/workflows/build.yml

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -110,36 +110,39 @@ jobs:
110110
xcrun stapler staple "$bundle"
111111
done
112112
113-
- name: Collect artifacts (macOS)
113+
- name: Collect and zip artifacts (macOS)
114114
if: runner.os == 'macOS'
115115
run: |
116116
mkdir -p artifacts/{VST3,AU,LV2,Standalone}
117117
find build -name "*.vst3" -type d -exec cp -R {} artifacts/VST3/ \;
118118
find build -name "*.component" -type d -exec cp -R {} artifacts/AU/ \;
119119
find build -name "*.lv2" -type d -exec cp -R {} artifacts/LV2/ \;
120120
find build -name "*.app" -type d -exec cp -R {} artifacts/Standalone/ \;
121+
ditto -c -k artifacts smartelectronix-macOS.zip
121122
122-
- name: Collect artifacts (Linux)
123+
- name: Collect and zip artifacts (Linux)
123124
if: runner.os == 'Linux'
124125
run: |
125126
mkdir -p artifacts/{VST3,LV2,Standalone}
126127
find build -name "*.vst3" -type d -exec cp -R {} artifacts/VST3/ \;
127128
find build -name "*.lv2" -type d -exec cp -R {} artifacts/LV2/ \;
128129
find build -type f -executable -path "*/Standalone/*" -exec cp {} artifacts/Standalone/ \;
130+
cd artifacts && zip -r ../smartelectronix-Linux.zip .
129131
130-
- name: Collect artifacts (Windows)
132+
- name: Collect and zip artifacts (Windows)
131133
if: runner.os == 'Windows'
132134
shell: bash
133135
run: |
134136
mkdir -p artifacts/{VST3,Standalone}
135137
find build -name "*.vst3" -type d -exec cp -R {} artifacts/VST3/ \;
136138
find build -name "*.exe" ! -name "*_vst3_helper.exe" -exec cp {} artifacts/Standalone/ \;
139+
cd artifacts && 7z a -r ../smartelectronix-Windows.zip .
137140
138-
- name: Upload artifacts
141+
- name: Upload zip
139142
uses: actions/upload-artifact@v4
140143
with:
141144
name: smartelectronix-${{ runner.os }}
142-
path: artifacts/
145+
path: smartelectronix-*.zip
143146
if-no-files-found: error
144147

145148
release:
@@ -154,12 +157,8 @@ jobs:
154157
with:
155158
path: all-artifacts
156159

157-
- name: Zip artifacts
158-
run: |
159-
cd all-artifacts
160-
for dir in */; do
161-
(cd "$dir" && zip -r "../../${dir%/}.zip" .)
162-
done
160+
- name: Collect zips
161+
run: find all-artifacts -name "*.zip" -exec mv {} . \;
163162

164163
- name: Delete existing release
165164
run: gh release delete latest --yes --cleanup-tag || true

0 commit comments

Comments
 (0)