name: Build Apps, Deploy Web and Create Release on: push: tags: - "[0-9]+.[0-9]+.[0-9]+" jobs: build_web: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: corepack enable - uses: actions/setup-node@v4 with: node-version: 20 cache: pnpm - name: 📦 Install dependencies run: pnpm install --frozen-lockfile - name: Build dist bundle run: pnpm build - name: Upload dist bundle to S3 uses: jakejarvis/s3-sync-action@v0.5.1 with: args: --acl public-read --follow-symlinks --delete env: SOURCE_DIR: dist AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - name: Compress artifacts run: | zip -r Voyager-Web-${{ github.ref_name }}.zip dist - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: Voyager-Web-${{ github.ref_name }}-Build.zip path: Voyager-Web-${{ github.ref_name }}.zip build_ios: runs-on: ubuntu-latest steps: - name: Build iOS on Appflow uses: ionic-team/appflow-build@v1 with: token: ${{ secrets.APPFLOW_TOKEN }} app-id: 9f0851ec platform: iOS build-type: app-store certificate: Distribution destinations: Voyager App Store filename: Voyager-iOS-${{ github.ref_name }} upload-artifact: Voyager-iOS-${{ github.ref_name }}-Build.zip build_android_play: runs-on: ubuntu-latest steps: - name: Build Android on Appflow uses: ionic-team/appflow-build@v1 with: token: ${{ secrets.APPFLOW_TOKEN }} app-id: 9f0851ec platform: Android build-type: release certificate: Voyager Play Store destinations: Voyager Play Store build_android: runs-on: ubuntu-latest steps: - name: Build Android on Appflow uses: ionic-team/appflow-build@v1 with: token: ${{ secrets.APPFLOW_TOKEN }} app-id: 9f0851ec platform: Android build-type: release environment: BuildFOSSOnly certificate: Voyager Play Store filename: Voyager-Android-${{ github.ref_name }} upload-artifact: Voyager-Android-${{ github.ref_name }}-Build.zip create_release: needs: [build_web, build_ios, build_android_play, build_android] runs-on: ubuntu-latest permissions: contents: write steps: - name: Download dist artifacts uses: actions/download-artifact@v4 with: name: Voyager-Web-${{ github.ref_name }}-Build.zip path: artifacts/web - name: Download iOS Artifact uses: actions/download-artifact@v4 with: name: Voyager-iOS-${{ github.ref_name }}-Build.zip path: artifacts/ios - name: Download Android Artifact uses: actions/download-artifact@v4 with: name: Voyager-Android-${{ github.ref_name }}-Build.zip path: artifacts/android - name: Release uses: softprops/action-gh-release@v2 with: generate_release_notes: true files: | artifacts/ios/* artifacts/android/* artifacts/web/*