release: 1.0.0-beta.7 (#503) #158
Workflow file for this run
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: 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 ':' -f 2 | cut -d '"' -f 2) | |
>> $GITHUB_OUTPUT | |
build-apk: | |
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 | |
build-appbundle: | |
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: 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: android/app/ | |
encodedString: ${{ secrets.UPLOAD_KEYSTORE }} | |
- name: Get build number | |
id: get-build-number | |
run: | | |
build_number=$(grep version pubspec.yaml | cut -d '+' -f 2) | |
echo build-number=$build_number >> $GITHUB_OUTPUT | |
- name: Build App Bundle | |
env: | |
KEY_ALIAS: ${{ secrets.KEY_ALIAS }} | |
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} | |
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }} | |
run: > | |
flutter build appbundle | |
--build-number ${{ steps.get-build-number.outputs.build-number }}3 | |
- name: Upload App Bundle | |
uses: actions/upload-artifact@v4 | |
with: | |
name: App Bundle | |
path: build/app/outputs/bundle/release/app-release.aab | |
build-ios: | |
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 }} | |
CERTIFICATE_PRIVATE_KEY: ${{ secrets.CERTIFICATE_PRIVATE_KEY }} | |
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: Get build name | |
id: get-build-name | |
run: | | |
build_name=$(grep version pubspec.yaml | sed 's/[^0-9]*\([0-9.]*\).*/\1/') | |
echo build-name=$build_name >> $GITHUB_OUTPUT | |
- name: Build for iOS | |
run: > | |
flutter build ios | |
--no-codesign | |
--build-name ${{ steps.get-build-name.outputs.build-name }} | |
- 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: 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 IOS | |
--type IOS_APP_STORE | |
--create | |
- 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: Create xcarchive | |
working-directory: ios | |
run: > | |
xcodebuild archive | |
-workspace Runner.xcworkspace | |
-scheme Runner | |
-configuration Release | |
-archivePath Runner.xcarchive | |
-allowProvisioningUpdates | |
- name: Dump AuthKey | |
working-directory: ios | |
run: echo "$APP_STORE_CONNECT_PRIVATE_KEY" > AuthKey.p8 | |
- name: Create IPA | |
if: startsWith(github.ref, 'refs/tags/') | |
working-directory: ios | |
run: > | |
xcodebuild | |
-exportArchive | |
-archivePath Runner.xcarchive | |
-exportOptionsPlist ExportOptions.plist | |
-allowProvisioningUpdates | |
-authenticationKeyIssuerID $APP_STORE_CONNECT_ISSUER_ID | |
-authenticationKeyID $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 }} | |
CERTIFICATE_PRIVATE_KEY: ${{ secrets.CERTIFICATE_PRIVATE_KEY }} | |
steps: | |
- uses: actions/checkout@v4 | |
- 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 | |
--create | |
- name: Fetch certificates | |
run: > | |
app-store-connect certificates list | |
--type MAC_INSTALLER_DISTRIBUTION | |
--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: Get build name | |
id: get-build-name | |
run: | | |
build_name=$(grep version pubspec.yaml | sed 's/[^0-9]*\([0-9.]*\).*/\1/') | |
echo build-name=$build_name >> $GITHUB_OUTPUT | |
- name: Build for macOS | |
run: flutter build macos --build-name ${{ steps.get-build-name.outputs.build-name }} | |
- 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 |