@@ -91,26 +91,29 @@ jobs:
9191 API_KEY_ID_RAW : ${{ secrets.APP_STORE_CONNECT_KEY_ID }}
9292 API_ISSUER_RAW : ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }}
9393 run : |
94- KEY_ID=$(echo "$API_KEY_ID_RAW" | tr -d '[:space:]')
95- ISSUER_ID=$(echo "$API_ISSUER_RAW" | tr -d '[:space:]')
96- KEY_DIR=~/.appstoreconnect/private_keys
97- mkdir -p "$KEY_DIR"
98- KEY_PATH="$KEY_DIR/AuthKey_${KEY_ID}.p8"
99- # Reconstruct proper PEM with 64-char line wraps
100- RAW=$(echo "$API_KEY" | tr -d '[:space:]')
101- if echo "$RAW" | grep -q "BEGINPRIVATEKEY\|BEGIN PRIVATE KEY"; then
102- B64=$(echo "$RAW" | sed 's/-----BEGIN PRIVATE KEY-----//;s/-----END PRIVATE KEY-----//')
94+ set -euo pipefail
95+ API_KEY_ID=$(printf '%s' "$API_KEY_ID_RAW" | tr -d '[:space:]')
96+ API_ISSUER=$(printf '%s' "$API_ISSUER_RAW" | tr -d '[:space:]')
97+ mkdir -p "$HOME/.appstoreconnect/private_keys"
98+ RAW_FILE="$RUNNER_TEMP/api_key_raw.p8"
99+ KEY_FILE="$HOME/.appstoreconnect/private_keys/AuthKey_${API_KEY_ID}.p8"
100+ if printf '%s' "$API_KEY" | head -c 20 | grep -q "^-----BEGIN"; then
101+ printf '%s' "$API_KEY" | tr -d '\r' > "$RAW_FILE"
103102 else
104- B64="$RAW "
103+ printf '%s' "$API_KEY" | tr -d '\r ' | base64 -D > "$RAW_FILE "
105104 fi
106- { printf -- "-----BEGIN PRIVATE KEY-----\n"
105+ RAW_CONTENT=$(cat "$RAW_FILE" | tr -d '\r')
106+ KEY_TYPE=$(printf '%s' "$RAW_CONTENT" | grep -o -- "-----BEGIN [^-]*-----" | head -1 | sed 's/-----BEGIN //;s/-----//')
107+ B64=$(printf '%s' "$RAW_CONTENT" | grep -v "^-----" | tr -d '\n\r ')
108+ { printf -- "-----BEGIN %s-----\n" "$KEY_TYPE"
107109 printf '%s' "$B64" | fold -w 64
108- printf -- "\n-----END PRIVATE KEY-----\n"; } > "$KEY_PATH"
109- chmod 600 "$KEY_PATH"
110- echo "key_id=${KEY_ID}" >> "$GITHUB_OUTPUT"
111- echo "issuer_id=${ISSUER_ID}" >> "$GITHUB_OUTPUT"
112- echo "key_path=${KEY_PATH}" >> "$GITHUB_OUTPUT"
113- echo "ASC API key written for key ID: ${KEY_ID}"
110+ printf "\n-----END %s-----\n" "$KEY_TYPE"; } > "$KEY_FILE"
111+ chmod 600 "$KEY_FILE"
112+ rm -f "$RAW_FILE"
113+ echo "key_id=${API_KEY_ID}" >> "$GITHUB_OUTPUT"
114+ echo "issuer_id=${API_ISSUER}" >> "$GITHUB_OUTPUT"
115+ echo "key_path=${KEY_FILE}" >> "$GITHUB_OUTPUT"
116+ echo "ASC API key written ($(wc -l < "$KEY_FILE") lines) for key ID: ${API_KEY_ID}"
114117
115118 - name : Build Release Archive
116119 run : |
0 commit comments