在 Debian 上搭建 Flutter 持续集成
一 方案总览与准备
- 常见方案:使用托管 CI(如 GitHub Actions、GitLab CI/CD)或在自有 Debian 服务器自建 Runner(如 GitLab Runner、Jenkins)。
- 先在 Debian 构建机或 Runner 上准备环境:
- 安装基础依赖:sudo apt update && sudo apt install -y git curl zip unzip cmake wget。
- 下载并解压 Flutter SDK(Linux x64),例如解压到 /opt/flutter:
- wget https://dl.flutter.io/flutter/flutter--linux-x64.zip
- unzip flutter--linux-x64.zip -d /opt/flutter
- 配置环境变量:echo ‘export PATH=“$PATH:/opt/flutter/bin”’ >> ~/.bashrc && source ~/.bashrc
- 验证环境:flutter doctor -v,按需安装缺失依赖(如 Android SDK/NDK、Chrome 等)。
二 使用 GitHub Actions
- 在项目根目录创建 .github/workflows/flutter-ci.yml,示例:
- name: Flutter CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: ‘stable’
flutter-version: ‘3.24.x’ # 可固定版本
- name: Install dependencies
run: flutter pub get
- name: Analyze
run: flutter analyze --no-fatal-infos
- name: Run unit/widget tests
run: flutter test --coverage
- name: Build APK
run: flutter build apk --release
- name: Build App Bundle
run: flutter build appbundle --release
# 可选:上传覆盖率
# - name: Upload coverage
# uses: codecov/codecov-action@v3
- 提交并推送后,Actions 会在 push/PR 时自动运行。可按需扩展上传产物、发布到商店或分发渠道。
三 使用 GitLab CI/CD
- 在 Debian 服务器安装并注册 Runner(以项目级 Runner 为例):
- 安装:sudo apt-get update && sudo apt-get install -y gitlab-runner
- 注册:执行 sudo gitlab-runner register,按提示填写 GitLab 实例 URL、项目注册令牌、Runner 执行器(推荐 docker 或 shell)、标签等。
- 在项目根目录创建 .gitlab-ci.yml,示例:
- image: cirrusci/flutter:stable # 官方 Flutter 镜像
stages:
- build
- test
- deploy
variables:
FLUTTER_VERSION: “stable”
before_script:
- flutter doctor -v
build:
stage: build
script:
- flutter pub get
- flutter build apk --release
- flutter build appbundle --release
test:
stage: test
script:
- flutter test --coverage
deploy:
stage: deploy
script:
- echo “Deploy steps here”
only:
- main
- 提交并推送后,Runner 将按阶段执行构建、测试与部署任务。
四 自建 Debian Runner 与 Jenkins
- 安装 Jenkins(Debian 示例):
- sudo apt-get update && sudo apt-get install -y jenkins
- sudo systemctl start jenkins && sudo systemctl enable jenkins
- 访问 http://<服务器IP>:8080 完成初始化与插件安装(建议安装 Git、Pipeline、Docker 等插件)。
- 创建 Pipeline 任务,示例 Jenkinsfile:
- pipeline {
agent any
environment {
FLUTTER_HOME = ‘/opt/flutter’
PATH = “${env.FLUTTER_HOME}/bin:${env.PATH}”
}
stages {
stage(‘Checkout’) { steps { git ‘https://github.com//.git’ } }
stage(‘Setup Flutter’) { steps { sh ‘flutter doctor -v’ } }
stage(‘Install deps’) { steps { sh ‘flutter pub get’ } }
stage(‘Analyze’) { steps { sh ‘flutter analyze --no-fatal-infos’ } }
stage(‘Test’) { steps { sh ‘flutter test --coverage’ } }
stage(‘Build’) { steps { sh ‘flutter build apk --release’ } }
}
}
- 保存并运行,Jenkins 将按阶段执行 CI 流程。
五 测试策略与质量门禁建议
- 测试分层:
- 单元测试:使用 test 包,结合 mockito 等做依赖模拟。
- Widget 测试:验证组件渲染与交互。
- 端到端测试:使用 flutter_driver 或 integration_test 模拟真实用户流程。
- 质量门禁与度量:
- 在 CI 中加入 flutter analyze、flutter test --coverage,必要时集成 Codecov 上传覆盖率。
- 结合 DevTools 做性能分析,编写基准测试与内存分析,防止回归。
- 可引入 SonarQube 做静态代码分析与质量门禁,覆盖安全与可维护性。