diff --git a/.github/workflows/prep-release.yml b/.github/workflows/prep-release.yml new file mode 100644 index 0000000..cbf71a9 --- /dev/null +++ b/.github/workflows/prep-release.yml @@ -0,0 +1,91 @@ +name: Prepare Plugin Releases + +on: + workflow_dispatch: + inputs: + proxy_version: + description: 'Framework Proxy Version (x.y.z)' + required: true + pattern: '^\d+\.\d+\.\d+$' + ios_version: + description: 'iOS SDK Version (x.y.z)' + required: false + pattern: '^\d+\.\d+\.\d+$' + android_version: + description: 'Android SDK Version (x.y.z)' + required: false + pattern: '^\d+\.\d+\.\d+$' + +env: + GITHUB_TOKEN: ${{ secrets.PREPARE_RELEASES_PAT }} + +jobs: + trigger-releases: + runs-on: ubuntu-latest + timeout-minutes: 15 + + steps: + - name: Trigger React Native Release + run: | + gh workflow run prep-release.yml \ + -R urbanairship/react-native-airship \ + -f react_native_version="${{ github.event.inputs.proxy_version }}" \ + -f proxy_version="${{ github.event.inputs.proxy_version }}" \ + $([ -n "${{ github.event.inputs.ios_version }}" ] && echo "-f ios_version=${{ github.event.inputs.ios_version }}") \ + $([ -n "${{ github.event.inputs.android_version }}" ] && echo "-f android_version=${{ github.event.inputs.android_version }}") + + - name: Trigger Flutter Release + run: | + gh workflow run prep-release.yml \ + -R urbanairship/airship-flutter \ + -f flutter_version="${{ github.event.inputs.proxy_version }}" \ + -f proxy_version="${{ github.event.inputs.proxy_version }}" \ + $([ -n "${{ github.event.inputs.ios_version }}" ] && echo "-f ios_version=${{ github.event.inputs.ios_version }}") \ + $([ -n "${{ github.event.inputs.android_version }}" ] && echo "-f android_version=${{ github.event.inputs.android_version }}") + + - name: Trigger Capacitor Release + run: | + gh workflow run prep-release.yml \ + -R urbanairship/capacitor-airship \ + -f capacitor_version="${{ github.event.inputs.proxy_version }}" \ + -f proxy_version="${{ github.event.inputs.proxy_version }}" \ + $([ -n "${{ github.event.inputs.ios_version }}" ] && echo "-f ios_version=${{ github.event.inputs.ios_version }}") \ + $([ -n "${{ github.event.inputs.android_version }}" ] && echo "-f android_version=${{ github.event.inputs.android_version }}") + + - name: Trigger Cordova Release + run: | + gh workflow run prep-release.yml \ + -R urbanairship/urbanairship-cordova \ + -f cordova_version="${{ github.event.inputs.proxy_version }}" \ + -f proxy_version="${{ github.event.inputs.proxy_version }}" \ + $([ -n "${{ github.event.inputs.ios_version }}" ] && echo "-f ios_version=${{ github.event.inputs.ios_version }}") \ + $([ -n "${{ github.event.inputs.android_version }}" ] && echo "-f android_version=${{ github.event.inputs.android_version }}") + + - name: Handle Success + if: success() + run: | + echo "Successfully triggered release preparations for all plugins" + + - name: Handle Failure + if: failure() + run: | + echo "::error::Failed to trigger one or more plugin releases. Please check the logs above for details." + exit 1 + + - name: Slack Notification (Success) + if: success() + uses: homoluctus/slatify@master + with: + type: success + job_name: ":tada: Plugin release preparations triggered :tada:" + message: "@mobile-team Release preparations have been triggered for all plugins with proxy version v${{ github.event.inputs.proxy_version }} :rocket:" + url: ${{ secrets.MOBILE_SLACK_WEBHOOK }} + + - name: Slack Notification (Failure) + if: failure() + uses: homoluctus/slatify@master + with: + type: failure + job_name: ":disappointed: Plugin Release Preparations Failed :disappointed:" + message: "@crow Failed to trigger plugin release preparations. Please check the workflow logs. :sob:" + url: ${{ secrets.MOBILE_SLACK_WEBHOOK }}