Skip to content

Commit d28150b

Browse files
CI builds App Store .pkg as artifact, upload happens locally (#376)
Removes the slow xcrun altool upload from CI (was hanging for 50+ min). CI now just builds + signs and publishes the .pkg as a workflow artifact. Local upload via 'fastlane upload_build pkg:...' uses the App Store Connect API key from noxkey — fast feedback, cancellable, no CI hangs. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 6e1bc1e commit d28150b

File tree

2 files changed

+34
-16
lines changed

2 files changed

+34
-16
lines changed

.github/workflows/release-appstore.yml

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -112,33 +112,34 @@ jobs:
112112
</plist>
113113
PLIST
114114
115-
- name: Export and upload to App Store Connect
116-
env:
117-
APPLE_ID: ${{ secrets.APPLE_ID }}
118-
APPLE_APP_PASSWORD: ${{ secrets.APPLE_APP_PASSWORD }}
119-
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
115+
- name: Export App Store .pkg
120116
run: |
121117
xcodebuild -exportArchive \
122118
-archivePath build/NoxKey.xcarchive \
123119
-exportOptionsPlist build/ExportOptions.plist \
124120
-exportPath build/appstore-export
125121
126-
# Find the exported pkg
127122
PKG_FILE=$(find build/appstore-export -name "*.pkg" | head -1)
128-
echo "Uploading: $PKG_FILE"
123+
echo "Built: $PKG_FILE"
124+
mv "$PKG_FILE" "build/NoxKey-${VERSION}-appstore.pkg"
129125
130-
# Upload to App Store Connect using app-specific password
131-
xcrun altool --upload-app \
132-
-f "$PKG_FILE" \
133-
-u "$APPLE_ID" \
134-
-p "$APPLE_APP_PASSWORD" \
135-
--type macos
126+
- name: Upload .pkg as artifact
127+
uses: actions/upload-artifact@v4
128+
with:
129+
name: NoxKey-appstore-pkg
130+
path: build/NoxKey-${{ env.VERSION }}-appstore.pkg
131+
retention-days: 30
136132

137133
- name: Summary
138134
run: |
139-
echo "## App Store Upload Complete" >> $GITHUB_STEP_SUMMARY
135+
echo "## App Store Build Ready" >> $GITHUB_STEP_SUMMARY
140136
echo "" >> $GITHUB_STEP_SUMMARY
141137
echo "**Version:** ${VERSION}" >> $GITHUB_STEP_SUMMARY
142138
echo "" >> $GITHUB_STEP_SUMMARY
143-
echo "The build has been uploaded to App Store Connect." >> $GITHUB_STEP_SUMMARY
144-
echo "Go to [App Store Connect](https://appstoreconnect.apple.com) to submit for review." >> $GITHUB_STEP_SUMMARY
139+
echo "Download the artifact from the run page, then upload locally:" >> $GITHUB_STEP_SUMMARY
140+
echo '```' >> $GITHUB_STEP_SUMMARY
141+
echo "eval \"\$(noxkey get noboxdev/noxkey/APP_STORE_CONNECT_API_KEY_P8_B64)\" && \\" >> $GITHUB_STEP_SUMMARY
142+
echo "eval \"\$(noxkey get noboxdev/noxkey/APP_STORE_CONNECT_KEY_ID)\" && \\" >> $GITHUB_STEP_SUMMARY
143+
echo "eval \"\$(noxkey get noboxdev/noxkey/APP_STORE_CONNECT_ISSUER_ID)\" && \\" >> $GITHUB_STEP_SUMMARY
144+
echo "fastlane deliver --pkg ~/Downloads/NoxKey-${VERSION}-appstore.pkg --skip_metadata --skip_screenshots" >> $GITHUB_STEP_SUMMARY
145+
echo '```' >> $GITHUB_STEP_SUMMARY

fastlane/Fastfile

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,23 @@ platform :mac do
5454
)
5555
end
5656

57+
desc "Upload a built .pkg to App Store Connect (build locally or download CI artifact)"
58+
lane :upload_build do |options|
59+
pkg = options[:pkg]
60+
UI.user_error!("Pass pkg:/path/to/NoxKey.pkg") unless pkg
61+
deliver(
62+
api_key_path: ENV["APP_STORE_CONNECT_API_KEY_PATH"],
63+
pkg: pkg,
64+
skip_screenshots: true,
65+
skip_metadata: true,
66+
skip_app_version_update: true,
67+
force: true,
68+
run_precheck_before_submit: false,
69+
platform: "osx",
70+
submit_for_review: false,
71+
)
72+
end
73+
5774
desc "Submit current build for review (uses latest uploaded build)"
5875
lane :submit_for_review do
5976
deliver(

0 commit comments

Comments
 (0)