name: Release on: push: branches: - master workflow_dispatch: inputs: flavor: description: Build Flavor required: true default: edge type: choice options: - edge - beta - candidate - stable jobs: prepare: name: Prepare uses: JagandeepBrar/LunaSea/.github/workflows/prepare.yml@master with: flavor: ${{ inputs.flavor || 'edge' }} secrets: FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }} validate: name: Validate needs: [ prepare ] uses: JagandeepBrar/LunaSea/.github/workflows/validate.yml@master secrets: FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }} build-android: name: Build Android needs: [ prepare, validate ] if: ${{ needs.prepare.outputs.enable-android == 'true' }} uses: JagandeepBrar/LunaSea/.github/workflows/build_android.yml@master with: build-number: ${{ needs.prepare.outputs.build-number }} secrets: FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }} KEY_JKS: ${{ secrets.KEY_JKS }} KEY_PROPERTIES: ${{ secrets.KEY_PROPERTIES }} build-ios: name: Build iOS needs: [ prepare, validate ] if: ${{ needs.prepare.outputs.enable-ios == 'true' }} uses: JagandeepBrar/LunaSea/.github/workflows/build_ios.yml@master with: build-number: ${{ needs.prepare.outputs.build-number }} secrets: APPLE_ID: ${{ secrets.APPLE_ID }} APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }} APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }} IOS_CODESIGNING_IDENTITY: ${{ secrets.IOS_CODESIGNING_IDENTITY }} MATCH_KEYCHAIN_NAME: ${{ secrets.MATCH_KEYCHAIN_NAME }} MATCH_KEYCHAIN_PASSWORD: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }} MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} MATCH_SSH_PRIVATE_KEY: ${{ secrets.MATCH_SSH_PRIVATE_KEY }} build-linux: name: Build Linux needs: [ prepare, validate ] if: ${{ needs.prepare.outputs.enable-linux == 'true' }} uses: JagandeepBrar/LunaSea/.github/workflows/build_linux.yml@master build-macos: name: Build macOS needs: [ prepare, validate ] if: ${{ needs.prepare.outputs.enable-macos == 'true' }} uses: JagandeepBrar/LunaSea/.github/workflows/build_macos.yml@master with: build-number: ${{ needs.prepare.outputs.build-number }} build-version: ${{ needs.prepare.outputs.build-version }} secrets: APPLE_ID: ${{ secrets.APPLE_ID }} APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }} APPLE_STORE_CONNECT_ISSUER_ID: ${{ secrets.APPLE_STORE_CONNECT_ISSUER_ID }} APPLE_STORE_CONNECT_KEY: ${{ secrets.APPLE_STORE_CONNECT_KEY }} APPLE_STORE_CONNECT_KEY_ID: ${{ secrets.APPLE_STORE_CONNECT_KEY_ID }} APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }} MACOS_INSTALLER_CERT_APP_STORE: ${{ secrets.MACOS_INSTALLER_CERT_APP_STORE }} MACOS_INSTALLER_CERT_DIRECT: ${{ secrets.MACOS_INSTALLER_CERT_DIRECT }} MATCH_KEYCHAIN_NAME: ${{ secrets.MATCH_KEYCHAIN_NAME }} MATCH_KEYCHAIN_PASSWORD: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }} MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} MATCH_SSH_PRIVATE_KEY: ${{ secrets.MATCH_SSH_PRIVATE_KEY }} build-web: name: Build Web needs: [ prepare, validate ] if: ${{ needs.prepare.outputs.enable-web == 'true' }} uses: JagandeepBrar/LunaSea/.github/workflows/build_web.yml@master with: build-title: ${{ needs.prepare.outputs.build-title }} flavor: ${{ inputs.flavor || 'edge' }} secrets: FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }} build-windows: name: Build Windows needs: [ prepare, validate ] if: ${{ needs.prepare.outputs.enable-windows == 'true' }} uses: JagandeepBrar/LunaSea/.github/workflows/build_windows.yml@master secrets: CODE_SIGNING_CERTIFICATE: ${{ secrets.CODE_SIGNING_CERTIFICATE }} CODE_SIGNING_PASSWORD: ${{ secrets.CODE_SIGNING_PASSWORD }} CODE_SIGNING_PUBLISHER: ${{ secrets.CODE_SIGNING_PUBLISHER }} CODE_SIGNING_PUBLISHER_NAME: ${{ secrets.CODE_SIGNING_PUBLISHER_NAME }} publish-android: name: Publish Android needs: [ prepare, build-android ] uses: JagandeepBrar/LunaSea/.github/workflows/publish_android.yml@master with: flavor: ${{ inputs.flavor || 'edge' }} build-number: ${{ needs.prepare.outputs.build-number }} build-title: ${{ needs.prepare.outputs.build-title }} secrets: GOOGLE_PLAY_API: ${{ secrets.GOOGLE_PLAY_API }} S3_ACCESS_KEY: ${{ secrets.S3_ACCESS_KEY }} S3_BUCKET: ${{ secrets.S3_BUCKET }} S3_ENDPOINT: ${{ secrets.S3_ENDPOINT }} S3_KEY_ID: ${{ secrets.S3_KEY_ID }} S3_REGION: ${{ secrets.S3_REGION }} publish-ios: name: Publish iOS needs: [ prepare, build-ios ] uses: JagandeepBrar/LunaSea/.github/workflows/publish_ios.yml@master with: flavor: ${{ inputs.flavor || 'edge' }} build-number: ${{ needs.prepare.outputs.build-number }} build-title: ${{ needs.prepare.outputs.build-title }} secrets: APPLE_ID: ${{ secrets.APPLE_ID }} APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }} APPLE_STORE_CONNECT_ISSUER_ID: ${{ secrets.APPLE_STORE_CONNECT_ISSUER_ID }} APPLE_STORE_CONNECT_KEY: ${{ secrets.APPLE_STORE_CONNECT_KEY }} APPLE_STORE_CONNECT_KEY_ID: ${{ secrets.APPLE_STORE_CONNECT_KEY_ID }} APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} S3_ACCESS_KEY: ${{ secrets.S3_ACCESS_KEY }} S3_BUCKET: ${{ secrets.S3_BUCKET }} S3_ENDPOINT: ${{ secrets.S3_ENDPOINT }} S3_KEY_ID: ${{ secrets.S3_KEY_ID }} S3_REGION: ${{ secrets.S3_REGION }} publish-linux: name: Publish Linux needs: [ prepare, build-linux ] uses: JagandeepBrar/LunaSea/.github/workflows/publish_linux.yml@master with: flavor: ${{ inputs.flavor || 'edge' }} build-number: ${{ needs.prepare.outputs.build-number }} build-title: ${{ needs.prepare.outputs.build-title }} secrets: SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }} S3_ACCESS_KEY: ${{ secrets.S3_ACCESS_KEY }} S3_BUCKET: ${{ secrets.S3_BUCKET }} S3_ENDPOINT: ${{ secrets.S3_ENDPOINT }} S3_KEY_ID: ${{ secrets.S3_KEY_ID }} S3_REGION: ${{ secrets.S3_REGION }} publish-macos: name: Publish macOS needs: [ prepare, build-macos ] uses: JagandeepBrar/LunaSea/.github/workflows/publish_macos.yml@master with: flavor: ${{ inputs.flavor || 'edge' }} build-number: ${{ needs.prepare.outputs.build-number }} build-title: ${{ needs.prepare.outputs.build-title }} secrets: APPLE_ID: ${{ secrets.APPLE_ID }} APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }} APPLE_STORE_CONNECT_ISSUER_ID: ${{ secrets.APPLE_STORE_CONNECT_ISSUER_ID }} APPLE_STORE_CONNECT_KEY: ${{ secrets.APPLE_STORE_CONNECT_KEY }} APPLE_STORE_CONNECT_KEY_ID: ${{ secrets.APPLE_STORE_CONNECT_KEY_ID }} APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} S3_ACCESS_KEY: ${{ secrets.S3_ACCESS_KEY }} S3_BUCKET: ${{ secrets.S3_BUCKET }} S3_ENDPOINT: ${{ secrets.S3_ENDPOINT }} S3_KEY_ID: ${{ secrets.S3_KEY_ID }} S3_REGION: ${{ secrets.S3_REGION }} publish-web: name: Publish Web needs: [ prepare, build-web ] uses: JagandeepBrar/LunaSea/.github/workflows/publish_web.yml@master with: flavor: ${{ inputs.flavor || 'edge' }} build-number: ${{ needs.prepare.outputs.build-number }} build-title: ${{ needs.prepare.outputs.build-title }} secrets: NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} S3_ACCESS_KEY: ${{ secrets.S3_ACCESS_KEY }} S3_BUCKET: ${{ secrets.S3_BUCKET }} S3_ENDPOINT: ${{ secrets.S3_ENDPOINT }} S3_KEY_ID: ${{ secrets.S3_KEY_ID }} S3_REGION: ${{ secrets.S3_REGION }} publish-windows: name: Publish Windows needs: [ prepare, build-windows ] uses: JagandeepBrar/LunaSea/.github/workflows/publish_windows.yml@master with: flavor: ${{ inputs.flavor || 'edge' }} build-number: ${{ needs.prepare.outputs.build-number }} build-title: ${{ needs.prepare.outputs.build-title }} secrets: S3_ACCESS_KEY: ${{ secrets.S3_ACCESS_KEY }} S3_BUCKET: ${{ secrets.S3_BUCKET }} S3_ENDPOINT: ${{ secrets.S3_ENDPOINT }} S3_KEY_ID: ${{ secrets.S3_KEY_ID }} S3_REGION: ${{ secrets.S3_REGION }} notify: name: Notify needs: [ prepare, publish-android, publish-ios, publish-linux, publish-macos, publish-web, publish-windows ] if: | always() && !cancelled() && (needs.publish-android.result == 'success' || needs.publish-android.result == 'skipped') && (needs.publish-ios.result == 'success' || needs.publish-ios.result == 'skipped') && (needs.publish-linux.result == 'success' || needs.publish-linux.result == 'skipped') && (needs.publish-macos.result == 'success' || needs.publish-macos.result == 'skipped') && (needs.publish-web.result == 'success' || needs.publish-web.result == 'skipped') && (needs.publish-windows.result == 'success' || needs.publish-windows.result == 'skipped') uses: JagandeepBrar/LunaSea/.github/workflows/notify.yml@master with: flavor: ${{ inputs.flavor || 'edge' }} build-title: ${{ needs.prepare.outputs.build-title }} enable-android: ${{ needs.prepare.outputs.enable-android && needs.publish-android.result == 'success' }} enable-ios: ${{ needs.prepare.outputs.enable-ios && needs.publish-ios.result == 'success' }} enable-linux: ${{ needs.prepare.outputs.enable-linux && needs.publish-linux.result == 'success' }} enable-macos: ${{ needs.prepare.outputs.enable-macos && needs.publish-macos.result == 'success' }} enable-web: ${{ needs.prepare.outputs.enable-web && needs.publish-web.result == 'success' }} enable-windows: ${{ needs.prepare.outputs.enable-windows && needs.publish-windows.result == 'success' }} secrets: DISCORD_WEBHOOK_EDGE: ${{ secrets.DISCORD_WEBHOOK_EDGE }} DISCORD_WEBHOOK_BETA: ${{ secrets.DISCORD_WEBHOOK_BETA }} DISCORD_WEBHOOK_CANDIDATE: ${{ secrets.DISCORD_WEBHOOK_CANDIDATE }} DISCORD_WEBHOOK_STABLE: ${{ secrets.DISCORD_WEBHOOK_STABLE }}