Build AppFlowy macOS #149
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build AppFlowy macOS | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| repo: | |
| description: "Repo" | |
| required: true | |
| default: "AppFlowy-IO/AppFlowy" | |
| branch: | |
| description: "Branch" | |
| required: true | |
| default: "main" | |
| build_name: | |
| description: "Build Version (it should match the version in pubspec.yaml)" | |
| required: true | |
| default: "0.8.2" | |
| arch: | |
| type: choice | |
| description: "Build Architecture" | |
| required: true | |
| options: | |
| - All | |
| - x86_64 | |
| - aarch64 | |
| - universal | |
| internal_build: | |
| type: choice | |
| description: "Internal Build Type (1 for internal, 0 for external)" | |
| required: true | |
| default: "1" | |
| options: | |
| - 0 | |
| - 1 | |
| env: | |
| FLUTTER_VERSION: "3.27.4" | |
| RUST_TOOLCHAIN: "1.80.1" | |
| jobs: | |
| x86_64: | |
| runs-on: macos-13 | |
| if: ${{ github.event.inputs.arch == 'All' || github.event.inputs.arch == 'x86_64' }} | |
| env: | |
| MACOS_APP_RELEASE_PATH: frontend/appflowy_flutter/build/${{ github.event.inputs.build_name }} | |
| MACOS_X86_ZIP_NAME: AppFlowy-${{ github.event.inputs.build_name }}-macos-x86_64.zip | |
| MACOS_X86_TAR_NAME: AppFlowy-${{ github.event.inputs.build_name }}-macos-x86_64.tar.xz | |
| MACOS_DMG_NAME: AppFlowy-${{ github.event.inputs.build_name }}-macos-x86_64 | |
| steps: | |
| - name: Checkout source code | |
| uses: actions/checkout@v2 | |
| with: | |
| repository: ${{ github.event.inputs.repo }} | |
| ref: ${{ github.event.inputs.branch }} | |
| - name: Install flutter | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| cache: true | |
| channel: "stable" | |
| flutter-version: ${{ env.FLUTTER_VERSION }} | |
| - name: Install Rust toolchain | |
| uses: actions-rs/toolchain@v1 | |
| with: | |
| toolchain: ${{ env.RUST_TOOLCHAIN }} | |
| target: x86_64-apple-darwin | |
| override: true | |
| components: rustfmt | |
| profile: minimal | |
| - uses: davidB/rust-cargo-make@v1 | |
| with: | |
| version: "0.37.5" | |
| - name: Install prerequisites | |
| working-directory: frontend | |
| run: | | |
| cargo install duckscript_cli --force --locked | |
| - name: Generate env file | |
| working-directory: frontend/appflowy_flutter | |
| run: | | |
| echo "INTERNAL_BUILD=${{ github.env.inputs.internal_build }}" >> .env | |
| shell: bash | |
| - name: Build AppFlowy | |
| working-directory: frontend | |
| run: | | |
| flutter config --enable-macos-desktop | |
| dart ./scripts/flutter_release_build/build_flowy.dart run . ${{ github.event.inputs.build_name }} | |
| dart pub global activate flutter_distributor | |
| ./scripts/flutter_release_build/build_macos.sh --build_type all --build_arch x86_64 --version ${{ github.event.inputs.build_name }} --apple-id ${{ secrets.MACOS_NOTARY_USER }} --team-id ${{ secrets.MACOS_TEAM_ID }} --password ${{ secrets.MACOS_NOTARY_PWD }} | |
| - name: Upload ZIP | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ env.MACOS_X86_ZIP_NAME }} | |
| path: ${{ env.MACOS_APP_RELEASE_PATH }}/${{ env.MACOS_X86_ZIP_NAME }} | |
| - name: Upload TAR | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ env.MACOS_X86_TAR_NAME }} | |
| path: ${{ env.MACOS_APP_RELEASE_PATH }}/${{ env.MACOS_X86_TAR_NAME }} | |
| - name: Upload DMG | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ env.MACOS_DMG_NAME }}.dmg | |
| path: ${{ env.MACOS_APP_RELEASE_PATH }}/${{ env.MACOS_DMG_NAME }}.dmg | |
| aarch64: | |
| runs-on: macos-15 | |
| if: ${{ github.event.inputs.arch == 'All' || github.event.inputs.arch == 'aarch64' }} | |
| env: | |
| MACOS_APP_RELEASE_PATH: frontend/appflowy_flutter/build/${{ github.event.inputs.build_name }} | |
| MACOS_AARCH64_ZIP_NAME: AppFlowy-${{ github.event.inputs.build_name }}-macos-aarch64.zip | |
| MACOS_AARCH64_TAR_NAME: AppFlowy-${{ github.event.inputs.build_name }}-macos-aarch64.tar.xz | |
| MACOS_DMG_NAME: AppFlowy-${{ github.event.inputs.build_name }}-macos-aarch64 | |
| steps: | |
| - name: Checkout source code | |
| uses: actions/checkout@v2 | |
| with: | |
| repository: ${{ github.event.inputs.repo }} | |
| ref: ${{ github.event.inputs.branch }} | |
| - name: Install flutter | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| cache: true | |
| channel: "stable" | |
| flutter-version: ${{ env.FLUTTER_VERSION }} | |
| - name: Install Rust toolchain | |
| uses: actions-rs/toolchain@v1 | |
| with: | |
| toolchain: ${{ env.RUST_TOOLCHAIN }} | |
| target: aarch64-apple-darwin | |
| override: true | |
| components: rustfmt | |
| profile: minimal | |
| - uses: davidB/rust-cargo-make@v1 | |
| with: | |
| version: "0.37.5" | |
| - name: Install prerequisites | |
| working-directory: frontend | |
| run: | | |
| cargo install duckscript_cli --force --locked | |
| - name: Generate env file | |
| working-directory: frontend/appflowy_flutter | |
| run: | | |
| echo "INTERNAL_BUILD=${{ github.env.inputs.internal_build }}" >> .env | |
| shell: bash | |
| - name: Build AppFlowy | |
| working-directory: frontend | |
| run: | | |
| flutter config --enable-macos-desktop | |
| dart ./scripts/flutter_release_build/build_flowy.dart run . ${{ github.event.inputs.build_name }} | |
| dart pub global activate flutter_distributor | |
| ./scripts/flutter_release_build/build_macos.sh --build_type all --build_arch arm64 --version ${{ github.event.inputs.build_name }} --apple-id ${{ secrets.MACOS_NOTARY_USER }} --team-id ${{ secrets.MACOS_TEAM_ID }} --password ${{ secrets.MACOS_NOTARY_PWD }} | |
| - name: Upload ZIP | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ env.MACOS_AARCH64_ZIP_NAME }} | |
| path: ${{ env.MACOS_APP_RELEASE_PATH }}/${{ env.MACOS_AARCH64_ZIP_NAME }} | |
| - name: Upload TAR | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ env.MACOS_AARCH64_TAR_NAME }} | |
| path: ${{ env.MACOS_APP_RELEASE_PATH }}/${{ env.MACOS_AARCH64_TAR_NAME }} | |
| - name: Upload DMG | |
| uses: actions/upload-artifact@v4 | |
| continue-on-error: true | |
| with: | |
| name: ${{ env.MACOS_DMG_NAME }}.dmg | |
| path: ${{ env.MACOS_APP_RELEASE_PATH }}/${{ env.MACOS_DMG_NAME }}.dmg | |
| universal: | |
| runs-on: macos-latest | |
| if: ${{ github.event.inputs.arch == 'All' || github.event.inputs.arch == 'universal' }} | |
| env: | |
| MACOS_APP_RELEASE_PATH: frontend/appflowy_flutter/build/${{ github.event.inputs.build_name }} | |
| MACOS_UNIVERSAL_ZIP_NAME: AppFlowy-${{ github.event.inputs.build_name }}-macos-universal.zip | |
| MACOS_UNIVERSAL_TAR_NAME: AppFlowy-${{ github.event.inputs.build_name }}-macos-universal.tar.xz | |
| MACOS_DMG_NAME: AppFlowy-${{ github.event.inputs.build_name }}-macos-universal | |
| steps: | |
| - name: Checkout source code | |
| uses: actions/checkout@v2 | |
| with: | |
| repository: ${{ github.event.inputs.repo }} | |
| ref: ${{ github.event.inputs.branch }} | |
| - name: Install flutter | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| cache: true | |
| channel: "stable" | |
| flutter-version: ${{ env.FLUTTER_VERSION }} | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| toolchain: ${{ env.RUST_TOOLCHAIN }} | |
| targets: "aarch64-apple-darwin,x86_64-apple-darwin" | |
| components: rustfmt | |
| - uses: davidB/rust-cargo-make@v1 | |
| with: | |
| version: "0.37.5" | |
| - name: Install prerequisites | |
| working-directory: frontend | |
| run: | | |
| cargo install duckscript_cli --force --locked | |
| - name: Generate env file | |
| working-directory: frontend/appflowy_flutter | |
| run: | | |
| echo "INTERNAL_BUILD=${{ github.env.inputs.internal_build }}" >> .env | |
| shell: bash | |
| - name: Build AppFlowy | |
| working-directory: frontend | |
| run: | | |
| flutter config --enable-macos-desktop | |
| sh scripts/flutter_release_build/build_universal_package_for_macos.sh ${{ github.event.inputs.build_name }} | |
| dart pub global activate flutter_distributor | |
| ./scripts/flutter_release_build/build_macos.sh --build_type all --build_arch universal --version ${{ github.event.inputs.build_name }} --apple-id ${{ secrets.MACOS_NOTARY_USER }} --team-id ${{ secrets.MACOS_TEAM_ID }} --password ${{ secrets.MACOS_NOTARY_PWD }} | |
| - name: Upload ZIP | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ env.MACOS_UNIVERSAL_ZIP_NAME }} | |
| path: ${{ env.MACOS_APP_RELEASE_PATH }}/${{ env.MACOS_UNIVERSAL_ZIP_NAME }} | |
| - name: Upload TAR | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ env.MACOS_UNIVERSAL_TAR_NAME }} | |
| path: ${{ env.MACOS_APP_RELEASE_PATH }}/${{ env.MACOS_UNIVERSAL_TAR_NAME }} | |
| - name: Upload DMG | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ env.MACOS_DMG_NAME }}.dmg | |
| path: ${{ env.MACOS_APP_RELEASE_PATH }}/${{ env.MACOS_DMG_NAME }}.dmg | |
| notify-failure: | |
| runs-on: ubuntu-latest | |
| needs: universal | |
| if: failure() | |
| steps: | |
| - uses: 8398a7/action-slack@v3 | |
| with: | |
| status: ${{ job.status }} | |
| text: | | |
| 🔴🔴🔴 Workflow ${{ github.workflow }} in repository ${{ github.repository }} was failed 🔴🔴🔴. | |
| fields: repo,message,author,eventName,ref,workflow | |
| env: | |
| SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
| if: always() |