阅读量:3
CentOS下实现Flutter持续集成的步骤
1. 环境准备
在CentOS系统上,需先安装Flutter CI所需的依赖工具及环境:
- 安装Java JDK:Flutter依赖Java运行,建议安装JDK 11及以上版本(推荐OpenJDK 17)。
sudo yum install -y java-17-openjdk-devel java -version # 验证安装 - 安装Flutter SDK:从Flutter官网下载最新稳定版SDK,解压至指定目录(如
/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环境:运行
flutter doctor,检查是否缺少依赖(如Android SDK、Xcode等,根据目标平台补充)。
2. 选择CI工具
推荐使用Jenkins(开源、灵活)或GitHub Actions(云端、易集成)作为CI工具。以下分别说明配置方法:
2.1 使用Jenkins配置Flutter CI
- 安装Jenkins:在CentOS上通过yum安装Jenkins,启动服务并设置开机自启。
sudo yum install -y jenkins sudo systemctl start jenkins sudo systemctl enable jenkins - 配置Jenkins全局工具:
- 进入Jenkins Web界面(
http://<服务器IP>:8080),完成初始设置。 - 进入「Manage Jenkins」→「Global Tool Configuration」,添加Flutter SDK路径(如
/opt/flutter)。 - 添加Android SDK(若构建Android应用):下载Android SDK Command Line Tools,解压至指定目录(如
/opt/android-sdk),并在Jenkins中配置路径。
- 进入Jenkins Web界面(
- 创建Jenkins Pipeline:
- 新建「Pipeline」类型任务,配置Git仓库地址(如
https://github.com/your-repo/flutter-app.git)。 - 在「Pipeline」脚本中编写Jenkinsfile(示例见下文),定义CI流程。
- 新建「Pipeline」类型任务,配置Git仓库地址(如
2.2 使用GitHub Actions配置Flutter CI
若项目托管在GitHub上,可通过GitHub Actions实现云端CI:
- 在项目根目录创建
.github/workflows/flutter-ci.yml文件。 - 编写YAML配置(示例见下文),定义触发条件(如
push、pull_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'
)
]
)
}
}
}
}
}
关键说明:
- 多平台构建:Android构建可在CentOS上完成,iOS构建需指定Mac节点(通过
agent { label 'mac' })。 - 环境变量:通过
environment块配置Flutter、Android SDK路径,确保Pipeline可访问。 - 部署集成:通过
sshPublisher(Android)或fastlane(iOS)实现自动部署,需提前配置对应工具。
4. 验证CI流程
- 提交代码至Git仓库(如GitHub),触发CI流程(如Jenkins自动构建或GitHub Actions运行)。
- 查看CI工具的控制台输出,确认各阶段(依赖安装、测试、构建)是否成功。
- 检查部署结果(如Android APK是否上传至测试服务器,iOS IPA是否发布至App Store Connect)。
注意事项
- iOS构建限制:iOS应用必须在Mac环境中构建,若CentOS无Mac节点,需使用云服务(如GitHub Actions的Mac runner、Codemagic的Mac mini池)。
- 依赖管理:确保Jenkins或GitHub Actions的环境与本地开发环境一致(如Flutter版本、Android SDK版本),避免因环境差异导致构建失败。
- 安全性:避免在Pipeline中硬编码敏感信息(如API密钥、Apple ID密码),通过CI工具的Secrets功能管理。
通过以上步骤,即可在CentOS上实现Flutter项目的持续集成,自动化完成代码测试、构建及部署流程,提升开发效率。
以上就是关于“centos下flutter持续集成怎么做”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm