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