使用.fvmrc配置puro flutter版本 #8
This file contains hidden or 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 Linux Flatpak Bundle | |
| on: | |
| push: | |
| branches: [main] | |
| workflow_dispatch: | |
| jobs: | |
| build-flatpak: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: 检出代码 | |
| uses: actions/checkout@v4 | |
| - name: 释放磁盘空间 (Nuclear Mode) | |
| run: | | |
| echo "清理前空间:" && df -h | |
| sudo rm -rf /opt/hostedtoolcache | |
| sudo rm -rf /usr/local/lib/android | |
| sudo rm -rf /usr/share/dotnet | |
| sudo rm -rf /opt/codeql | |
| docker system prune -a -f | |
| sudo apt-get clean | |
| echo "清理后空间:" && df -h | |
| - name: 解密敏感文件 (git-crypt) | |
| env: | |
| GIT_CRYPT_KEY: ${{ secrets.GIT_CRYPT_KEY }} | |
| run: | | |
| sudo apt-get update && sudo apt-get install -y git-crypt | |
| echo "$GIT_CRYPT_KEY" | base64 -d > ./git-crypt-key | |
| git-crypt unlock ./git-crypt-key | |
| rm ./git-crypt-key | |
| - name: 安装 Linux 原生构建依赖 | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| ninja-build libgtk-3-dev liblzma-dev \ | |
| libgcrypt20-dev pkg-config clang cmake \ | |
| flatpak flatpak-builder libayatana-appindicator3-dev \ | |
| libwebkit2gtk-4.1-dev libxcb-screensaver0-dev | |
| - name: 设置 Dart SDK | |
| uses: dart-lang/setup-dart@v1 | |
| - name: 安装 Puro | |
| run: | | |
| curl -o- https://puro.dev/install.sh | PURO_VERSION="1.5.0" bash | |
| echo "$HOME/.puro/bin" >> $GITHUB_PATH | |
| - name: 根据 .fvmrc 配置 Flutter | |
| run: | | |
| export PATH="$HOME/.puro/bin:$PATH" | |
| FLUTTER_VERSION=$(jq -r '.flutter' .fvmrc) | |
| echo "检测到 .fvmrc 版本: $FLUTTER_VERSION" | |
| if [ -z "$FLUTTER_VERSION" ] || [ "$FLUTTER_VERSION" == "null" ]; then | |
| echo "❌ 错误: 无法从 .fvmrc 读取版本号,将降级使用 stable" | |
| FLUTTER_VERSION="stable" | |
| fi | |
| puro create ci_env "$FLUTTER_VERSION" --yes | |
| puro use ci_env --force | |
| echo "✅ Puro 环境已就绪:" | |
| puro env | |
| echo "FLUTTER_ROOT=$(puro env --root)" >> $GITHUB_ENV | |
| echo "$(puro env --root)/bin" >> $GITHUB_PATH | |
| - name: 安装 Rust 工具链 | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| toolchain: stable | |
| targets: x86_64-unknown-linux-gnu | |
| - name: 配置 Flatpak 环境 (Flathub) | |
| run: | | |
| flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo | |
| flatpak install --user -y flathub org.freedesktop.Platform//24.08 org.freedesktop.Sdk//24.08 | |
| - name: 构建 Flutter Linux Release | |
| run: fvm flutter build linux --release | |
| - name: 构建 Flatpak | |
| run: | | |
| mkdir -p build-flatpak repo-flatpak | |
| flatpak-builder --user --force-clean --repo=repo-flatpak --install-deps-from=flathub build-flatpak flatpak/io.github.windy.breeze.yml | |
| - name: 创建 Flatpak Bundle | |
| run: | | |
| flatpak build-bundle repo-flatpak breeze.flatpak io.github.windy.breeze | |
| - name: 清理敏感文件 | |
| if: always() | |
| run: | | |
| git-crypt lock || true | |
| - name: 上传 Flatpak Bundle | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: breeze-flatpak | |
| path: breeze.flatpak |