@@ -230,10 +230,31 @@ jobs:
230230 overwrite : true
231231
232232 - name : Upload app to Nextcloud appstore (nightly)
233- uses : nextcloud-releases/nextcloud-appstore-push-action@a011fe619bcf6e77ddebc96f9908e1af4071b9c1 # v1.0.3
234- with :
235- app_name : ${{ env.APP_NAME }}
236- appstore_token : ${{ secrets.APPSTORE_TOKEN }}
237- download_url : ${{ steps.attach_to_release.outputs.browser_download_url }}
238- app_private_key : ${{ secrets.APP_PRIVATE_KEY }}
239- nightly : true
233+ env :
234+ APPSTORE_TOKEN : ${{ secrets.APPSTORE_TOKEN }}
235+ APP_PRIVATE_KEY : ${{ secrets.APP_PRIVATE_KEY }}
236+ DOWNLOAD_URL : ${{ steps.attach_to_release.outputs.browser_download_url }}
237+ run : |
238+ APPSTORE_TOKEN="$(printf '%s' "$APPSTORE_TOKEN" | tr -d '\r\n')"
239+ KEY_FILE="$RUNNER_TEMP/${{ env.APP_NAME }}.key"
240+ APP_TGZ="$RUNNER_TEMP/${{ env.APP_NAME }}.tar.gz"
241+ RESPONSE_FILE="$RUNNER_TEMP/appstore-response.json"
242+
243+ printf '%s' "$APP_PRIVATE_KEY" > "$KEY_FILE"
244+ wget "$DOWNLOAD_URL" -O "$APP_TGZ"
245+
246+ SIGNATURE="$(openssl dgst -sha512 -sign "$KEY_FILE" "$APP_TGZ" | openssl base64 -A)"
247+ PAYLOAD="$(jq -nc --arg download "$DOWNLOAD_URL" --arg signature "$SIGNATURE" '{download:$download, signature:$signature, nightly:true}')"
248+
249+ HTTP_STATUS="$(curl -sS -o "$RESPONSE_FILE" -w '%{http_code}' -X POST https://apps.nextcloud.com/api/v1/apps/releases \
250+ -H "Authorization: Token ${APPSTORE_TOKEN}" \
251+ -H 'Content-Type: application/json' \
252+ --data "$PAYLOAD")"
253+
254+ echo "App Store response status: $HTTP_STATUS"
255+ cat "$RESPONSE_FILE"
256+
257+ if [ "$HTTP_STATUS" -lt 200 ] || [ "$HTTP_STATUS" -ge 300 ]; then
258+ echo "::error::App Store upload failed with HTTP $HTTP_STATUS"
259+ exit 1
260+ fi
0 commit comments