Android 通過(guò) github actions 自動(dòng)化打包 并發(fā)布 fir.im 爬坑記

背景 : 總是需要 給客戶演示, 客戶端這邊總是要打包 發(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í)

    1. workflow (工作流程):持續(xù)集成一次運(yùn)行的過(guò)程。
    2. job (任務(wù)):一個(gè) workflow 由一個(gè)或多個(gè) job 構(gòu)成,含義是一次持續(xù)集成的運(yùn)行,可以完成多個(gè)任務(wù)。
    3. step(步驟):每個(gè) job 由多個(gè) step 構(gòu)成,一步步完成。
    4. action (動(dòng)作):每個(gè) step 可以依次執(zhí)行一個(gè)或多個(gè)命令(action)

    Workflow 語(yǔ)法

    1. name 字段是 work-flow 的名稱。若忽略此字段,則默認(rèn)會(huì)設(shè)置為 work-flow 文件名。

    2. on 字段 是 workflow 的觸發(fā)條件 , 譬如是某個(gè)分支的提交之類的動(dòng)作..

    3. jobs 表示要執(zhí)行的一項(xiàng)或多項(xiàng)任務(wù)。一個(gè)jobs 包含一個(gè)或多個(gè)job, 每一項(xiàng)任務(wù)必須關(guān)聯(lián)一個(gè) ID (job_id)

    4. 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-latestorubuntu-18.04
      Ubuntu 16.04 ubuntu-16.04
      macOS X Catalina 10.15 macos-latest
  1. action 是 GitHub Ac-tions 中的重要組成部分,這點(diǎn)從名稱中就可以看出,actionsaction 的復(fù)數(shù)形式。它是已經(jīng)編寫(xiě)好的步驟腳本,存放在 GitHub 倉(cāng)庫(kù)中。
  • 編譯相關(guān)的東西
pic3.png
  • fir 相關(guān)

    現(xiàn)在就是要把生成apk文件發(fā)布到fir上了.

    網(wǎng)上搜了下,說(shuō)fir安裝需要依賴ruby環(huán)境, 得先安裝ruby , 這里遇到兩個(gè)問(wèn)題

    1. 安裝fir工具fir-cli時(shí)候提示 no permission相關(guān),按說(shuō)應(yīng)該是超級(jí)管理員啊, 但加上sudo 也就好了.

    2. publish的時(shí)候,總是提示apk不存在, 排查后是安裝ruby的時(shí)候給刪掉了, 后來(lái)發(fā)現(xiàn)安裝時(shí)候有個(gè)clean參數(shù),設(shè)置為false 就不會(huì)刪除了

    3. 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

  • 參考
  1. GitHub Actions 入門(mén)教程

  2. 使用GitHub Actions實(shí)現(xiàn)Android自動(dòng)打包apk

  3. 【持續(xù)集成】Android使用Github Action自動(dòng)打包并發(fā)布Fir.im內(nèi)測(cè)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容