Skip to content

Build AppFlowy macOS #149

Build AppFlowy macOS

Build AppFlowy macOS #149

Workflow file for this run

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()