清明节第二天
· 阅读需 4 分钟
代办事项
- 代办事项
Flutter项目集成GitLab CI/CD的完整指南
为Flutter项目配置GitLab CI/CD可显著提升开发效率,实现自动化构建、测试和部署。以下是核心步骤与注意事项:
1. 环境准备:GitLab Runner安装与注册
- 安装GitLab Runner
根据操作系统选择安装方式。例如在macOS/Linux中通过命令行安装:# 下载并安装Runner
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64
sudo chmod +x /usr/local/bin/gitlab-runner - 注册Runner到项目
在GitLab项目的Settings > CI/CD > Runners中获取URL和Token,执行交互式注册:关键提示:标签(如gitlab-runner register
# 输入GitLab实例URL、项目Token,选择执行器(如Shell或Docker)build
)需与.gitlab-ci.yml
中的tags
匹配,否则流水线无法触发。
2. 编写.gitlab-ci.yml
配置文件
配置文件需包含构建、测试、部署三个阶段,示例结构如下:
image: openjdk:8-jdk # 基础镜像(Android依赖Java)
stages:
- build
- test
- deploy
variables:
ANDROID_COMPILE_SDK: "33"
ANDROID_BUILD_TOOLS: "33.0.1"
before_script:
- apt-get update -qq
- wget https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.13.9-stable.tar.xz
- tar xf flutter_linux_3.13.9-stable.tar.xz
- export PATH="$PATH:$PWD/flutter/bin"
build_android:
stage: build
script:
- flutter pub get
- flutter build apk --release
artifacts:
paths:
- build/app/outputs/apk/release/*.apk
tags:
- android # 必须与Runner标签匹配
test_project:
stage: test
script:
- flutter test
tags:
- android
deploy_ios: # iOS需macOS Runner和Xcode环境
stage: deploy
script:
- flutter build ios --release
- cd ios
- xcodebuild -workspace Runner.xcworkspace -scheme Runner -archivePath build/Runner.xcarchive
tags:
- ios
3. 关键配置解析
- Android环境配置
需安装Android SDK工具链,推荐通过apt-get
或sdkmanager
动态安装。before_script:
- wget https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip
- unzip commandlinetools-linux-9477386_latest.zip -d android-sdk
- yes | android-sdk/cmdline-tools/bin/sdkmanager "platforms;android-$ANDROID_COMPILE_SDK" - iOS特殊要求
iOS构建需macOS Runner并安装Xcode。若使用共享Runner(如GitLab SaaS),需确保其支持macOS环境。 - 依赖缓存优化
使用cache
加速重复构建,避免重复下载Flutter SDK和Gradle依赖:cache:
key: flutter-cache
paths:
- .gradle/
- flutter/bin/cache/
4. 常见问题与解决方案
- 错误:
.packages文件不存在
执行flutter pub get
前需清理旧缓存:script:
- flutter clean
- flutter pub get - iOS构建失败
确保Xcode项目配置正确,且Runner标签包含ios
。混合工程需生成Framework并上传至代码仓库。 - 许可证未接受
Android需自动接受SDK许可证:script:
- yes | flutter doctor --android-licenses
5. 进阶实践
- 多平台并行构建
通过parallel
字段分拆任务,例如同时构建Android和iOS版本。 - 动态触发条件
仅针对特定分支或标签触发流水线:rules:
- if: $CI_COMMIT_BRANCH == "main" - 安全部署
使用GitLab CI/CD变量存储签名密钥或API凭证,避免硬编码敏感信息。
通过以上步骤,Flutter项目可实现全自动化的CI/CD流程,覆盖代码检查、多平台构建及部署。更多细节可参考GitLab官方文档或《GitLab CI/CD从入门到实战》。
Dio + Retrofit Hive Bloc
问题
- 手机号验证