Windows机器上如何为Flutter应用搭建CD(持续交付)流程?
针对Windows机器无法使用Fastlane的情况,以下是几种成熟的Flutter持续交付方案,均完美支持Windows环境:
GitHub Actions
这是最轻量化的方案,直接利用GitHub提供的Windows托管运行器,官方有现成的Flutter环境配置Action,和GitHub仓库集成无缝。
你只需要在仓库根目录创建.github/workflows/flutter-cd.yml文件,配置构建、测试、打包流程:
name: Flutter 持续交付 on: push: branches: [ main ] pull_request: branches: [ main ] jobs: android-build: runs-on: windows-latest steps: - name: 拉取代码 uses: actions/checkout@v4 - name: 配置Flutter环境 uses: subosito/flutter-action@v2 with: flutter-version: '3.13.0' # 替换为你的Flutter版本 channel: 'stable' - name: 安装依赖 run: flutter pub get - name: 运行单元测试 run: flutter test - name: 构建Release APK run: flutter build apk --release - name: 上传构建产物 uses: actions/upload-artifact@v3 with: name: android-release-apk path: build/app/outputs/flutter-apk/app-release.apk
优势:免费额度足够个人或小型团队使用,配置简洁,无需维护自己的服务器。
Azure DevOps Pipelines
微软官方的CI/CD工具,对Windows环境支持极佳,既可以使用微软托管的Windows虚拟机,也可以配置自托管代理(直接用你的Windows机器作为运行节点)。
创建Pipeline时选择Windows-latest作为虚拟机镜像,编写yaml配置:
trigger: branches: include: - main pool: vmImage: 'windows-latest' steps: - script: | choco install flutter --version=3.13.0 --confirm flutter doctor displayName: '安装并配置Flutter' - script: flutter pub get displayName: '安装项目依赖' - script: flutter test displayName: '执行单元测试' - script: flutter build apk --release displayName: '构建Release APK' - task: PublishBuildArtifacts@1 displayName: '发布构建产物' inputs: PathtoPublish: 'build/app/outputs/flutter-apk' ArtifactName: 'AndroidAPKs' publishLocation: 'Container'
优势:深度集成微软生态,支持部署到Azure App Service、Google Play或华为应用市场,自托管代理可充分利用本地Windows资源。
Jenkins
老牌开源CI/CD工具,可直接在Windows机器上安装服务端,完全自定义工作流,适合复杂的交付场景。
- 在Windows上安装Jenkins,完成基础配置后,下载Flutter SDK并添加到系统环境变量
PATH; - 创建Pipeline项目,编写
Jenkinsfile定义流程:
pipeline { agent { label 'windows' } // 指定Windows节点(需提前配置) stages { stage('拉取代码') { steps { git url: '你的仓库地址', branch: 'main' } } stage('安装依赖') { steps { bat 'flutter pub get' } } stage('单元测试') { steps { bat 'flutter test' } } stage('构建APK') { steps { bat 'flutter build apk --release' } } stage('归档产物') { steps { archiveArtifacts artifacts: 'build/app/outputs/flutter-apk/app-release.apk', fingerprint: true } } } }
优势:高度灵活,支持与各类第三方工具集成,适合已有Jenkins环境的团队。
GitLab CI/CD
如果你的代码托管在GitLab,可以配置自托管Windows Runner来实现CI/CD:
- 在Windows机器上安装GitLab Runner并注册到你的项目;
- 在仓库根目录创建
.gitlab-ci.yml:
stages: - 测试 - 构建 flutter测试: stage: 测试 tags: - windows-runner # 对应你的Windows Runner标签 script: - flutter pub get - flutter test flutter构建: stage: 构建 tags: - windows-runner script: - flutter build apk --release artifacts: paths: - build/app/outputs/flutter-apk/app-release.apk expire_in: 7 days
优势:适合GitLab生态用户,自托管Runner可复用本地Windows机器资源。
额外注意点
Windows环境无法直接打包iOS应用(依赖Xcode),如果需要覆盖iOS交付,可在CI/CD流程中添加macOS运行器的阶段(比如GitHub Actions的macos-latest、Azure的macOS-latest镜像),单独处理iOS打包步骤。
内容的提问来源于stack exchange,提问作者Rasul

