Skip to content

release: 0.11.0 (#272) #96

release: 0.11.0 (#272)

release: 0.11.0 (#272) #96

Workflow file for this run

name: Build
on:
push:
tags:
- "v*"
workflow_dispatch:
permissions:
contents: write
jobs:
get-flutter-version:
runs-on: ubuntu-latest
outputs:
flutter-version: ${{ steps.get-flutter-version.outputs.version }}
steps:
- uses: actions/checkout@v4
- name: Get Flutter version from .fvmrc
id: get-flutter-version
run: >
echo version=$(grep flutter .fvmrc | cut -d ":" -f2|cut -d "\"" -f2)
>> $GITHUB_OUTPUT
build-android:
runs-on: ubuntu-latest
needs: get-flutter-version
env:
APK_BUILD_DIR: /tmp/build
steps:
- uses: actions/checkout@v4
- name: Copy files to env.APK_BUILD_DIR
run: |
mkdir -p $APK_BUILD_DIR
cp -r . $APK_BUILD_DIR
- name: Install Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
flutter-version: ${{ needs.get-flutter-version.outputs.flutter-version }}
cache: true
- name: Get dependencies
working-directory: ${{ env.APK_BUILD_DIR }}
run: flutter pub get
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: zulu
java-version: 17
cache: gradle
- name: Dump keystore
uses: timheuer/base64-to-file@v1
with:
fileName: upload.keystore
fileDir: ${{ env.APK_BUILD_DIR }}/android/app/
encodedString: ${{ secrets.UPLOAD_KEYSTORE }}
- name: Move Rust toolchain to /tmp
run: mv $HOME/.cargo /tmp
- name: Build APK
working-directory: ${{ env.APK_BUILD_DIR }}
env:
HOME: /tmp
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
run: flutter build apk --split-per-abi
- name: Rename APK
working-directory: ${{ env.APK_BUILD_DIR }}/build/app/outputs/apk/release
run: |
mv app-armeabi-v7a-release.apk aria-${{ github.ref_name }}-armeabi-v7a.apk
mv app-arm64-v8a-release.apk aria-${{ github.ref_name }}-arm64-v8a.apk
mv app-x86_64-release.apk aria-${{ github.ref_name }}-x86_64.apk
- name: Upload APK
uses: actions/upload-artifact@v4
with:
name: APK
path: |
${{ env.APK_BUILD_DIR }}/build/app/outputs/apk/release/aria-${{ github.ref_name }}-armeabi-v7a.apk
${{ env.APK_BUILD_DIR }}/build/app/outputs/apk/release/aria-${{ github.ref_name }}-arm64-v8a.apk
${{ env.APK_BUILD_DIR }}/build/app/outputs/apk/release/aria-${{ github.ref_name }}-x86_64.apk
- name: Release APK
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v2
with:
files: |
${{ env.APK_BUILD_DIR }}/build/app/outputs/apk/release/aria-${{ github.ref_name }}-armeabi-v7a.apk
${{ env.APK_BUILD_DIR }}/build/app/outputs/apk/release/aria-${{ github.ref_name }}-arm64-v8a.apk
${{ env.APK_BUILD_DIR }}/build/app/outputs/apk/release/aria-${{ github.ref_name }}-x86_64.apk
draft: true
- name: Build App Bundle
working-directory: ${{ env.APK_BUILD_DIR }}
env:
HOME: /tmp
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
run: flutter build appbundle
- name: Upload App Bundle
uses: actions/upload-artifact@v4
with:
name: App Bundle
path: ${{ env.APK_BUILD_DIR }}/build/app/outputs/bundle/release/app-release.aab
build-ios:
runs-on: macos-latest
needs: get-flutter-version
steps:
- uses: actions/checkout@v4
- name: Install Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
flutter-version: ${{ needs.get-flutter-version.outputs.flutter-version }}
cache: true
- name: Get dependencies
run: flutter pub get
- name: Build for iOS
run: flutter build ios --no-codesign
- name: Copy Runner.app
run: |
mkdir Payload
cp -R build/ios/iphoneos/Runner.app Payload
- name: Create IPA (Unsigned)
run: zip -r aria-${{ github.ref_name }}.ipa Payload
- name: Upload IPA (Unsigned)
uses: actions/upload-artifact@v4
with:
name: IPA
path: aria-${{ github.ref_name }}.ipa
- name: Release IPA (Unsigned)
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v2
with:
files: aria-${{ github.ref_name }}.ipa
draft: true
- name: Create xcarchive
if: startsWith(github.ref, 'refs/tags/')
working-directory: ios
run: >
xcodebuild archive
CODE_SIGNING_ALLOWED=NO
-workspace Runner.xcworkspace
-scheme Runner
-configuration Release
-archivePath Runner.xcarchive
- name: Dump AuthKey
if: startsWith(github.ref, 'refs/tags/')
run: echo "${{ secrets.APP_STORE_CONNECT_PRIVATE_KEY }}" > AuthKey.p8
- name: Create IPA
if: startsWith(github.ref, 'refs/tags/')
run: >
xcodebuild
-exportArchive
-archivePath ios/Runner.xcarchive
-exportOptionsPlist ios/ExportOptions.plist
-allowProvisioningUpdates
-authenticationKeyIssuerID ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }}
-authenticationKeyID ${{ secrets.APP_STORE_CONNECT_KEY_IDENTIFIER }}
-authenticationKeyPath $(pwd)/AuthKey.p8
build-windows-x64:
runs-on: windows-latest
needs: get-flutter-version
steps:
- uses: actions/checkout@v4
- name: Install Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
flutter-version: ${{ needs.get-flutter-version.outputs.flutter-version }}
cache: true
- name: Get dependencies
run: flutter pub get
- name: Build for Windows
run: flutter build windows
- name: Create ZIP
run: >
Compress-Archive
-Path build/windows/x64/runner/Release/*
-DestinationPath aria-${{ github.ref_name }}-windows-x64.zip
- name: Upload ZIP
uses: actions/upload-artifact@v4
with:
name: Windows ZIP
path: aria-${{ github.ref_name }}-windows-x64.zip
- name: Release ZIP
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v2
with:
files: aria-${{ github.ref_name }}-windows-x64.zip
draft: true
- name: Trim version
id: trim-version
shell: bash
run: >
echo version=$(echo ${{ github.ref_name }} | cut -c 2-)
>> $GITHUB_OUTPUT
- name: Compile Installer
env:
VERSION: ${{ steps.trim-version.outputs.version }}
run: iscc windows/setup.iss
- name: Upload installer
uses: actions/upload-artifact@v4
with:
name: Windows Installer
path: windows/Output/aria-v${{ steps.trim-version.outputs.version }}-windows-x64.exe
- name: Release installer
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v2
with:
files: windows/Output/aria-v${{ steps.trim-version.outputs.version }}-windows-x64.exe
draft: true
build-macos:
runs-on: macos-latest
needs: get-flutter-version
env:
APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }}
APP_STORE_CONNECT_KEY_IDENTIFIER: ${{ secrets.APP_STORE_CONNECT_KEY_IDENTIFIER }}
APP_STORE_CONNECT_PRIVATE_KEY: ${{ secrets.APP_STORE_CONNECT_PRIVATE_KEY }}
steps:
- uses: actions/checkout@v4
- name: Dump cert_key
run: echo "${{ secrets.CERT_KEY }}" > cert_key
- name: Install codemagic-cli-tools
run: pip install codemagic-cli-tools
- name: Fetch signing files
run: >
app-store-connect fetch-signing-files com.poppingmoon.aria
--platform MAC_OS
--type MAC_APP_STORE
--certificate-key=@file:cert_key
--create
- name: Fetch certificates
run: >
app-store-connect certificates list
--type MAC_INSTALLER_DISTRIBUTION
--certificate-key=@file:cert_key
--save
- name: Set up keychain
run: keychain initialize
- name: Add certificates
run: keychain add-certificates
- name: Update Xcode project settings
run: xcode-project use-profiles
- name: Install Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
flutter-version: ${{ needs.get-flutter-version.outputs.flutter-version }}
cache: true
- name: Get dependencies
run: flutter pub get
- name: Build for macOS
run: flutter build macos
- name: Install create-dmg
run: brew install create-dmg
- name: Create DMG
run: >
create-dmg
--window-pos 200 120
--window-size 800 400
--icon aria.app 200 185
--app-drop-link 600 185
aria-${{ github.ref_name }}.dmg
build/macos/Build/Products/Release/aria.app
- name: Upload DMG
uses: actions/upload-artifact@v4
with:
name: DMG
path: aria-${{ github.ref_name }}.dmg
- name: Release DMG
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v2
with:
files: aria-${{ github.ref_name }}.dmg
draft: true
- name: Create package
run: |
xcrun productbuild \
--component build/macos/Build/Products/Release/aria.app \
/Applications/ unsigned.pkg
INSTALLER_CERT_NAME=$(keychain list-certificates \
| jq '[.[]
| select(.common_name
| contains("Mac Developer Installer"))
| .common_name][0]' \
| xargs)
xcrun productsign \
--sign "$INSTALLER_CERT_NAME" \
unsigned.pkg \
aria-${{ github.ref_name }}.app.pkg
- name: Publish package
if: startsWith(github.ref, 'refs/tags/')
run: app-store-connect publish --path aria-${{ github.ref_name }}.app.pkg
build-linux-arm64:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: linux/arm64
- name: Build Docker image
run: docker build --platform linux/arm64 -t flutter .
- name: Build for Linux
run: >
docker run
-v $PWD:$PWD
-w $PWD
flutter
bash -c
"fvm install
&& fvm flutter pub get
&& fvm flutter build linux"
- name: Create TAR
working-directory: build/linux/arm64/release/bundle
run: tar -czvf ../../../../../aria-${{ github.ref_name }}-linux-arm64.tar.gz *
- name: Upload TAR
uses: actions/upload-artifact@v4
with:
name: Linux arm64 TAR
path: aria-${{ github.ref_name }}-linux-arm64.tar.gz
- name: Release TAR
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v2
with:
files: aria-${{ github.ref_name }}-linux-arm64.tar.gz
draft: true
build-linux-x64:
runs-on: ubuntu-latest
needs: get-flutter-version
steps:
- uses: actions/checkout@v4
- name: Install Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
flutter-version: ${{ needs.get-flutter-version.outputs.flutter-version }}
cache: true
- name: Get dependencies
run: flutter pub get
- name: Install packages
run: |
sudo apt-get update
sudo apt-get install -y \
ninja-build libgtk-3-dev liblzma-dev libstdc++-12-dev \
libsecret-1-dev
- name: Build for Linux
run: flutter build linux
- name: Create TAR
working-directory: build/linux/x64/release/bundle
run: tar -czvf ../../../../../aria-${{ github.ref_name }}-linux-x64.tar.gz *
- name: Upload TAR
uses: actions/upload-artifact@v4
with:
name: Linux x64 TAR
path: aria-${{ github.ref_name }}-linux-x64.tar.gz
- name: Release TAR
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v2
with:
files: aria-${{ github.ref_name }}-linux-x64.tar.gz
draft: true