首页主机资讯centos上flutter如何进行持续集成

centos上flutter如何进行持续集成

时间2025-10-11 09:57:03发布访客分类主机资讯浏览290
导读:CentOS上实现Flutter持续集成的步骤 1. 环境准备 在CentOS系统上,需先安装Jenkins(CI服务器)、Flutter SDK及依赖工具,并配置环境变量。 安装Jenkins:通过yum仓库安装Jenkins,启动服务...

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

1. 环境准备

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

  • 安装Jenkins:通过yum仓库安装Jenkins,启动服务并设置开机自启:
    sudo yum install -y jenkins
    sudo systemctl start jenkins
    sudo systemctl enable jenkins
    
  • 安装Flutter SDK:推荐使用snap安装(避免手动配置Linux toolchain),或手动下载SDK:
    sudo yum install -y epel-release  # 启用EPEL仓库
    sudo yum install -y snapd
    sudo systemctl enable --now snapd.socket
    sudo ln -s /var/lib/snapd/snap /snap
    sudo snap install flutter --classic  # 安装Flutter
    source /etc/profile  # 使环境变量生效
    
  • 配置环境变量:将Flutter和Dart添加到PATH,编辑~/.bashrc
    echo 'export PATH="$PATH:/opt/flutter/bin:/var/lib/snapd/snap/bin"' >
        >
     ~/.bashrc
    source ~/.bashrc
    
  • 安装依赖工具:Flutter需要clangcmakeninja-build等工具,通过yum安装:
    sudo yum install -y clang cmake ninja-build pkgconfig libgtk-3-dev liblzma-dev
    
  • 升级Git:CentOS 7默认Git版本过低(1.8.3),需升级以避免Flutter识别错误:
    sudo yum install -y http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm
    sudo yum update git
    

2. 配置Flutter与Jenkins集成

  • 解决Jenkins环境问题:Jenkins运行时可能找不到Flutter命令,需在Jenkins任务的Shell脚本中添加PATH:
    export PATH="$PATH:/var/lib/snapd/snap/bin:/opt/flutter/bin"
    
  • 处理Git依赖:若项目使用git依赖,建议切换至SSH协议(避免HTTP密码暴露)。在Jenkins任务脚本中替换pubspec.yaml中的git链接:
    sed -i 's|https://xxxxxxx/|git@xxxxxxxx:|g' pubspec.yaml
    
    并在Jenkins服务器上生成SSH密钥,添加至Git仓库授权。

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. 关键注意事项

  • Mac节点配置:iOS构建必须在Mac节点上进行,需在Jenkins中添加Mac agent,并安装Xcode、CocoaPods等工具。
  • 环境变量管理:敏感信息(如Git密钥、签名证书)需通过Jenkins的“Credentials”功能管理,避免硬编码。
  • Pipeline优化:可根据项目需求调整stage顺序(如先运行测试再构建),或添加缓存步骤(如flutter pub cache repair)提升构建速度。

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

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


若转载请注明出处: centos上flutter如何进行持续集成
本文地址: https://pptw.com/jishu/723329.html
centos下flutter如何管理状态 centos里flutter界面布局怎么做

游客 回复需填写必要信息