在CentOS系统上,需先安装Flutter CI所需的依赖工具及环境:
sudo yum install -y java-17-openjdk-devel
java -version # 验证安装
/opt/flutter
),并配置环境变量。sudo mkdir -p /opt/flutter
sudo wget https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.19.0-stable.tar.xz -O /opt/flutter/flutter.tar.xz
sudo tar -xf /opt/flutter/flutter.tar.xz -C /opt/flutter --strip-components=1
echo 'export PATH="$PATH:/opt/flutter/bin"' >> ~/.bashrc
source ~/.bashrc
flutter doctor
,检查是否缺少依赖(如Android SDK、Xcode等,根据目标平台补充)。推荐使用Jenkins(开源、灵活)或GitHub Actions(云端、易集成)作为CI工具。以下分别说明配置方法:
sudo yum install -y jenkins
sudo systemctl start jenkins
sudo systemctl enable jenkins
http://<服务器IP>:8080
),完成初始设置。/opt/flutter
)。/opt/android-sdk
),并在Jenkins中配置路径。https://github.com/your-repo/flutter-app.git
)。若项目托管在GitHub上,可通过GitHub Actions实现云端CI:
.github/workflows/flutter-ci.yml
文件。push
、pull_request
)及流程。以下是一个完整的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'
)
]
)
}
}
}
}
}
关键说明:
agent { label 'mac' }
)。environment
块配置Flutter、Android SDK路径,确保Pipeline可访问。sshPublisher
(Android)或fastlane
(iOS)实现自动部署,需提前配置对应工具。通过以上步骤,即可在CentOS上实现Flutter项目的持续集成,自动化完成代码测试、构建及部署流程,提升开发效率。