Skip to content

Commit 59b9690

Browse files
committed
fix(actions): make appstore upload explicit and debuggable
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
1 parent cc495a5 commit 59b9690

File tree

2 files changed

+56
-13
lines changed

2 files changed

+56
-13
lines changed

.github/workflows/appstore-build-publish.yml

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,31 @@ jobs:
136136
overwrite: true
137137

138138
- name: Upload app to Nextcloud appstore
139-
uses: nextcloud-releases/nextcloud-appstore-push-action@a011fe619bcf6e77ddebc96f9908e1af4071b9c1 # v1.0.3
140-
with:
141-
app_name: ${{ env.APP_NAME }}
142-
appstore_token: ${{ secrets.APPSTORE_TOKEN }}
143-
download_url: ${{ steps.attach_to_release.outputs.browser_download_url }}
144-
app_private_key: ${{ secrets.APP_PRIVATE_KEY }}
139+
env:
140+
APPSTORE_TOKEN: ${{ secrets.APPSTORE_TOKEN }}
141+
APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }}
142+
DOWNLOAD_URL: ${{ steps.attach_to_release.outputs.browser_download_url }}
143+
run: |
144+
APPSTORE_TOKEN="$(printf '%s' "$APPSTORE_TOKEN" | tr -d '\r\n')"
145+
KEY_FILE="$RUNNER_TEMP/${{ env.APP_NAME }}.key"
146+
APP_TGZ="$RUNNER_TEMP/${{ env.APP_NAME }}.tar.gz"
147+
RESPONSE_FILE="$RUNNER_TEMP/appstore-response.json"
148+
149+
printf '%s' "$APP_PRIVATE_KEY" > "$KEY_FILE"
150+
wget "$DOWNLOAD_URL" -O "$APP_TGZ"
151+
152+
SIGNATURE="$(openssl dgst -sha512 -sign "$KEY_FILE" "$APP_TGZ" | openssl base64 -A)"
153+
PAYLOAD="$(jq -nc --arg download "$DOWNLOAD_URL" --arg signature "$SIGNATURE" '{download:$download, signature:$signature, nightly:false}')"
154+
155+
HTTP_STATUS="$(curl -sS -o "$RESPONSE_FILE" -w '%{http_code}' -X POST https://apps.nextcloud.com/api/v1/apps/releases \
156+
-H "Authorization: Token ${APPSTORE_TOKEN}" \
157+
-H 'Content-Type: application/json' \
158+
--data "$PAYLOAD")"
159+
160+
echo "App Store response status: $HTTP_STATUS"
161+
cat "$RESPONSE_FILE"
162+
163+
if [ "$HTTP_STATUS" -lt 200 ] || [ "$HTTP_STATUS" -ge 300 ]; then
164+
echo "::error::App Store upload failed with HTTP $HTTP_STATUS"
165+
exit 1
166+
fi

.github/workflows/nightly-release.yml

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)