跳到主要内容

清明节第二天

· 阅读需 4 分钟
Quany
软件工程师

代办事项

  • 代办事项

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-getsdkmanager动态安装。
    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

问题

  • 手机号验证

微信公众号

微信公众号