首页主机资讯Flutter在Debian上的持续集成如何配置

Flutter在Debian上的持续集成如何配置

时间2025-12-16 08:33:04发布访客分类主机资讯浏览1042
导读:在 Debian 上配置 Flutter 持续集成 一 方案总览 在 Debian 环境中,常见的 CI 工具有:GitHub Actions(托管)、GitLab CI/CD(托管/自托管)、Jenkins(自托管)。 典型流程包含:拉...

在 Debian 上配置 Flutter 持续集成

一 方案总览

  • 在 Debian 环境中,常见的 CI 工具有:GitHub Actions(托管)GitLab CI/CD(托管/自托管)Jenkins(自托管)
  • 典型流程包含:拉取代码 → 安装 Flutter SDK → 安装依赖 → 运行测试 → 构建产物(APK/App Bundle/Web) → 归档与报告
  • 若使用自托管 Runner(如 GitLab RunnerJenkins Agent),需先在 Debian 上安装与注册 Runner,再执行上述流程。

二 方案一 GitHub Actions 托管 CI

  • 在项目根目录创建文件:.github/workflows/flutter_ci.yml
  • 示例工作流(可扩展为 Web/覆盖率/产物上传):
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
          cache: true

      - 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@v4
        with:
          token: ${
{
 secrets.CODECOV_TOKEN }
}
    
  • 说明:
    • 使用 ubuntu-latest 运行器即可完成 Android 构建;如需 Web 构建,可添加步骤:flutter build web --release。
    • 通过 Secrets 管理敏感信息(如 CODECOV_TOKEN)。

三 方案二 GitLab CI/CD 自托管 Runner

  • 在 Debian 上安装并注册 Runner(示例为 Shell 执行器):
sudo apt update
sudo apt install -y gitlab-runner
sudo gitlab-runner register
# 按提示填写:GitLab 实例地址、项目注册令牌、Runner 描述、标签(如 flutter)、执行器(shell/docker)
sudo gitlab-runner start
  • 在项目根目录创建 .gitlab-ci.yml
image: cirrusci/flutter:stable

stages:
  - build
  - test

variables:
  FLUTTER_VERSION: "stable"

before_script:
  - flutter doctor -v

build:
  stage: build
  script:
    - flutter pub get
    - flutter build apk --release
    - flutter build appbundle --release
  artifacts:
    paths:
      - build/app/outputs/flutter-apk/app-release.apk
      - build/app/outputs/bundle/release/app-release.aab
    expire_in: 30 days

test:
  stage: test
  script:
    - flutter test --coverage
  coverage: '/lines......: \d+\.\d+%/'
  • 说明:
    • 也可使用官方 flutter:stable 镜像或自托管镜像;通过 artifacts 归档 APK/AAB 供后续下载或部署。

四 方案三 Jenkins 自托管 CI

  • 在 Debian 上安装 Jenkins:
sudo apt update
sudo apt install -y openjdk-11-jdk
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
echo deb https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list >
 /dev/null
sudo apt update
sudo apt install -y jenkins
sudo systemctl enable --now jenkins
  • 在 Jenkins 中安装插件:GitPipelineDocker(如需)、JUnit(测试报告)、Workspace Cleanup 等。
  • 新建 Pipeline 任务,使用 Declarative Pipeline(示例片段):
pipeline {

  agent any
  environment {

    FLUTTER_HOME = '/opt/flutter'
    PATH = "${
env.FLUTTER_HOME}
/bin:${
env.PATH}
"
  }

  stages {

    stage('Checkout') {

      steps {
 git url: 'https://github.com/your/repo.git', branch: 'main' }

    }

    stage('Setup Flutter') {

      steps {

        sh 'flutter doctor -v'
        sh 'flutter pub get'
      }

    }

    stage('Test') {

      steps {
 sh 'flutter test --coverage' }

      post {
 always {
 junit '**/test/**/TEST-*.xml' }
 }

    }

    stage('Build') {

      steps {

        sh 'flutter build apk --release'
        sh 'flutter build appbundle --release'
      }

    }

  }

  post {

    always {
 cleanWs() }

  }

}

  • 说明:
    • 可将 /opt/flutter 替换为你的 Flutter SDK 路径;如需容器化,可改为 agent { docker ‘cirrusci/flutter:stable’ }

五 关键注意事项与扩展

  • 平台与产物:
    • Android:构建 APKApp Bundle;确保 JDKAndroid SDK/NDK 可用(GitHub Actions 的 ubuntu-latest 与 GitLab 的 flutter 镜像通常已预置)。
    • Web:添加构建步骤 flutter build web --release,并部署到静态站点托管。
  • 测试策略:
    • 在 Debian 环境中建议覆盖 单元测试Widget 测试集成/端到端测试,并在 CI 中常态化执行以提升稳定性与质量。
  • 缓存与加速:
    • 在 GitHub Actions 中使用 actions/cache 缓存 ~/.pub-cache 与构建产物;在 GitLab/Jenkins 中使用各自缓存机制,显著缩短执行时间。
  • 质量门禁:
    • 加入 flutter analyzelint测试覆盖率阈值构建失败即阻断合并 等策略,保证主分支质量。
  • 产物与发布:
    • 归档 APK/AAB 并通过 Secrets 上传到制品库或分发渠道;结合 Slack/企业微信/邮件 通知构建结果。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Flutter在Debian上的持续集成如何配置
本文地址: https://pptw.com/jishu/772458.html
ubuntu mysql如何备份 Linux如何配置PHP的执行时间

游客 回复需填写必要信息