当前位置: 首页 > article >正文

使用 GitHub Actions 通过 CI/CD 简化 Flutter 应用程序开发

在快节奏的移动应用程序开发世界中,速度、可靠性和效率是决定项目成功或失败的关键因素。持续集成和持续部署 (CI/CD) 实践已成为确保满足这些方面的强大工具。当与流行的跨平台框架 Flutter 和 GitHub Actions 的自动化功能相结合时,开发人员可以创建无缝管道,加速开发生命周期并确保交付高质量的应用程序。在本文中,我们将探讨如何使用 GitHub Actions 为 Flutter 应用程序设置 CI/CD。

我正在为客户开发一个长期项目,每次我进行一些更改或将功能分支合并到开发时,我都必须手动构建并将更新的 apk 发送给我的客户或团队,以便他们可以审核。我进行了一些搜索,发现了一个很棒的工具,可以使用 GitHub Actions 自动执行此操作。现在,每次我向开发人员推送或创建 PR 时,GitHub Actions 都会自动构建、测试工件并将其上传到 Github,以便我的团队或客户可以从 GitHub Actions 获取更新的 APK。

这非常简单,只需 5 到 10 分钟即可实现。

了解 CI/CD 和 GitHub Actions

持续集成(CI)是指每天多次将代码更改集成到共享仓库中。主要目的是尽早发现并解决集成问题,确保代码库保持功能性和一致性。持续部署(CD)通过将代码变更自动部署到生产或暂存环境,对这一流程进行了扩展。这种方法最大限度地减少了人工干预,降低了人为错误的风险。

GitHub Actions 是 GitHub 提供的多功能自动化平台。它允许开发人员将工作流程定义为代码,自动执行任务,例如直接从存储库构建、测试和部署代码。通过 GitHub Actions,开发人员可以设置由代码推送、拉取请求或发布等事件触发的自定义工作流程。

使用 GitHub Actions 为 Flutter 应用程序设置 CI/CD

第 1 步:创建工作流程文件

  1. 导航到 GitHub 上的 Flutter 应用程序存储库。
  2. 创建一个名为 .github/workflows 的新目录(如果尚不存在)。
  3. 在此目录中,创建一个新的 YAML 文件,例如 main.yml 。 (见下图)。

第 2 步:定义工作流程

在 main.yml 文件中,定义您的工作流程。这是我在我的用例中使用的一个示例。

on:
    pull_request:
      branches:
        - dev
name: Test, Build and Release apk
jobs:
    build:
      name: Build APK
      runs-on: ubuntu-latest
      steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-java@v2
        with:
          distribution: 'zulu'
          java-version: '11'
      - uses: subosito/flutter-action@v2
        with:
          flutter-version: '3.7.7'
      - run: flutter pub get
      - run: flutter test
      - run: flutter build apk --release
      - uses: actions/upload-artifact@v1
        with:
          name: release-apk
          path: build/app/outputs/apk/release/app-release.apk

在本示例中,工作流是在向 dev 分支提出 pull_request 时触发的。您可以根据需要在任何 github action(如推送等)上运行此工作流。它执行以下任务:

  • 检查存储库代码。
  • 使用 flutter pub get 安装依赖项。
  • 使用 flutter test 运行测试(如果您已定义任何测试)。
  • 使用 flutter build apk 构建 APK。
  • 使用上传工件将开发好的 apk 上传到工件。

可从 Github Actions 详情中找到上传的工件(见下图)。

您还可以集成您的 Play 控制台或 Firebase 帐户,以便在完成该功能后立即部署您的应用程序。


http://www.kler.cn/a/272368.html

相关文章:

  • 从零开始:Spring Boot核心概念与架构解析
  • 软件的收费方式
  • Java 多态/向下转型/instanceof
  • java基础概念59-File
  • 解决 WSL 2 中 Ubuntu 22.04 安装 Docker 后无法启动的问题
  • 算法(蓝桥杯)贪心算法5——删数问题的解题思路
  • 矩阵中移动的最大次数
  • 基于粒子群算法的分布式电源配电网重构优化matlab仿真
  • 谈谈IC、ASIC、SoC、MPU、MCU、CPU、GPU、DSP、FPGA、CPLD的简介
  • C语言自学笔记8----C语言Switch语句
  • Redis-复制功能
  • Spring web MVC(2)
  • 【STM32 定时器(二)TIM 输入捕获PWM 总结】
  • Redis-2 Redis基础数据类型与基本使用
  • 爱普生晶振发布RTC模块晶振(压电侠)
  • [Mac软件]Adobe Illustrator 2024 28.3 intel/M1/M2/M3矢量图制作软件
  • 【Canvas与艺术】砂落字现
  • LLM(大语言模型)——Springboot集成文心一言、讯飞星火、通义千问、智谱清言
  • 【学习笔记】云原生初步
  • OpenCV-Java 开发简介
  • 接雨水-热题 100?-Lua 中文代码解题第4题
  • SparkSQL读取本地文件写入MySQL
  • 【MySQL】MySQL事务
  • SpringCloudAlibaba系列之Seata实战
  • RuiYi-Vue开源项目1-下载并实现运行RuiYi-Vue项目
  • 华为云APIG跨域资源共享方案