Skip to content

使用.fvmrc配置puro flutter版本 #8

使用.fvmrc配置puro flutter版本

使用.fvmrc配置puro flutter版本 #8

Workflow file for this run

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