Skip to content
This repository was archived by the owner on May 24, 2026. It is now read-only.

Commit 846b6d0

Browse files
authored
Fix CI signing: certificate, profile extension, and bundle ID (#67)
* Fix CI: use printf instead of echo for base64 decoding secrets * Fix CI: strip whitespace from base64 secrets before decoding * Fix base64 decode of signing certificate in CI Use 'printenv | openssl base64 -d -A' instead of 'printf | tr | base64 --decode'. openssl's base64 decoder is more lenient with whitespace and padding, fixing 'base64: stdin: (null): error decoding base64 input stream'. Also adds validation that the decoded P12 is non-empty. * Fix provisioning profile extension: use .provisionprofile for Mac Catalyst Mac Catalyst/macOS provisioning profiles require .provisionprofile extension, not .mobileprovision (which is for iOS). The wrong extension caused the build to fail with 'provisioning profile could not be found'. * Fix ApplicationId to match provisioning profile: com.microsoft.PolyPilot
1 parent 195ad7f commit 846b6d0

2 files changed

Lines changed: 11 additions & 7 deletions

File tree

.github/workflows/build.yml

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -109,15 +109,19 @@ jobs:
109109
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
110110
KEYCHAIN_PASSWORD=$(openssl rand -base64 32)
111111
112-
# Install provisioning profile
112+
# Install provisioning profile (.provisionprofile for Mac Catalyst/macOS)
113113
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
114-
echo "$APPLE_PROVISIONING_PROFILE" | base64 --decode > $RUNNER_TEMP/profile.mobileprovision
115-
PROFILE_UUID=$(/usr/libexec/PlistBuddy -c "Print UUID" /dev/stdin <<< $(security cms -D -i $RUNNER_TEMP/profile.mobileprovision))
116-
cp $RUNNER_TEMP/profile.mobileprovision ~/Library/MobileDevice/Provisioning\ Profiles/$PROFILE_UUID.mobileprovision
114+
printenv APPLE_PROVISIONING_PROFILE | openssl base64 -d -A > $RUNNER_TEMP/profile.provisionprofile
115+
PROFILE_UUID=$(/usr/libexec/PlistBuddy -c "Print UUID" /dev/stdin <<< $(security cms -D -i $RUNNER_TEMP/profile.provisionprofile))
116+
cp $RUNNER_TEMP/profile.provisionprofile ~/Library/MobileDevice/Provisioning\ Profiles/$PROFILE_UUID.provisionprofile
117117
echo "Installed profile with UUID: $PROFILE_UUID"
118118
119119
# Create keychain and import certificate
120-
echo "$APPLE_CERTIFICATE_P12" | base64 --decode > $RUNNER_TEMP/certificate.p12
120+
printenv APPLE_CERTIFICATE_P12 | openssl base64 -d -A > $RUNNER_TEMP/certificate.p12
121+
if [ ! -s $RUNNER_TEMP/certificate.p12 ]; then
122+
echo "::error::Failed to decode APPLE_CERTIFICATE_P12 — check that the secret is valid base64"
123+
exit 1
124+
fi
121125
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
122126
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
123127
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
@@ -249,7 +253,7 @@ jobs:
249253
if: always()
250254
run: |
251255
security delete-keychain $RUNNER_TEMP/app-signing.keychain-db || true
252-
rm -f $RUNNER_TEMP/certificate.p12 $RUNNER_TEMP/profile.mobileprovision || true
256+
rm -f $RUNNER_TEMP/certificate.p12 $RUNNER_TEMP/profile.provisionprofile || true
253257
254258
notarize-maccatalyst:
255259
name: Notarize Mac Catalyst App

PolyPilot/PolyPilot.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
<ApplicationTitle>PolyPilot</ApplicationTitle>
3434

3535
<!-- App Identifier -->
36-
<ApplicationId>com.companyname.PolyPilot</ApplicationId>
36+
<ApplicationId>com.microsoft.PolyPilot</ApplicationId>
3737

3838
<!-- Versions -->
3939
<ApplicationDisplayVersion>1.0</ApplicationDisplayVersion>

0 commit comments

Comments
 (0)