Skip to content

Publish to Nextcloud app store #15

Publish to Nextcloud app store

Publish to Nextcloud app store #15

name: Publish to Nextcloud app store
on:
workflow_dispatch:
env:
APP_NAME: cloud_py_api
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Get release url
run: |
APP_VERSION=$(sed -n "s/<version>\(.*\)<\/version>/\\1/p" ./appinfo/info.xml | tr -d '\t')
IS_NIGHTLY=$(if [[ $APP_VERSION == *"beta"* ]]; then echo "true"; else echo "false"; fi)
REP_NAME=${{github.repository_owner}}
RELEASE_URL=https://github.com/$REP_NAME/$APP_NAME/releases/download/v$APP_VERSION/$APP_NAME.tar.gz
curl -f --output app.tar.gz -L $RELEASE_URL
echo "RELEASE_URL=$RELEASE_URL" >> $GITHUB_ENV
echo "IS_NIGHTLY=$IS_NIGHTLY" >> $GITHUB_ENV
- name: Prepare signature data
env:
NEXTCLOUD_APPSTORE_SIGNING_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }}
run: 'echo "$NEXTCLOUD_APPSTORE_SIGNING_PRIVATE_KEY" > app.key'
- name: Sign release package
run: |
RELEASE_SIGNATURE="$(openssl dgst -sha512 -sign app.key app.tar.gz | openssl base64 -A)"
echo "RELEASE_SIGNATURE=$RELEASE_SIGNATURE" >> $GITHUB_ENV
- name: Publish release in app store
env:
NEXTCLOUD_APPSTORE_API_TOKEN: ${{ secrets.APP_STORE_TOKEN }}
run: 'curl -f -X POST https://apps.nextcloud.com/api/v1/apps/releases -H "Authorization: Token $NEXTCLOUD_APPSTORE_API_TOKEN" -H "Content-Type: application/json" -d ''{"download":"''$RELEASE_URL''","signature": "''$RELEASE_SIGNATURE''","nightly": "''$IS_NIGHTLY''"}'''