diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 614bd3af2d54..416bd3fd3e42 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -132,7 +132,7 @@ jobs: asset_name: ${{ env.WINDOWS_INSTALLER_NAME }}.exe asset_content_type: application/octet-stream - build-for-macOS: + build-for-macOS-x86_64: name: ${{ matrix.job.target }} (${{ matrix.job.os }}) [${{ matrix.job.extra-build-args }}] runs-on: ${{ matrix.job.os }} needs: create-release @@ -220,6 +220,94 @@ jobs: asset_name: ${{ env.MACOS_DMG_NAME }}.dmg asset_content_type: application/octet-stream + build-for-macOS-aarch64: + name: ${{ matrix.job.target }} (${{ matrix.job.os }}) [${{ matrix.job.extra-build-args }}] + runs-on: ${{ matrix.job.os }} + needs: create-release + env: + MACOS_APP_RELEASE_PATH: frontend/appflowy_flutter/product/${{ github.ref_name }}/macos/Release + MACOS_AARCH64_ZIP_NAME: AppFlowy_${{ github.ref_name }}_macos-aarch64.zip + MACOS_DMG_NAME: AppFlowy_${{ github.ref_name }}_macos-aarch64 + strategy: + fail-fast: false + matrix: + job: + - { target: aarch64-apple-darwin, os: macos-11, extra-build-args: "" } + steps: + - name: Checkout source code + uses: actions/checkout@v3 + + - name: Install flutter + uses: subosito/flutter-action@v2 + with: + channel: "stable" + flutter-version: ${{ env.FLUTTER_VERSION }} + cache: true + + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ env.RUST_TOOLCHAIN }} + target: ${{ matrix.job.target }} + override: true + components: rustfmt + profile: minimal + + - uses: Swatinem/rust-cache@v2 + with: + prefix-key: appflowy-lib-cache + key: ${{ matrix.job.os }}-${{ matrix.job.target }} + + - name: Install prerequisites + working-directory: frontend + run: | + cargo install --force cargo-make + cargo install --force duckscript_cli + + - name: Build AppFlowy + working-directory: frontend + run: | + flutter config --enable-macos-desktop + cargo make --profile production-mac-arm64 appflowy + + - name: Create macOS dmg + run: | + brew install create-dmg + create-dmg \ + --volname ${{ env.MACOS_DMG_NAME }} \ + --hide-extension "AppFlowy.app" \ + --background frontend/scripts/dmg_assets/AppFlowyInstallerBackground.jpg \ + --window-size 600 450 \ + --icon-size 94 \ + --icon "AppFlowy.app" 141 249 \ + --app-drop-link 458 249 \ + "${{ env.MACOS_APP_RELEASE_PATH }}/${{ env.MACOS_DMG_NAME }}.dmg" \ + "${{ env.MACOS_APP_RELEASE_PATH }}/AppFlowy.app" + + - name: Archive Asset + working-directory: ${{ env.MACOS_APP_RELEASE_PATH }} + run: zip --symlinks -qr ${{ env.MACOS_AARCH64_ZIP_NAME }} AppFlowy.app + + - name: Upload Asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.create-release.outputs.upload_url }} + asset_path: ${{ env.MACOS_APP_RELEASE_PATH }}/${{ env.MACOS_AARCH64_ZIP_NAME }} + asset_name: ${{ env.MACOS_AARCH64_ZIP_NAME }} + asset_content_type: application/octet-stream + + - name: Upload DMG Asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.create-release.outputs.upload_url }} + asset_path: ${{ env.MACOS_APP_RELEASE_PATH }}/${{ env.MACOS_DMG_NAME }}.dmg + asset_name: ${{ env.MACOS_DMG_NAME }}.dmg + asset_content_type: application/octet-stream + build-for-linux: name: ${{ matrix.job.target }} (${{ matrix.job.os }}) [${{ matrix.job.extra-build-args }}] runs-on: ${{ matrix.job.os }} @@ -368,7 +456,7 @@ jobs: notify-discord: runs-on: ubuntu-latest - needs: [build-for-linux, build-for-windows, build-for-macOS] + needs: [build-for-linux, build-for-windows, build-for-macOS-x86_64, build-for-macOS-aarch64] steps: - name: Notify Discord run: |