centos上flutter如何进行持续集成
导读: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需要
clang
、cmake
、ninja-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链接:
并在Jenkins服务器上生成SSH密钥,添加至Git仓库授权。sed -i 's|https://xxxxxxx/|git@xxxxxxxx:|g' pubspec.yaml
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