diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml new file mode 100644 index 0000000..78c1449 --- /dev/null +++ b/.github/workflows/build_release.yml @@ -0,0 +1,106 @@ +name: Build Release + +permissions: + contents: write + +on: + workflow_dispatch: + inputs: + version: + description: 'Version to create (e.g. 1.2.3)' + required: true + default: 'X.X.X' + type: string + +jobs: + draft-release: + name: Draft release v${{ inputs.version }} + runs-on: ubuntu-latest + outputs: + upload_url: ${{ steps.draft_release.outputs.upload_url }} + steps: + - name: Draft release + id: draft_release + uses: softprops/action-gh-release@v1 + with: + tag_name: v${{ inputs.version }} + draft: true + + create-build: + name: Create ${{ matrix.target }} build + runs-on: ${{ matrix.os }} + strategy: + matrix: + target: [android, linux, windows] + include: + - os: ubuntu-latest + target: android + build_target: apk + build_path: build/app/outputs/flutter-apk + asset_extension: .apk + - os: ubuntu-latest + target: linux + build_target: linux + build_path: build/linux/x64/release/bundle + asset_extension: .AppImage + - os: windows-latest + target: windows + build_target: windows + build_path: build\windows\x64\runner\Release + asset_extension: .zip + fail-fast: false + needs: draft-release + steps: + - name: Install Android dependencies + if: matrix.target == 'android' + uses: actions/setup-java@v4 + with: + java-version: '17.x' + distribution: temurin + + - name: Install Linux dependencies + if: matrix.target == 'linux' + run: | + sudo apt-get update + sudo apt-get install -y libgtk-3-dev libx11-dev pkg-config cmake ninja-build libblkid-dev libfuse2 + wget -O appimagetool "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" + chmod +x appimagetool + mv appimagetool /usr/local/bin/ + + - name: Setup Flutter + uses: subosito/flutter-action@v2 + + - name: Install cider + run: dart pub global activate cider + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set version + run: cider version ${{ github.event.inputs.version }} + + - name: Build Flutter app + run: flutter build -v ${{ matrix.build_target }} + + - name: Rename build for Android + if: matrix.target == 'android' + run: mv app-release.apk $GITHUB_WORKSPACE/interstellar-${{ matrix.target }}.apk + working-directory: ${{ matrix.build_path }} + + - name: Build AppImage for Linux + if: matrix.target == 'linux' + run: | + mv ${{ matrix.build_path }}/* linux/appimage/ + cp assets/icons/logo.png linux/appimage/interstellar.png + appimagetool linux/appimage interstellar-${{ matrix.target }}.AppImage + + - name: Compress build for Windows + if: matrix.target == 'windows' + run: compress-archive -Path * -DestinationPath ${env:GITHUB_WORKSPACE}\interstellar-${{ matrix.target }}.zip + working-directory: ${{ matrix.build_path }} + + - name: Upload build to release draft + uses: shogo82148/actions-upload-release-asset@v1 + with: + upload_url: ${{ needs.draft-release.outputs.upload_url }} + asset_path: ./interstellar-${{ matrix.target }}${{ matrix.asset_extension }} + asset_name: interstellar-${{ matrix.target }}${{ matrix.asset_extension }} diff --git a/linux/appimage/AppRun b/linux/appimage/AppRun new file mode 100755 index 0000000..487364b --- /dev/null +++ b/linux/appimage/AppRun @@ -0,0 +1,3 @@ +#!/bin/sh +cd "$(dirname "$0")" +./interstellar diff --git a/linux/appimage/interstellar.desktop b/linux/appimage/interstellar.desktop new file mode 100644 index 0000000..fd36dc5 --- /dev/null +++ b/linux/appimage/interstellar.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +Type=Application +Terminal=false +Name=Interstellar +Exec=interstellar %U +Icon=interstellar +Categories=Network; diff --git a/pubspec.yaml b/pubspec.yaml index 9706c64..3c3b011 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,7 +3,7 @@ name: interstellar # Prevent accidental publishing to pub.dev. publish_to: 'none' -version: 0.2.2 +version: 0.0.0 environment: sdk: '>=3.1.0 <4.0.0' @@ -39,16 +39,16 @@ dev_dependencies: ref: '006cb1ed53f969bf11816cde5b16dd520e1ee40e' flutter_launcher_icons: - image_path: "assets/icons/logo.png" + image_path: 'assets/icons/logo.png' android: true - adaptive_icon_foreground: "assets/icons/logo-transparent.png" - adaptive_icon_background: "#294062" - adaptive_icon_monochrome: "assets/icons/logo-monochrome.png" + adaptive_icon_foreground: 'assets/icons/logo-transparent.png' + adaptive_icon_background: '#294062' + adaptive_icon_monochrome: 'assets/icons/logo-monochrome.png' ios: true remove_alpha_ios: true windows: generate: true - image_path: "assets/icons/logo-transparent-512.png" + image_path: 'assets/icons/logo-transparent-512.png' macos: generate: true