Github Actions 是 Github 提供的一种 CI/CD 服务,若是你的 Flutter 应用代码放在 Github 上,那就能够使用这个服务自动化进行应用测试,构建,发布工做了。java
先说下 Github Actions 几个核心概念,感受仍是挺易懂的,不得不说 Github Actions 的设计很厉害 😄git
Workflow file
github
配置工做流程的文件,YAML 格式,放在项目根目录的 .github/workflows
目录内ubuntu
Workflow
浏览器
由配置文件定义的一个工做流程,由一系列的的任务组成服务器
Job
app
工做流程中的一个任务,由一系列的步骤 Step 组成gitlab
Step
post
一个任务其中的一个执行步骤,执行一些命令或者 Action测试
Action
一个步骤中的具体要进行操做,如拉取代码,发送请求等,能够使用本身或社区共享的 Action
Event
触发工做流程运行的事件,好比推送代码到仓库 push,建立一个版本标签 tag 等
Artifact
工程流程执行时产生的东西
Runner
就是工做流程运行的地方,Github 提供的服务器
下面用一个示例项目来讲明如何使用 Github Actions 发布 Flutter 应用,先放成果 地址
flutter create flutter_github_actions
复制代码
.github/workflows/main.yml
# main.yml
# 工做流程的名字
name: Test, Build and Release apk
# 工做流程触发的时机,这里是当一个版本标签推送到仓库时触发
on:
push:
tags:
- v*
# 这个工做流程须要执行的任务
jobs:
process:
name: all process
runs-on: ubuntu-latest
# 这个任务的步骤
steps:
# 拉取项目代码
- uses: actions/checkout@v2
# 创建 java 环境
- name: Setup Java JDK
uses: actions/setup-java@v1.3.0
with:
java-version: "12.x"
# 创建 Flutter 环境
- name: Flutter action
uses: subosito/flutter-action@v1.1.1
with:
channel: "stable"
flutter-version: "1.12.x"
# 下载项目依赖
- run: flutter pub get
# 执行测试
- run: flutter test
# 打包 APK
- run: flutter build apk --release
# 发布到 Release
- name: Release apk
uses: ncipollo/release-action@v1.5.0
with:
artifacts: "build/app/outputs/apk/release/*.apk"
token: ${{ secrets.GITHUB_RElEASE_TOKEN }}
复制代码
要把构建出来的 apk 发布到仓库的 Release,还须要建立一个 Personal access token 提供发布 action 访问和操做代码仓库的权限,注意不要关闭浏览器标签,由于这个 token 只有在第一次建立的时候可见。
最后为了能在工做流程中建立的 token,须要在仓库的 secrets 里添加一个环境变量 GITHUB_RElEASE_TOKEN
来储存 token 值
最后建立一个版本标签,推送到仓库触发工做流程
git tag v1.0.0
git push --tag
复制代码
而后就能够在仓库的 Actions 里面看到正在运行的工做流程了
总结一下就是如下 4 个步骤
.github/workflows/main.yml
GITHUB_RElEASE_TOKEN
以后就能够在每次发布标签后自动发布了