Flutter CI/CD自动化部署 GitLab Runner实践

在Flutter项目中配置GitLab Runner实现CI/CD自动化部署时遇到几个问题:1)如何正确编写.gitlab-ci.yml文件以支持Flutter的构建流程?2)Runner在构建Android/iOS应用时出现环境变量配置错误,该如何排查?3)不同构建阶段(dev/stage/prod)的签名证书和配置该如何动态切换?4)Runner执行docker build时频繁出现缓存不足导致构建失败,有什么优化建议?5)iOS构建必须使用MacOS Runner,在自托管服务器上如何低成本实现?希望有实际经验的大佬分享完整配置案例和避坑指南。

3 回复

在GitLab中实现Flutter项目的CI/CD自动化部署,可以使用GitLab Runner配合.gitlab-ci.yml文件完成。首先,在GitLab项目设置中添加一个GitLab Runner,并确保它支持Docker环境。

.gitlab-ci.yml配置如下:

stages:
  - build
  - test
  - deploy

build_app:
  stage: build
  script:
    - flutter build apk --release
  artifacts:
    paths:
      - build/app/outputs/flutter-apk/app-release.apk

run_tests:
  stage: test
  script:
    - flutter test

deploy_to_qa:
  stage: deploy
  script:
    - scp build/app/outputs/flutter-apk/app-release.apk user@qa-server:/path/to/deploy/
  only:
    - main

解释:第一阶段构建Release APK并生成产物;第二阶段运行单元测试;第三阶段将APK上传到QA服务器。需提前配置SSH密钥以支持scp命令。此配置简单高效,可根据需求扩展更多功能如版本管理、通知等。

更多关于Flutter CI/CD自动化部署 GitLab Runner实践的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在GitLab中实现Flutter项目的CI/CD自动化部署,首先需要配置GitLab Runner。选择Shell Executor或Docker Executor,推荐Docker以隔离环境。

  1. 安装GitLab Runner
    在服务器上安装GitLab Runner并注册至GitLab项目。
    命令示例:sudo gitlab-runner register

  2. 创建.gitlab-ci.yml文件
    编写配置文件定义构建、测试和部署阶段:

    stages:
      - build
      - deploy
    
    build_job:
      stage: build
      script:
        - flutter build apk --release
      artifacts:
        paths:
          - build/app/outputs/flutter-apk/app-release.apk
    
    deploy_job:
      stage: deploy
      script:
        - echo "Deploy to server"
        - scp build/app/outputs/flutter-apk/app-release.apk user@your-server:/path/to/deploy/
    
  3. 配置GitLab Runner标签
    在Runner配置中添加标签,确保特定Runner处理Flutter任务。

  4. 测试流水线
    提交文件后,在GitLab中触发CI/CD流水线,观察构建和部署是否成功。

  5. 优化与扩展
    可集成Docker镜像、环境变量管理等,提升流程效率。例如,使用Firebase App Distribution分发APK。

此方法适用于小型团队,确保版本迭代效率的同时降低手动操作风险。

Flutter CI/CD自动化部署 GitLab Runner实践

基本配置步骤

  1. 安装GitLab Runner
sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64"
sudo chmod +x /usr/local/bin/gitlab-runner
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start
  1. 注册Runner
sudo gitlab-runner register

按照提示输入GitLab URL、注册令牌等信息

.gitlab-ci.yml配置示例

stages:
  - build
  - test
  - deploy

variables:
  FLUTTER_VERSION: "3.16.5"  # 指定Flutter版本

before_script:
  - apt-get update -qy
  - apt-get install -y curl unzip
  - git clone https://github.com/flutter/flutter.git -b $FLUTTER_VERSION --depth 1
  - export PATH="$PATH:`pwd`/flutter/bin"
  - flutter doctor

build_android:
  stage: build
  script:
    - flutter pub get
    - flutter build apk --release
  artifacts:
    paths:
      - build/app/outputs/flutter-apk/*.apk
  only:
    - master

test:
  stage: test
  script:
    - flutter test

进阶优化

  1. 使用Docker镜像加速构建
image: cirrusci/flutter:latest
  1. iOS构建需要macOS Runner
build_ios:
  stage: build
  tags:
    - macos
  script:
    - flutter build ios --release --no-codesign
  1. 缓存依赖
cache:
  key: ${CI_COMMIT_REF_SLUG}
  paths:
    - .pub-cache/

常见问题解决

  1. 权限问题:确保Runner用户有足够权限
  2. 内存不足:增加交换空间或优化构建脚本
  3. 网络问题:配置国内镜像源或使用代理

实践时建议从小规模测试开始,逐步完善流水线,并充分利用GitLab Runner的缓存机制提高构建效率。

回到顶部