Android 通过 github actions 自动化打包
背景 : 总是需要 给客户演示, 客户端这边总是要打包 发布demo ,
安装包没了, 还得重新发.
版本有迭代, 得重新发.
新得渠道,得重新发.
有没有一个好得方法,能省去这些琐事. 搜了下GitHub Actions 貌似是个不错得解决方案
-
新建一个WorkFlow
进入GitHub 工程页, 选择 Actions Tab项 建好 .yml 文件
可以选择模板 看好后点击 **Set up this workflow **
也可以自定义 >> set up a workflow yourself
如下图
pic1.png
yml文件在 .github/workflows/ 目录下
-
yml文件简介
基础知识
- workflow (工作流程):持续集成一次运行的过程。
- job (任务):一个 workflow 由一个或多个 job 构成,含义是一次持续集成的运行,可以完成多个任务。
- step(步骤):每个 job 由多个 step 构成,一步步完成。
- action (动作):每个 step 可以依次执行一个或多个命令(action)
Workflow 语法
-
name
字段是 workflow 的名称。若忽略此字段,则默认会设置为 workflow 文件名。 -
on
字段 是 workflow 的触发条件 , 譬如是某个分支的提交之类的动作.. -
jobs
表示要执行的一项或多项任务。一个jobs 包含一个或多个job, 每一项任务必须关联一个 ID (job_id
) -
runs-on
字段指定任务运行所需要的虚拟服务器环境,是必填字段,我理解就是虚拟机系统,可供选择的系统如下虚拟环境 YAML workflow 标签 Windows Server 2019 windows-latest Ubuntu 18.04 ubuntu-latest or
ubuntu-18.04Ubuntu 16.04 ubuntu-16.04 macOS X Catalina 10.15 macos-latest
-
action
是 GitHub Actions 中的重要组成部分,这点从名称中就可以看出,actions
是action
的复数形式。它是已经编写好的步骤脚本,存放在 GitHub 仓库中。
- 编译相关的东西
-
fir 相关
现在就是要把生成apk文件发布到fir上了.
网上搜了下,说fir安装需要依赖ruby环境, 得先安装ruby , 这里遇到两个问题
-
安装fir工具
fir-cli
时候提示 no permission相关,按说应该是超级管理员啊, 但加上sudo 也就好了. -
publish的时候,总是提示apk不存在, 排查后是安装ruby的时候给删掉了, 后来发现安装时候有个clean参数,设置为false 就不会删除了
-
firtoken的问题,这个需要到fir官网上获取, 添加至项目的Settings>Secrets>Repository secrets..
4.png
-
-
其它
中间遇到一些问题,需要打印路径
这样的方式
- name: showfiles run: | cd /home/runner/work/ProjectPath/~/local/rubies/app/build/outputs/apk/release/ ls
- 我的脚本
name: Android CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew assembleRelease
- uses: actions/checkout@v1
id: cache
with:
path: ~/local/rubies
key: ruby-2.6.5
clean: false
- name: install fir.im
run: sudo gem install fir-cli
- name: Upload to Fir.im
run: fir login ${{ secrets.FIRTOKEN }}
- run: fir publish app/build/outputs/apk/release/app-release.apk
- 参考