debian

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

小樊
45
2025-12-16 07:04:23
栏目: 智能运维

在 Debian 上配置 Flutter 持续集成

一 方案总览

二 方案一 GitHub Actions 托管 CI

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 }}

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

sudo apt update
sudo apt install -y gitlab-runner
sudo gitlab-runner register
# 按提示填写:GitLab 实例地址、项目注册令牌、Runner 描述、标签(如 flutter)、执行器(shell/docker)
sudo gitlab-runner start
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+%/'

四 方案三 Jenkins 自托管 CI

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
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() }
  }
}

五 关键注意事项与扩展

0
看了该问题的人还看了