auto_build.yml 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. name: Auto Build
  2. on:
  3. schedule:
  4. - cron: 0 6 * * *
  5. push:
  6. branches:
  7. - main
  8. pull_request:
  9. workflow_dispatch:
  10. jobs:
  11. build:
  12. runs-on: ubuntu-latest
  13. strategy:
  14. fail-fast: false
  15. matrix:
  16. include:
  17. - userName: muxd93
  18. repoName: TVBoxOS_XD
  19. branchName: main
  20. - userName: muxd93
  21. repoName: TVBox_takagen99
  22. branchName: main
  23. - userName: q215613905
  24. repoName: TVBoxOS
  25. branchName: main
  26. - userName: takagen99
  27. repoName: Box
  28. branchName: main
  29. - userName: XiaoRanLiu3119
  30. repoName: TVBoxOS-Mobile
  31. branchName: main
  32. - userName: gedoor
  33. repoName: legado
  34. branchName: main
  35. steps:
  36. - name: Checkout
  37. uses: actions/checkout@v3
  38. with:
  39. fetch-depth: 0
  40. - name: Check New Commit
  41. run: |
  42. upStream=https://github.com/${{ matrix.userName }}/${{ matrix.repoName }}
  43. echo "upStream=$upStream" >> $GITHUB_ENV
  44. commit=$(curl -sL $upStream/commits/${{ matrix.branchName }} |grep -o '/${{ matrix.userName }}/${{ matrix.repoName }}/commit/[a-z0-9]\+' |head -1 | cut -d\/ -f5)
  45. if ! git log --oneline |grep -q "$commit"; then
  46. echo "commit=$commit" >> $GITHUB_ENV
  47. echo "commitS=${commit:0:7}" >> $GITHUB_ENV
  48. fi
  49. - name: Checkout Source Code and Zip
  50. if: ${{ env.commit }}
  51. run: |
  52. git clone ${{ env.upStream }} TVBoxOSC
  53. cd TVBoxOSC
  54. git checkout ${{ env.commit }}
  55. echo "tag=$(git log --date=format:'%Y%m%d-%H%M' --pretty=format:%cd ${{ env.commitS }} -1)" >> $GITHUB_ENV
  56. - name: Compress Source Code
  57. if: ${{ env.commit }}
  58. working-directory: TVBoxOSC
  59. run: |
  60. zip -q -x ".git/*" -r source-${{ env.commitS }}.zip .
  61. - name: Release Apk Sign
  62. if: ${{ env.commit }}
  63. working-directory: TVBoxOSC
  64. run: |
  65. signingConfigs='ICAgIHNpZ25pbmdDb25maWdzIHtcCiAgICAgICAgaWYgKHByb2plY3QuaGFzUHJvcGVydHkoIlJFTEVBU0VfU1RPUkVfRklMRSIpKSB7XAogICAgICAgICAgICBteUNvbmZpZyB7XAogICAgICAgICAgICAgICAgc3RvcmVGaWxlIGZpbGUoUkVMRUFTRV9TVE9SRV9GSUxFKVwKICAgICAgICAgICAgICAgIHN0b3JlUGFzc3dvcmQgUkVMRUFTRV9TVE9SRV9QQVNTV09SRFwKICAgICAgICAgICAgICAgIGtleUFsaWFzIFJFTEVBU0VfS0VZX0FMSUFTXAogICAgICAgICAgICAgICAga2V5UGFzc3dvcmQgUkVMRUFTRV9LRVlfUEFTU1dPUkRcCiAgICAgICAgICAgICAgICB2MVNpZ25pbmdFbmFibGVkIHRydWVcCiAgICAgICAgICAgICAgICB2MlNpZ25pbmdFbmFibGVkIHRydWVcCiAgICAgICAgICAgICAgICBlbmFibGVWM1NpZ25pbmcgPSB0cnVlXAogICAgICAgICAgICAgICAgZW5hYmxlVjRTaWduaW5nID0gdHJ1ZVwKICAgICAgICAgICAgfVwKICAgICAgICB9XAogICAgfVwKXA=='
  66. signingConfig='ICAgICAgICAgICAgaWYgKHByb2plY3QuaGFzUHJvcGVydHkoIlJFTEVBU0VfU1RPUkVfRklMRSIpKSB7XAogICAgICAgICAgICAgICAgc2lnbmluZ0NvbmZpZyBzaWduaW5nQ29uZmlncy5teUNvbmZpZ1wKICAgICAgICAgICAgfVwK'
  67. signingConfigs="$(echo "$signingConfigs" |base64 -d )"
  68. signingConfig="$(echo "$signingConfig" |base64 -d )"
  69. sed -i -e "/defaultConfig {/i\\$signingConfigs " -e "/debug {/a\\$signingConfig " -e "/release {/a\\$signingConfig " app/build.gradle
  70. cp -f ${{ github.workspace }}/.github/workflows/TVBoxOSC.jks app/TVBoxOSC.jks
  71. sed -i '$a\RELEASE_STORE_FILE=./TVBoxOSC.jks' ./gradle.properties
  72. sed -i '$a\RELEASE_KEY_ALIAS=TVBoxOSC' ./gradle.properties
  73. sed -i '$a\RELEASE_STORE_PASSWORD=TVBoxOSC' ./gradle.properties
  74. sed -i '$a\RELEASE_KEY_PASSWORD=TVBoxOSC' ./gradle.properties
  75. - name: Setup Gradle
  76. if: ${{ env.commit }}
  77. uses: gradle/gradle-build-action@v2
  78. - name: Build Release With Gradle
  79. if: ${{ env.commit }}
  80. working-directory: TVBoxOSC
  81. run: |
  82. chmod +x gradlew
  83. ./gradlew assembleRelease --build-cache --parallel --daemon --warning-mode all
  84. # - name: Build Debug With Gradle
  85. # if: ${{ env.commit }}
  86. # working-directory: TVBoxOSC
  87. # run: |
  88. # chmod +x gradlew
  89. # ./gradlew assembleDebug --build-cache --parallel --daemon --warning-mode all
  90. - name: Prepare App
  91. if: ${{ env.commit }}
  92. working-directory: TVBoxOSC
  93. run: |
  94. rm -rf apk/
  95. mkdir -p apk/
  96. for file in `find ~ -name "*release*.apk" -print`; do
  97. mv "$file" apk/TVBox_${{ matrix.userName }}_${{ env.tag }}_Release.apk
  98. done
  99. for file in `find ~ -name "*debug*.apk" -print`; do
  100. mv "$file" apk/TVBox_${{ matrix.userName }}_${{ env.tag }}_Debug.apk
  101. done
  102. - name: Release Note
  103. if: ${{ env.commit }}
  104. working-directory: TVBoxOSC
  105. run: |
  106. lastCommit=$(grep "${{ matrix.userName }}\/${{ matrix.repoName }}" ${{ github.workspace }}/README.md |grep -o '[a-z0-9]\{40\}')
  107. export LESSCHARSET=utf-8
  108. echo -e "Credit: [${{ matrix.userName }}](${{ env.upStream }})\nCommit: ${{ env.commit }}\nChangelog:" > apk/${{ matrix.userName }}-Release.log
  109. if [ "${{ env.commit }}" == "${lastCommit}" ]; then
  110. git log --pretty=format:%B ${{ env.commitS }} -1 |sed -e "s# \{2,\}#\n#g" -e "/^Merge \(pull\|branch\|remote\)/d" -e '/^$/d' |cat -n |sort -k2,2 -k1,1n |uniq -f1 |sort -k1,1n |cut -f2- >> apk/${{ matrix.userName }}-Release.log
  111. else
  112. git log --pretty=format:%B ${{ env.commitS }}...${lastCommit:0:7} |sed -e "s# \{2,\}#\n#g" -e "/^Merge \(pull\|branch\|remote\)/d" -e '/^$/d' |cat -n |sort -k2,2 -k1,1n |uniq -f1 |sort -k1,1n |cut -f2- >> apk/${{ matrix.userName }}-Release.log
  113. fi
  114. - name: Upload App To Artifact
  115. uses: actions/upload-artifact@v3
  116. if: ${{ env.commit }}
  117. with:
  118. name: TVBox_${{ matrix.userName }}_Release_and_Debug
  119. path: TVBoxOSC/apk/*
  120. - name: Release and Upload Assets(release area)
  121. uses: softprops/action-gh-release@v1
  122. if: ${{ env.commit }}
  123. with:
  124. name: ${{ env.tag }}
  125. tag_name: ${{ env.tag }}
  126. body_path: TVBoxOSC/apk/${{ matrix.userName }}-Release.log
  127. files: |
  128. TVBoxOSC/apk/*
  129. TVBoxOSC/source-${{ env.commitS }}.zip
  130. env:
  131. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  132. - name: Push to master
  133. if: ${{ env.commit }}
  134. run: |
  135. rm -rf TVBoxOSC
  136. sed -i '/url =/d' ./.git/config
  137. git config --local user.name "github-actions[bot]"
  138. git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
  139. git remote set-url --add origin "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}"
  140. git pull --rebase
  141. sed -i "/${{ matrix.userName }}\/${{ matrix.repoName }}/s#Updated: [a-zA-Z0-9]*#Updated: ${{ env.commit }}#" README.md
  142. git add --all
  143. git commit -m "${{ env.commit }}"
  144. git push -u -f origin main