123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- name: Auto Build
- on:
- schedule:
- - cron: 0 6 * * *
- push:
- branches:
- - main
- pull_request:
- workflow_dispatch:
- jobs:
- build:
- runs-on: ubuntu-latest
- strategy:
- fail-fast: false
- matrix:
- include:
- - userName: muxd93
- repoName: TVBoxOS_XD
- branchName: main
- - userName: muxd93
- repoName: TVBox_takagen99
- branchName: main
- - userName: q215613905
- repoName: TVBoxOS
- branchName: main
- - userName: takagen99
- repoName: Box
- branchName: main
- - userName: XiaoRanLiu3119
- repoName: TVBoxOS-Mobile
- branchName: main
- - userName: gedoor
- repoName: legado
- branchName: main
- steps:
- - name: Checkout
- uses: actions/checkout@v3
- with:
- fetch-depth: 0
- - name: Check New Commit
- run: |
- upStream=https://github.com/${{ matrix.userName }}/${{ matrix.repoName }}
- echo "upStream=$upStream" >> $GITHUB_ENV
- commit=$(curl -sL $upStream/commits/${{ matrix.branchName }} |grep -o '/${{ matrix.userName }}/${{ matrix.repoName }}/commit/[a-z0-9]\+' |head -1 | cut -d\/ -f5)
- if ! git log --oneline |grep -q "$commit"; then
- echo "commit=$commit" >> $GITHUB_ENV
- echo "commitS=${commit:0:7}" >> $GITHUB_ENV
- fi
- - name: Checkout Source Code and Zip
- if: ${{ env.commit }}
- run: |
- git clone ${{ env.upStream }} TVBoxOSC
- cd TVBoxOSC
- git checkout ${{ env.commit }}
- echo "tag=$(git log --date=format:'%Y%m%d-%H%M' --pretty=format:%cd ${{ env.commitS }} -1)" >> $GITHUB_ENV
- - name: Compress Source Code
- if: ${{ env.commit }}
- working-directory: TVBoxOSC
- run: |
- zip -q -x ".git/*" -r source-${{ env.commitS }}.zip .
- - name: Release Apk Sign
- if: ${{ env.commit }}
- working-directory: TVBoxOSC
- run: |
- signingConfigs='ICAgIHNpZ25pbmdDb25maWdzIHtcCiAgICAgICAgaWYgKHByb2plY3QuaGFzUHJvcGVydHkoIlJFTEVBU0VfU1RPUkVfRklMRSIpKSB7XAogICAgICAgICAgICBteUNvbmZpZyB7XAogICAgICAgICAgICAgICAgc3RvcmVGaWxlIGZpbGUoUkVMRUFTRV9TVE9SRV9GSUxFKVwKICAgICAgICAgICAgICAgIHN0b3JlUGFzc3dvcmQgUkVMRUFTRV9TVE9SRV9QQVNTV09SRFwKICAgICAgICAgICAgICAgIGtleUFsaWFzIFJFTEVBU0VfS0VZX0FMSUFTXAogICAgICAgICAgICAgICAga2V5UGFzc3dvcmQgUkVMRUFTRV9LRVlfUEFTU1dPUkRcCiAgICAgICAgICAgICAgICB2MVNpZ25pbmdFbmFibGVkIHRydWVcCiAgICAgICAgICAgICAgICB2MlNpZ25pbmdFbmFibGVkIHRydWVcCiAgICAgICAgICAgICAgICBlbmFibGVWM1NpZ25pbmcgPSB0cnVlXAogICAgICAgICAgICAgICAgZW5hYmxlVjRTaWduaW5nID0gdHJ1ZVwKICAgICAgICAgICAgfVwKICAgICAgICB9XAogICAgfVwKXA=='
- signingConfig='ICAgICAgICAgICAgaWYgKHByb2plY3QuaGFzUHJvcGVydHkoIlJFTEVBU0VfU1RPUkVfRklMRSIpKSB7XAogICAgICAgICAgICAgICAgc2lnbmluZ0NvbmZpZyBzaWduaW5nQ29uZmlncy5teUNvbmZpZ1wKICAgICAgICAgICAgfVwK'
- signingConfigs="$(echo "$signingConfigs" |base64 -d )"
- signingConfig="$(echo "$signingConfig" |base64 -d )"
- sed -i -e "/defaultConfig {/i\\$signingConfigs " -e "/debug {/a\\$signingConfig " -e "/release {/a\\$signingConfig " app/build.gradle
- cp -f ${{ github.workspace }}/.github/workflows/TVBoxOSC.jks app/TVBoxOSC.jks
- sed -i '$a\RELEASE_STORE_FILE=./TVBoxOSC.jks' ./gradle.properties
- sed -i '$a\RELEASE_KEY_ALIAS=TVBoxOSC' ./gradle.properties
- sed -i '$a\RELEASE_STORE_PASSWORD=TVBoxOSC' ./gradle.properties
- sed -i '$a\RELEASE_KEY_PASSWORD=TVBoxOSC' ./gradle.properties
- - name: Setup Gradle
- if: ${{ env.commit }}
- uses: gradle/gradle-build-action@v2
- - name: Build Release With Gradle
- if: ${{ env.commit }}
- working-directory: TVBoxOSC
- run: |
- chmod +x gradlew
- ./gradlew assembleRelease --build-cache --parallel --daemon --warning-mode all
- # - name: Build Debug With Gradle
- # if: ${{ env.commit }}
- # working-directory: TVBoxOSC
- # run: |
- # chmod +x gradlew
- # ./gradlew assembleDebug --build-cache --parallel --daemon --warning-mode all
- - name: Prepare App
- if: ${{ env.commit }}
- working-directory: TVBoxOSC
- run: |
- rm -rf apk/
- mkdir -p apk/
- for file in `find ~ -name "*release*.apk" -print`; do
- mv "$file" apk/TVBox_${{ matrix.userName }}_${{ env.tag }}_Release.apk
- done
- for file in `find ~ -name "*debug*.apk" -print`; do
- mv "$file" apk/TVBox_${{ matrix.userName }}_${{ env.tag }}_Debug.apk
- done
- - name: Release Note
- if: ${{ env.commit }}
- working-directory: TVBoxOSC
- run: |
- lastCommit=$(grep "${{ matrix.userName }}\/${{ matrix.repoName }}" ${{ github.workspace }}/README.md |grep -o '[a-z0-9]\{40\}')
- export LESSCHARSET=utf-8
- echo -e "Credit: [${{ matrix.userName }}](${{ env.upStream }})\nCommit: ${{ env.commit }}\nChangelog:" > apk/${{ matrix.userName }}-Release.log
- if [ "${{ env.commit }}" == "${lastCommit}" ]; then
- 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
- else
- 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
- fi
- - name: Upload App To Artifact
- uses: actions/upload-artifact@v3
- if: ${{ env.commit }}
- with:
- name: TVBox_${{ matrix.userName }}_Release_and_Debug
- path: TVBoxOSC/apk/*
- - name: Release and Upload Assets(release area)
- uses: softprops/action-gh-release@v1
- if: ${{ env.commit }}
- with:
- name: ${{ env.tag }}
- tag_name: ${{ env.tag }}
- body_path: TVBoxOSC/apk/${{ matrix.userName }}-Release.log
- files: |
- TVBoxOSC/apk/*
- TVBoxOSC/source-${{ env.commitS }}.zip
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- - name: Push to master
- if: ${{ env.commit }}
- run: |
- rm -rf TVBoxOSC
- sed -i '/url =/d' ./.git/config
- git config --local user.name "github-actions[bot]"
- git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
- git remote set-url --add origin "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}"
- git pull --rebase
- sed -i "/${{ matrix.userName }}\/${{ matrix.repoName }}/s#Updated: [a-zA-Z0-9]*#Updated: ${{ env.commit }}#" README.md
- git add --all
- git commit -m "${{ env.commit }}"
- git push -u -f origin main
|