# name: Deploy CloudFunction (pack & optional upload) # on: # push: # branches: [ main ] # workflow_dispatch: {} # jobs: # deploy: # runs-on: ubuntu-latest # steps: # - name: Checkout # uses: actions/checkout@v4 # - name: Setup Node # uses: actions/setup-node@v4 # with: # node-version: '18' # - name: Install minimal deps for pack script # run: | # cd server # npm install archiver node-fetch form-data # - name: Pack & Upload CloudFunction # env: # CLOUD_UPLOAD_URL: ${{ secrets.CLOUD_UPLOAD_URL }} # CLOUD_UPLOAD_TOKEN: ${{ secrets.CLOUD_UPLOAD_TOKEN }} # UNI_PUSH_APPID: ${{ secrets.UNI_PUSH_APPID }} # run: | # node server/tools/deploy-cloudfunc.js --upload # - name: Trigger Deploy API (optional) # if: ${{ secrets.CLOUD_DEPLOY_API != '' }} # env: # CLOUD_DEPLOY_API: ${{ secrets.CLOUD_DEPLOY_API }} # CLOUD_DEPLOY_TOKEN: ${{ secrets.CLOUD_DEPLOY_TOKEN }} # UPLOAD_URL: ${{ secrets.CLOUD_UPLOAD_URL }} # run: | # echo "Triggering deploy API: $CLOUD_DEPLOY_API" # # POST deploy trigger with basic info; adapt fields to your provider API # curl -sS -X POST "$CLOUD_DEPLOY_API" \ # -H "Authorization: Bearer $CLOUD_DEPLOY_TOKEN" \ # -H 'Content-Type: application/json' \ # -d "{ \"uploadUrl\": \"$UPLOAD_URL\" }" \ # || echo "deploy trigger returned non-zero status" # - name: Invoke Cloud Function (test - optional) # if: ${{ secrets.CLOUD_FUNC_URL != '' }} # env: # CLOUD_FUNC_URL: ${{ secrets.CLOUD_FUNC_URL }} # PUSH_TOKEN: ${{ secrets.PUSH_TOKEN }} # TEST_DEVICE_CID: ${{ secrets.TEST_DEVICE_CID }} # run: | # echo "Invoking cloud function for smoke test" # curl -sS -X POST "$CLOUD_FUNC_URL" \ # -H 'Content-Type: application/json' \ # -d "{ \"token\": \"$PUSH_TOKEN\", \"push_clientid\": \"$TEST_DEVICE_CID\", \"title\": \"CI Test\", \"content\": \"hello from CI\", \"payload\": {} }" \ # || echo "invoke returned non-zero"