Flutter App 使用 Github Actions 进行 CI/CD
一、CI/CD 与 Github Actions
1、什么是 CI/CD?
CI/CD (Continuous Integration/Continuous Delivery) 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CD/CD 的核心概念是持续集成、持续交付和持续部署。CI/CD 是一个面向开发和运维团队的解决方案,主要是为了解决在集成新代码时可能会引发的问题(也就是“集成地狱”)。
具体而言,CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署)。这些关联的事务通常被统称为“CI/CD 管道”,由开发和运维团队以敏捷方式协同支持。
CI/CD 的主要目的是尽早的发现集成错误,让团队更加紧密的合作,同时使构建自动化,在理想的情况下能随时进行代码发布。
2 、Github Actions 介绍
github actions 是 Github 提供的 CI/CD 服务,我们在 Github 上的工程,通过 Github Actions 就可以进行自动化测试,构建和发布。
概念 :
- Wordflow file
工作流配置文件,YAML 格式文件,放到 .githu/workflows 目录下
- Workflow
工作流,通常由一系列任务组成。
- Job
工作流中的任务,通常由一系列步骤 Step 组成。
- Step
任务中的执行步骤,执行命令或者 Action 。
- Action
一个步骤中执行的操作,如拉代码等。
- Event
触发工作流的事件,如 push 操作等。
二、Flutter 项目使用 Github Actions
1、新建项目
Android Studio 新建 Flutter 项目 或者通过 命令行创建。
flutter create flutter_github_actions
创建完项目之后,直接上传到 github 上。
2、创建工作流文件
Github 本身提供了许多预定义的工作流文件提供给我们使用,但是这里我们使用自己定义的。
同样,在一个工程里面也可以有多个不同的工作流文件,这里我们只新建一个进行演示。
在项目根目录下新建 .github/workflows 目录,然后再这个目录下新建一个 main.yml 文件。
3、编写命令
接下来就可以在 main.yml 中编写命令了。
# 触发工作流的操作
on: push
# 工作流名字
name: Test, Build and Release apk
# 需要执行的任务
jobs:
build:
name: Build APK
# 定义运行环境
runs-on: ubuntu-latest
# 执行步骤
steps:
# 步骤执行之前,先拉取最新代码
- uses: actions/checkout@v1
- uses: actions/setup-java@v1
with:
java-version: '12.x'
# 配置 Flutter 环境
- uses: subosito/flutter-action@v1
with:
flutter-version: '1.7.8+hotfix.4'
# 执行构建之前,更新 flutter 依赖
- run: flutter pub get
# 测试
- run: flutter test
- run: flutter build apk --debug --split-per-abi
- name: Create a Release APK
uses: ncipollo/release-action@v1
with:
artifacts: "build/app/outputs/apk/debug/*.apk"
token: ${{ secrets.TOKEN }}
上面的命令中 :
-
actions/checkout@v1 表示使用 Github 提供的 Action 来拉代码。
-
ubosito/flutter-action@v1 表示配置 flutter 环境。
-
secrets.TOKEN 权限检查
4、配置 Token
执行 CI/CD ,需要获取权限才能进行相关的操作,因此需要我们自己配置 Token 。创建一个 Personal access token 来 提供发布 action 访问和操作代码仓库的权限
创建完成之后,复制创建的 Token 值,然后到新建的仓库的 Settings 页,新建 Secrets ,在这里新建一个变量名为 TOKEN ,值为刚才复制的 Token 值的 secret 。
5、git push 触发构建
创建成功之后,就可以测试是否能够触发工作流。
git tag v1.0
git push origin v1.0
执行 git 命令之后,就可以在 github 上看是否再执行构建了。
参考资料:
1、How to Setup CI/CD for Flutter Apps with GitHub Actions
2、CI/CD for Flutter Apps Using GitHub Actions
推荐阅读
欢迎关注「Flutter 编程开发」微信公众号 。