From f4b5d774dfb50d6970d87d1b16f5829c5df83f63 Mon Sep 17 00:00:00 2001 From: dlgt7 <102397160+dlgt7@users.noreply.github.com> Date: Sat, 23 Dec 2023 09:02:57 +0800 Subject: [PATCH] Create auto_build.yml --- .../.github /workflows/auto_build.yml | 152 ++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 ApkAutoBuild/.github /workflows/auto_build.yml diff --git a/ApkAutoBuild/.github /workflows/auto_build.yml b/ApkAutoBuild/.github /workflows/auto_build.yml new file mode 100644 index 0000000..b381047 --- /dev/null +++ b/ApkAutoBuild/.github /workflows/auto_build.yml @@ -0,0 +1,152 @@ +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