Files
QieKan-3.0/.github/workflows/test.yml
T
2024-08-27 12:15:44 +08:00

277 lines
9.4 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Test Build
on:
push:
branches:
- master
paths:
- '**'
# - '!**/assets/**'
# - '!**.md'
- '!**/ISSUE_TEMPLATE/**'
- '!**/modules/web/**'
pull_request:
paths-ignore:
- '**/modules/web/**'
workflow_run:
workflows: [Build Web]
branches: [master]
types:
- completed
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
prepare:
runs-on: ubuntu-latest
if: ${{ !startsWith(github.event.head_commit.message, 'Merge pull request') }}
outputs:
version: ${{ steps.set-ver.outputs.version }}
versionL: ${{ steps.set-ver.outputs.versionL }}
lanzou: ${{ steps.check.outputs.lanzou }}
telegram: ${{ steps.check.outputs.telegram }}
steps:
- id: set-ver
run: |
echo "version=$(date -d "8 hour" -u +3.%y.%m%d%H)" >> $GITHUB_OUTPUT
echo "versionL=$(date -d "8 hour" -u +3.%y.%m%d%H%M)" >> $GITHUB_OUTPUT
- id: check
run: |
if [ ${{ secrets.LANZOU_ID }} ]; then
echo "lanzou=yes" >> $GITHUB_OUTPUT
fi
if [ ${{ secrets.BOT_TOKEN }} ]; then
echo "telegram=yes" >> $GITHUB_OUTPUT
fi
build:
needs: prepare
strategy:
matrix:
product: [ app ]
type: [ release, releaseA ]
fail-fast: false
runs-on: ubuntu-latest
env:
product: ${{ matrix.product }}
type: ${{ matrix.type }}
VERSION: ${{ needs.prepare.outputs.version }}
VERSIONL: ${{ needs.prepare.outputs.versionL }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 17
- name: Clear 18PlusList.txt
run: |
echo "清空18PlusList.txt"
echo "">$GITHUB_WORKSPACE/app/src/main/assets/18PlusList.txt
- name: Release Apk Sign
run: |
echo "给apk增加签名"
cp $GITHUB_WORKSPACE/.github/workflows/legado.jks $GITHUB_WORKSPACE/app/legado.jks
sed '$a\RELEASE_STORE_FILE=./legado.jks' $GITHUB_WORKSPACE/gradle.properties -i
sed '$a\RELEASE_KEY_ALIAS=legado' $GITHUB_WORKSPACE/gradle.properties -i
sed '$a\RELEASE_STORE_PASSWORD=gedoor_legado' $GITHUB_WORKSPACE/gradle.properties -i
sed '$a\RELEASE_KEY_PASSWORD=gedoor_legado' $GITHUB_WORKSPACE/gradle.properties -i
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4
- name: Build With Gradle
continue-on-error: true
run: |
if [ ${{ env.type }} == 'release' ]; then
typeName="原包名"
else
typeName="共存"
sed "s/'.release'/'.releaseA'/" $GITHUB_WORKSPACE/app/build.gradle -i
sed 's/.release/.releaseA/' $GITHUB_WORKSPACE/app/google-services.json -i
fi
echo "统一版本号"
sed "/def version/c def version = \"${{ env.VERSION }}\"" $GITHUB_WORKSPACE/app/build.gradle -i
echo "开始${{ env.product }}$typeName构建"
chmod +x gradlew
./gradlew assemble${{ env.product }}release --build-cache --parallel --daemon --warning-mode all
echo "修改APK文件名"
mkdir -p ${{ github.workspace }}/apk/
for file in `ls ${{ github.workspace }}/app/build/outputs/apk/*/*/*.apk`; do
mv "$file" ${{ github.workspace }}/apk/legado_${{ env.product }}_${{ env.VERSIONL }}_$typeName.apk
done
echo "移动mapping文件"
mkdir -p ${{ github.workspace }}/mapping/
for file in `ls ${{ github.workspace }}/app/build/outputs/mapping/*/mapping.txt`; do
mv "$file" ${{ github.workspace }}/mapping/mapping.txt
done
- name: Move Missing Rules Files
run: |
echo "移动missing_rules.txt文件"
mkdir -p ${{ github.workspace }}/mapping/
for file in `ls ${{ github.workspace }}/app/build/outputs/mapping/*/missing_rules.txt`; do
mv "$file" ${{ github.workspace }}/mapping/missing_rules.txt
done
- name: Upload Missing Rules File To Artifact
uses: actions/upload-artifact@v4
with:
name: legado.${{ env.product }}.${{ env.type }}.mapping.missing_rules
if-no-files-found: ignore
path: ${{ github.workspace }}/mapping/missing_rules.txt
- name: Check Build production
run: |
if [ ! -d ${{ github.workspace }}/apk ]; then
echo "Build production not found! Check gradle logs."
exit 1
fi
cd ${{ github.workspace }}/apk/
if [ ! -e legado_*.apk ]; then
echo "Build production not found! Check gradle logs."
exit 1
fi
- name: Upload App To Artifact
uses: actions/upload-artifact@v4
with:
name: legado.${{ env.product }}.${{ env.type }}
if-no-files-found: ignore
path: ${{ github.workspace }}/apk/*.apk
- name: Upload Mapping File To Artifact
uses: actions/upload-artifact@v4
with:
name: legado.${{ env.product }}.${{ env.type }}.mapping
if-no-files-found: ignore
path: ${{ github.workspace }}/mapping/mapping.txt
prerelease:
needs: [ prepare, build ]
if: github.event_name != 'pull_request' && github.repository == 'gedoor/legado'
runs-on: ubuntu-latest
env:
VERSION: ${{ needs.prepare.outputs.version }}
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
path: apk/
- working-directory: apk/
run: |
mv */*.apk .
rm -rf */
for file in `ls *.apk`; do
if [[ "$file" == *原包名* ]]; then
mv "$file" $(echo $file | sed s/原包名/release/)
else
mv "$file" $(echo $file | sed s/共存/releaseA/)
fi
done
- name: Delete Pre-Release
run: |
if gh release view beta &>/dev/null; then
gh release delete beta -y
fi
env:
GH_TOKEN: ${{ github.token }}
- name: Create or update beta tag
uses: richardsimko/update-tag@v1
with: