From 5b646c7edda31030096b3c06bd35de34fe29e9a8 Mon Sep 17 00:00:00 2001 From: niuhuan Date: Fri, 22 Apr 2022 09:34:26 +0800 Subject: [PATCH] Add linux appimage build to release ci --- .github/workflows/Release.yml | 26 +++++++++++++------------- ci/src/upload_asset/main.rs | 2 +- linux/appimage/AppRun.desktop | 8 ++++++++ linux/appimage/AppRun.png | Bin 0 -> 19466 bytes 4 files changed, 22 insertions(+), 14 deletions(-) create mode 100644 linux/appimage/AppRun.desktop create mode 100644 linux/appimage/AppRun.png diff --git a/.github/workflows/Release.yml b/.github/workflows/Release.yml index 2a96868..1bd0728 100644 --- a/.github/workflows/Release.yml +++ b/.github/workflows/Release.yml @@ -58,8 +58,8 @@ jobs: fail-fast: false matrix: config: -# - target: linux -# host: ubuntu-latest + - target: linux + host: ubuntu-latest - target: windows host: windows-latest - target: macos @@ -250,20 +250,20 @@ jobs: env: ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' run: | - cd pansy + sudo apt-get update + sudo apt install -y ninja-build liblzma-dev libgtk-3-dev libgl1-mesa-dev xorg-dev curl -JOL https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage chmod a+x appimagetool-x86_64.AppImage - mkdir -p ${GITHUB_WORKSPACE}/bin - mv appimagetool-x86_64.AppImage ${GITHUB_WORKSPACE}/bin/appimagetool - echo ::add-path::${GITHUB_WORKSPACE}/bin - sudo apt-get update - sudo apt-get install -y libgl1-mesa-dev xorg-dev - curl -JOL https://github.com/junmer/source-han-serif-ttf/raw/master/SubsetTTF/CN/SourceHanSerifCN-Regular.ttf - mkdir -p fonts - mv SourceHanSerifCN-Regular.ttf fonts/Roboto.ttf - cat ci/linux_font.yaml >> pubspec.yaml + mv appimagetool-x86_64.AppImage appimagetool + cd pansy + echo > native/src/bridge_generated.rs + flutter_rust_bridge_codegen --rust-input native/src/api.rs --dart-output lib/bridge_generated.dart flutter config --enable-linux-desktop - flutter build linux + flutter build linux --release + mv build/linux/x64/release/bundle/{pansy,AppRun} + cp linux/appimage/* build/linux/x64/release/bundle/ + ../appimagetool build/linux/x64/release/bundle/ + mv *.AppImage build/linux.AppImage - name: build (windows) if: steps.check_asset.outputs.skip_build != 'true' && matrix.config.target == 'windows' diff --git a/ci/src/upload_asset/main.rs b/ci/src/upload_asset/main.rs index b1f6fab..9f192e8 100644 --- a/ci/src/upload_asset/main.rs +++ b/ci/src/upload_asset/main.rs @@ -32,7 +32,7 @@ async fn main() -> Result<()> { "macos" => "../build/macos.dmg", "ios" => "../build/nosign.ipa", "windows" => "../build/windows.zip", - "linux" => "../build/linux.zip", + "linux" => "../build/linux.AppImage", "android-arm32" => "../build/app/outputs/flutter-apk/app-release.apk", "android-arm64" => "../build/app/outputs/flutter-apk/app-release.apk", "android-x86_64" => "../build/app/outputs/flutter-apk/app-release.apk", diff --git a/linux/appimage/AppRun.desktop b/linux/appimage/AppRun.desktop new file mode 100644 index 0000000..449682d --- /dev/null +++ b/linux/appimage/AppRun.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Terminal=false +Name=pansy +Exec=AppRun %u +Icon=AppRun +Categories=Utility; diff --git a/linux/appimage/AppRun.png b/linux/appimage/AppRun.png new file mode 100644 index 0000000000000000000000000000000000000000..9928474e5a729caf49f42f33184931b012260f26 GIT binary patch literal 19466 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 XI^}$j#ZjAe00000NkvXXu0mjfO0K&g literal 0 HcmV?d00001