背景 : 總是需要 給客戶演示, 客戶端這邊總是要打包 發(fā)布demo ,
安裝包沒(méi)了, 還得重新發(fā).
版本有迭代, 得重新發(fā).
新得渠道,得重新發(fā).
有沒(méi)有一個(gè)好得方法,能省去這些瑣事. 搜了下GitHub Actions 貌似是個(gè)不錯(cuò)得解決方案
-
新建一個(gè)WorkFlow
進(jìn)入GitHub 工程頁(yè), 選擇 Actions Tab項(xiàng) 建好 .yml 文件
可以選擇模板 看好后點(diǎn)擊 **Set up this workflow **
也可以自定義 >> set up a workflow yourself
如下圖
pic1.png
yml文件在 .github/workflows/ 目錄下
-
yml文件簡(jiǎn)介
基礎(chǔ)知識(shí)
- workflow (工作流程):持續(xù)集成一次運(yùn)行的過(guò)程。
- job (任務(wù)):一個(gè) workflow 由一個(gè)或多個(gè) job 構(gòu)成,含義是一次持續(xù)集成的運(yùn)行,可以完成多個(gè)任務(wù)。
- step(步驟):每個(gè) job 由多個(gè) step 構(gòu)成,一步步完成。
- action (動(dòng)作):每個(gè) step 可以依次執(zhí)行一個(gè)或多個(gè)命令(action)
Workflow 語(yǔ)法
name字段是 work-flow 的名稱。若忽略此字段,則默認(rèn)會(huì)設(shè)置為 work-flow 文件名。on字段 是 workflow 的觸發(fā)條件 , 譬如是某個(gè)分支的提交之類的動(dòng)作..jobs表示要執(zhí)行的一項(xiàng)或多項(xiàng)任務(wù)。一個(gè)jobs 包含一個(gè)或多個(gè)job, 每一項(xiàng)任務(wù)必須關(guān)聯(lián)一個(gè) ID (job_id)-
runs-on字段指定任務(wù)運(yùn)行所需要的虛擬服務(wù)器環(huán)境,是必填字段,我理解就是虛擬機(jī)系統(tǒng),可供選擇的系統(tǒng)如下虛擬環(huán)境 YAML workflow 標(biāo)簽 Windows Server 2019 windows-latest Ubuntu 18.04 ubuntu-latest orubuntu-18.04Ubuntu 16.04 ubuntu-16.04 macOS X Catalina 10.15 macos-latest
-
action是 GitHub Ac-tions 中的重要組成部分,這點(diǎn)從名稱中就可以看出,actions是action的復(fù)數(shù)形式。它是已經(jīng)編寫(xiě)好的步驟腳本,存放在 GitHub 倉(cāng)庫(kù)中。
- 編譯相關(guān)的東西

-
fir 相關(guān)
現(xiàn)在就是要把生成apk文件發(fā)布到fir上了.
網(wǎng)上搜了下,說(shuō)fir安裝需要依賴ruby環(huán)境, 得先安裝ruby , 這里遇到兩個(gè)問(wèn)題
安裝fir工具
fir-cli時(shí)候提示 no permission相關(guān),按說(shuō)應(yīng)該是超級(jí)管理員啊, 但加上sudo 也就好了.publish的時(shí)候,總是提示apk不存在, 排查后是安裝ruby的時(shí)候給刪掉了, 后來(lái)發(fā)現(xiàn)安裝時(shí)候有個(gè)clean參數(shù),設(shè)置為false 就不會(huì)刪除了
-
firtoken的問(wèn)題,這個(gè)需要到fir官網(wǎng)上獲取, 添加至項(xiàng)目的Settings>Secrets>Repository secrets..
4.png
-
其它
中間遇到一些問(wèn)題,需要打印路徑
這樣的方式
- 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
- 參考

