name: Weekly Build # 触发器 on: schedule: - cron: '0 15 * * 0' #每周天在国际标准时间15点(北京时间+8,即 23:00) workflow_dispatch: inputs: root_sol: description: "Weekly Build Title" required: true default: "SmsForwarder" jobs: build: runs-on: ubuntu-latest env: output: "${{ github.workspace }}/build/app/outputs/apk/release" steps: # 检出代码 - uses: actions/checkout@v4 # 删除旧的工作流 - name: Delete Weekly Build uses: Mattraks/delete-workflow-runs@v2 with: token: ${{ github.token }} repository: ${{ github.repository }} retain_days: 0 # 全部删除只留正在跑的一条 keep_minimum_runs: 0 # 全部删除只留正在跑的一条 delete_workflow_pattern: 'Weekly Build' # 设置jdk环境为11 - name: set up JDK 11 uses: actions/setup-java@v4 with: distribution: 'zulu' java-version: '11' java-package: jdk # 获取打包秘钥 - name: Checkout Android Keystore uses: actions/checkout@v4 with: repository: pppscn/keystore token: ${{ secrets.TOKEN }} # 连接仓库的token,需要单独配置 path: keystore # 仓库的根目录名 # 打包release - name: Build with Gradle run: bash ./gradlew assembleRelease # 存档打包的文件,以便后续上传,TODO: 看起来有点笨,有没有更好的方法? - name: Init APP Version Name run: | echo "ver_name=$(grep -m 1 '\"versionName\":' ${{ env.output }}//output-metadata.json | grep -oP '\"versionName\": \"\K[^\"]+')" >> $GITHUB_ENV echo "ver_code=$(grep -m 1 '\"versionCode\":' ${{ env.output }}//output-metadata.json | grep -oP '\"versionCode\": \K\d+' | tail -c 4)" >> $GITHUB_ENV echo "ver_date=$(grep -m 1 '\"outputFile\":' ${{ env.output }}//output-metadata.json | grep -oP '\"outputFile\": \"[^\"]+' | grep -oP '\d{8}')" >> $GITHUB_ENV - name: Upload App To Artifact universal if: success () || failure () uses: actions/upload-artifact@v3 with: name: "SmsF_${{ env.ver_name }}_100${{ env.ver_code }}_universal_${{ env.ver_date }}_release.apk" path: "${{ env.output }}//SmsF_*_universal_*.apk" - name: Upload App To Artifact armeabi-v7a if: success () || failure () uses: actions/upload-artifact@v3 with: name: "SmsF_${{ env.ver_name }}_200${{ env.ver_code }}_armeabi-v7a_${{ env.ver_date }}_release.apk" path: "${{ env.output }}//SmsF_*_armeabi-v7a_*.apk" - name: Upload App To Artifact arm64-v8a if: success () || failure () uses: actions/upload-artifact@v3 with: name: "SmsF_${{ env.ver_name }}_300${{ env.ver_code }}_arm64-v8a_${{ env.ver_date }}_release.apk" path: "${{ env.output }}//SmsF_*_arm64-v8a_*.apk" - name: Upload App To Artifact x86 if: success () || failure () uses: actions/upload-artifact@v3 with: name: "SmsF_${{ env.ver_name }}_400${{ env.ver_code }}_x86_${{ env.ver_date }}_release.apk" path: "${{ env.output }}//SmsF_*_x86_${{ env.ver_date }}_*.apk" - name: Upload App To Artifact x86_64 if: success () || failure () uses: actions/upload-artifact@v3 with: name: "SmsF_${{ env.ver_name }}_500${{ env.ver_code }}_x86_64_${{ env.ver_date }}_release.apk" path: "${{ env.output }}//SmsF_*_x86_64_${{ env.ver_date }}_*.apk"