Handle existing keychains in release workflow to ensure proper keychain configuration during code signing

This commit is contained in:
Luis Pater committed 2026-07-20 00:47:06 +08:00
1 parent 0f22792d50
commit af5621d941
1 file changed
+14
+14
View File
@@ -178,6 +178,15 @@ jobs:
keychain_path="$RUNNER_TEMP/apple-signing.keychain-db"
keychain_password="$(uuidgen)"
binary="src-tauri/target/release/cpa-gui"
keychain_list="$(security list-keychains -d user)"
existing_keychains=()
while IFS= read -r existing_keychain; do
existing_keychain="${existing_keychain#*\"}"
existing_keychain="${existing_keychain%\"*}"
if [ -n "$existing_keychain" ]; then
existing_keychains+=("$existing_keychain")
fi
done <<< "$keychain_list"
cleanup() {
rm -f "$certificate_path"
@@ -192,6 +201,11 @@ jobs:
printf '%s' "$APPLE_CERTIFICATE" | base64 -D > "$certificate_path"
security create-keychain -p "$keychain_password" "$keychain_path"
if [ "${#existing_keychains[@]}" -gt 0 ]; then
security list-keychains -d user -s "$keychain_path" "${existing_keychains[@]}"
else
security list-keychains -d user -s "$keychain_path"
fi
security set-keychain-settings -lut 21600 "$keychain_path"
security unlock-keychain -p "$keychain_password" "$keychain_path"
security import "$certificate_path" -k "$keychain_path" -P "$APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign