153 lines
6.9 KiB
YAML
153 lines
6.9 KiB
YAML
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
|