Test build #149
This file contains 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: Test build | |
on: | |
pull_request: | |
branches: | |
- master | |
workflow_dispatch: | |
inputs: | |
build_android: | |
description: Build Android platform artifacts. | |
required: true | |
type: boolean | |
default: true | |
build_ios: | |
description: Build iOS platform artifacts. | |
required: true | |
type: boolean | |
default: true | |
build_linux: | |
description: Build Linux platform artifacts. | |
required: true | |
type: boolean | |
default: true | |
build_macos: | |
description: Build MacOS platform artifacts. | |
required: true | |
type: boolean | |
default: true | |
build_windows: | |
description: Build Windows platform artifacts. | |
required: true | |
type: boolean | |
default: true | |
dry_run: | |
description: Dry run, do NOT upload artifacts. | |
required: true | |
type: boolean | |
default: true | |
env: | |
CI_FLUTTER_VERSION: '3.27.0' | |
CI_RUST_VERSION: '1.83.0' | |
jobs: | |
build-linux: | |
name: Build Linux | |
if: ${{ github.event_name == 'push' || inputs.build_linux }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: '17' | |
- uses: subosito/flutter-action@v2 | |
with: | |
flutter-version: ${{env.CI_FLUTTER_VERSION}} | |
cache: true | |
- run: | | |
sudo apt update -y | |
sudo apt install -y ninja-build libgtk-3-dev | |
- name: Precompile | |
run: | | |
git submodule update --init --recursive --force | |
flutter pub get | |
dart ./Makefile.dart | |
- name: Build Linux | |
if: ${{ github.event_name == 'push' || inputs.build_linux }} | |
run: flutter build linux --release | |
- name: Pre Packing | |
if: ${{ github.event_name == 'push' || inputs.build_linux }} | |
run: | | |
pushd build/linux/x64/release/ | |
mv bundle tsdm_client | |
popd | |
- name: Pack Linux tarball | |
if: ${{ github.event_name == 'push' || inputs.build_linux }} | |
uses: thedoctor0/zip-release@master | |
with: | |
type: 'tar' | |
filename: tsdm_client-linux.tar.gz | |
directory: build/linux/x64/release/ | |
path: tsdm_client | |
- name: Upload Linux artifacts | |
if: ${{ github.event_name != 'push' && inputs.build_linux && !inputs.dry_run }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: tsdm_client-linux-tarball | |
path: build/linux/x64/release/tsdm_client-linux.tar.gz | |
build-android: | |
name: Build Android | |
if: ${{ github.event_name == 'push' || inputs.build_android }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: '17' | |
- uses: subosito/flutter-action@v2 | |
with: | |
flutter-version: ${{env.CI_FLUTTER_VERSION}} | |
cache: true | |
- run: | | |
sudo apt update -y | |
sudo apt install -y ninja-build libgtk-3-dev | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: ${{env.CI_RUST_VERSION}} | |
targets: aarch64-linux-android,armv7-linux-androideabi,x86_64-linux-android | |
- name: Prepare flutter_avif | |
run: | | |
sudo apt install -y make meson | |
cargo install cargo-ndk | |
./scripts/build-flutter_avif-android.sh | |
- name: Precompile | |
run: | | |
git submodule update --init --recursive --force | |
flutter pub get | |
dart ./Makefile.dart | |
- name: Setup Android sign key | |
if: ${{ github.event_name == 'push' || inputs.build_android }} | |
run: | | |
echo '${{ secrets.KEYSTORE }}' | base64 --decode > android/app/key.jks | |
echo '${{ secrets.KEY_PROPERTIES }}' > android/key.properties | |
- name: Build Android | |
if: ${{ github.event_name == 'push' || inputs.build_android }} | |
run: | | |
flutter build apk --release | |
- name: Pack Android apk | |
if: ${{ github.event_name == 'push' || inputs.build_android }} | |
run: | | |
pushd build/app/outputs/flutter-apk/ | |
mv app-arm64-v8a-release.apk tsdm_client-arm64_v8a.apk | |
mv app-armeabi-v7a-release.apk tsdm_client-armeabi_v7a.apk | |
popd | |
- name: Upload Android artifacts | |
if: ${{ github.event_name != 'push' && inputs.build_android && !inputs.dry_run }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: tsdm_client-apk-arm64_v8a | |
path: | | |
build/app/outputs/flutter-apk/tsdm_client-arm64_v8a.apk | |
build-windows: | |
name: Build Windows | |
if: ${{ github.event_name == 'push' || inputs.build_windows }} | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: subosito/flutter-action@v2 | |
with: | |
flutter-version: ${{env.CI_FLUTTER_VERSION}} | |
- name: Precompile | |
shell: pwsh | |
run: | | |
git submodule update --init --recursive --force | |
flutter pub get | |
dart ./Makefile.dart | |
- name: Build Windows | |
run: flutter build windows --release | |
- name: Pre Packing | |
shell: pwsh | |
run: | | |
cd build/windows/x64/runner | |
Rename-Item Release tsdm_client | |
cd ../../../../ | |
- name: Pack Windows tarball | |
uses: thedoctor0/zip-release@master | |
with: | |
type: 'zip' | |
filename: tsdm_client-windows.zip | |
directory: build/windows/x64/runner | |
path: tsdm_client | |
- name: Upload Windows artifacts | |
if: ${{ github.event_name != 'push' && !inputs.dry_run }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: tsdm_client-windows-tarball | |
path: build/windows/x64/runner/tsdm_client-windows.zip | |
build-macos-and-ios: | |
name: Build MacOS and iOS | |
if: ${{ github.event_name == 'push' || inputs.build_macos || inputs.build_ios }} | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: subosito/flutter-action@v2 | |
with: | |
flutter-version: ${{env.CI_FLUTTER_VERSION}} | |
cache: true | |
- name: Precompile | |
run: | | |
git submodule update --init --recursive --force | |
flutter pub get | |
dart ./Makefile.dart | |
- name: Build MacOS | |
if: ${{ github.event_name == 'push' || inputs.build_macos }} | |
run: | | |
flutter build macos --release | |
- name: Packing MacOS dmg | |
if: ${{ github.event_name == 'push' || inputs.build_macos }} | |
run: | | |
brew install python-setuptools | |
npm install -g appdmg | |
appdmg appdmg.json build/tsdm_client-universal.dmg | |
- name: Upload MacOS artifacts | |
if: ${{ github.event_name != 'push' && inputs.build_macos && !inputs.dry_run }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: tsdm_client-macos-tarball | |
path: build/tsdm_client-universal.dmg | |
- name: Build iOS ipa | |
if: ${{ github.event_name == 'push' || inputs.build_ios }} | |
run: | | |
flutter build ios --release --no-codesign | |
- name: Packing | |
if: ${{ github.event_name == 'push' || inputs.build_ios }} | |
run: | | |
mkdir Payload | |
mv build/ios/iphoneos/Runner.app Payload | |
zip -r9 tsdm_client.ipa Payload | |
- name: Upload iOS artifacts | |
if: ${{ github.event_name != 'push' && inputs.build_ios && !inputs.dry_run }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: tsdm_client-ios-tarball | |
path: tsdm_client.ipa |