centos

centos下flutter持续集成怎么做

小樊
45
2025-09-22 06:56:09
栏目: 智能运维

CentOS下实现Flutter持续集成的步骤

1. 环境准备

在CentOS系统上,需先安装Flutter CI所需的依赖工具及环境:

2. 选择CI工具

推荐使用Jenkins(开源、灵活)或GitHub Actions(云端、易集成)作为CI工具。以下分别说明配置方法:

2.1 使用Jenkins配置Flutter CI
2.2 使用GitHub Actions配置Flutter CI

若项目托管在GitHub上,可通过GitHub Actions实现云端CI:

  1. 在项目根目录创建.github/workflows/flutter-ci.yml文件。
  2. 编写YAML配置(示例见下文),定义触发条件(如pushpull_request)及流程。

3. 编写CI流程(以Jenkinsfile为例)

以下是一个完整的Jenkinsfile示例,覆盖依赖安装、代码分析、测试、构建、部署流程:

pipeline {
    agent any
    environment {
        FLUTTER_HOME = '/opt/flutter'
        PATH = "$FLUTTER_HOME/bin:$PATH"
        ANDROID_SDK_ROOT = '/opt/android-sdk'  // Android SDK路径(可选)
    }
    stages {
        // 1. 检出代码
        stage('Checkout') {
            steps {
                git branch: 'main', url: 'https://github.com/your-repo/flutter-app.git'
            }
        }
        // 2. 安装依赖
        stage('Install Dependencies') {
            steps {
                sh 'flutter pub get'
            }
        }
        // 3. 代码静态分析
        stage('Analyze') {
            steps {
                sh 'flutter analyze'
            }
        }
        // 4. 运行测试
        stage('Run Tests') {
            parallel {
                stage('Unit Test') {
                    steps {
                        sh 'flutter test'
                    }
                }
                stage('Widget Test') {
                    steps {
                        sh 'flutter test test_driver/'
                    }
                }
            }
        }
        // 5. 构建应用(多平台)
        stage('Build') {
            parallel {
                stage('Android APK') {
                    when {
                        branch 'dev'  // 仅在dev分支构建Android APK
                    }
                    steps {
                        sh 'flutter build apk --release --dart-define=API_ENV=prod --target-platform android-arm64'
                        archiveArtifacts artifacts: 'build/app/outputs/flutter-apk/*.apk', fingerprint: true
                    }
                }
                stage('iOS IPA') {
                    agent {
                        label 'mac'  // 需指定Mac节点(用于iOS构建)
                    }
                    when {
                        branch 'release'  // 仅在release分支构建iOS IPA
                    }
                    steps {
                        sh 'flutter build ipa --export-options-plist=ios/ExportOptions.plist --dart-define=API_ENV=prod'
                        stash name: 'ios_build', includes: 'build/ios/ipa/*.ipa'
                    }
                }
            }
        }
    }
    post {
        // 6. 发布结果
        always {
            junit '**/test-results/**/*.xml'  // 发布测试报告
            emailext body: 'Flutter CI完成,详情:${BUILD_URL}', subject: 'Flutter CI状态'
        }
        // 7. 部署应用(可选)
        success {
            script {
                if (env.BRANCH_NAME == 'release') {
                    // 部署iOS IPA(需配置Fastlane)
                    sh 'fastlane deliver --ipa build/ios/ipa/*.ipa --username your_apple_id'
                } else {
                    // 部署Android APK至测试服务器
                    sshPublisher(
                        transfers: [
                            sshTransfer(
                                remoteDirectory: '/var/www/test-env',
                                sourceFiles: 'build/app/outputs/**/*.apk'
                            )
                        ]
                    )
                }
            }
        }
    }
}

关键说明

4. 验证CI流程

  1. 提交代码至Git仓库(如GitHub),触发CI流程(如Jenkins自动构建或GitHub Actions运行)。
  2. 查看CI工具的控制台输出,确认各阶段(依赖安装、测试、构建)是否成功。
  3. 检查部署结果(如Android APK是否上传至测试服务器,iOS IPA是否发布至App Store Connect)。

注意事项

通过以上步骤,即可在CentOS上实现Flutter项目的持续集成,自动化完成代码测试、构建及部署流程,提升开发效率。

0
看了该问题的人还看了