V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
xrr2016
V2EX  ›  分享创造

使用 Github Actions 持续发布 Flutter 应用

  •  
  •   xrr2016 ·
    xrr2016 · 2020-02-28 13:05:20 +08:00 · 2095 次点击
    这是一个创建于 1490 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    Github Actions 是 Github 提供的一种 CI/CD 服务,如果你的 Flutter 应用代码放在 Github 上,那就可以使用这个服务自动化进行应用测试,构建,发布工作了。

    先说下 Github Actions 几个核心概念,感觉还是挺易懂的,不得不说 Github Actions 的设计很厉害 😄

    Workflow file

    配置工作流程的文件,YAML 格式,放在项目根目录的 .github/workflows 目录内

    Workflow

    由配置文件定义的一个工作流程,由一系列的的任务组成

    Job

    工作流程中的一个任务,由一系列的步骤 Step 组成

    Step

    一个任务其中的一个执行步骤,执行一些命令或者 Action

    Action

    一个步骤中的具体要进行操作,如拉取代码,发送请求等,可以使用自己或社区共享的 Action

    Event

    触发工作流程运行的事件,比如推送代码到仓库 push,创建一个版本标签 tag 等

    Artifact

    工程流程执行时产生的东西

    Runner

    就是工作流程运行的地方,Github 提供的服务器

    示例

    下面用一个示例项目来说明如何使用 Github Actions 发布 Flutter 应用,先放成果 地址

    release

    首先创建一个 Flutter 项目

    flutter create flutter_github_actions
    

    添加一个配置文件 .github/workflows/main.yml

    main.yml

    配置工作流程,将代码推送到 Github

    # 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/[email protected]
            with:
              java-version: "12.x"
          # 建立 Flutter 环境
          - name: Flutter action
            uses: subosito/[email protected]
            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/[email protected]
            with:
              artifacts: "build/app/outputs/apk/release/*.apk"
              token: ${{ secrets.GITHUB_RElEASE_TOKEN }}
    
    

    创建 Token

    要把构建出来的 apk 发布到仓库的 Release,还需要创建一个 Personal access token 提供发布 action 访问和操作代码仓库的权限,注意不要关闭浏览器标签,因为这个 token 只有在第一次创建的时候可见。

    token

    添加环境变量

    最后为了能在工作流程中创建的 token,需要在仓库的 secrets 里添加一个环境变量 GITHUB_RElEASE_TOKEN 来储存 token 值

    secrets

    触发构建

    最后创建一个版本标签,推送到仓库触发工作流程

    git tag v1.0.0
    
    git push --tag
    

    然后就可以在仓库的 Actions 里面看到正在运行的工作流程了

    workflow

    总结

    总结一下就是以下 4 个步骤

    1. 创建一个工作流程的配置文件 .github/workflows/main.yml
    2. 创建一个 Personnal access token
    3. 在项目的 serect 里面添加一个环境变量 GITHUB_RElEASE_TOKEN
    4. 推送一个版本标签🏷️,触发工作流程

    之后就可以在每次发布标签后自动发布了

    原文地址

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1097 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 22:48 · PVG 06:48 · LAX 15:48 · JFK 18:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.