centos

centos上flutter如何进行持续集成

小樊
54
2025-10-11 05:26:04
栏目: 智能运维

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

1. 环境准备

在CentOS系统上,需先安装Jenkins(CI服务器)、Flutter SDK及依赖工具,并配置环境变量。

2. 配置Flutter与Jenkins集成

3. 编写Jenkins Pipeline脚本

在Flutter项目根目录创建Jenkinsfile,定义CI/CD流程(以多平台构建为例):

pipeline {
    agent any
    environment {
        FLUTTER_HOME = '/opt/flutter'
        PATH = "$FLUTTER_HOME/bin:$PATH"
    }
    stages {
        // 1. 环境检查与依赖安装
        stage('Setup') {
            steps {
                sh 'flutter doctor -v'  // 检查Flutter环境
                sh 'flutter pub get'    // 获取依赖
            }
        }
        // 2. 代码分析与静态检查
        stage('Analyze') {
            steps {
                sh 'flutter analyze'  // 检查代码风格与潜在错误
            }
        }
        // 3. 运行测试
        stage('Test') {
            parallel {
                stage('Unit Test') {
                    steps {
                        sh 'flutter test'  // 运行单元测试
                    }
                }
                stage('Widget Test') {
                    steps {
                        sh 'flutter test test_driver/'  // 运行Widget测试
                    }
                }
            }
        }
        // 4. 构建产物
        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  // 归档APK
                    }
                }
                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'  // 存储IPA文件
                    }
                }
            }
        }
        // 5. 部署产物
        stage('Deploy') {
            steps {
                script {
                    if (env.BRANCH_NAME == 'release') {
                        // iOS部署:使用fastlane上传至App Store
                        sh 'fastlane deliver'
                    } else {
                        // Android部署:通过SSH上传至测试服务器
                        sshPublisher(
                            transfers: [
                                sshTransfer(
                                    remoteDirectory: '/var/www/test-env',
                                    sourceFiles: 'build/app/outputs/**/*.apk'
                                )
                            ]
                        )
                    }
                }
            }
        }
    }
    post {
        always {
            junit '**/test-results/**/*.xml'  // 发布测试报告
            emailext body: '构建详情:${BUILD_URL}', subject: 'Flutter构建完成'  // 发送邮件通知
        }
    }
}

4. 关键注意事项

通过以上步骤,即可在CentOS上实现Flutter项目的持续集成,自动化完成环境检查、代码测试、构建产物生成及部署流程。

0
看了该问题的人还看了