Skip to content

fix

fix #384

Workflow file for this run

name: Test Build
on:
push:
branches:
- main
paths:
- '**'
# - '!**/assets/**'
# - '!**.md'
- '!**/ISSUE_TEMPLATE/**'
- '!**/modules/web/**'
pull_request:
paths-ignore:
- '**/modules/web/**'
workflow_run:
workflows: [Build Web]
branches: [main]
types:
- completed
workflow_dispatch:
# watch:
# types: [started]
# schedule:
# - cron: '0 4 * * *'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
prepare:
runs-on: ubuntu-latest
env:
GIT_TOKEN: ${{secrets.ACTIONS_TOKEN}}
outputs:
changed: ${{steps.build_changelog.outputs.changelog}}
version: ${{ steps.set-ver.outputs.version }}
# lanzou: ${{ steps.check.outputs.lanzou }}
# telegram: ${{ steps.check.outputs.telegram }}
steps:
- name: Setup timezone
uses: hoang-rio/[email protected]
with:
timezoneLinux: 'Asia/Shanghai'
- uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{env.GIT_TOKEN}}
- id: set-ver
run: |
echo "version=$(date +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: [Google]
type: [Firefly, Original]
fail-fast: false
runs-on: ubuntu-latest
env:
CHANGE: ${{ needs.prepare.outputs.changed }}
GIT_TOKEN: ${{secrets.ACTIONS_TOKEN}}
product: ${{ matrix.product }}
type: ${{ matrix.type }}
VERSION: ${{ needs.prepare.outputs.version }}
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/firefly.jks $GITHUB_WORKSPACE/app/firefly.jks
sed '$a\RELEASE_STORE_FILE=./firefly.jks' $GITHUB_WORKSPACE/gradle.properties -i
sed '$a\RELEASE_KEY_ALIAS=YueDu-Firefly' $GITHUB_WORKSPACE/gradle.properties -i
sed '$a\RELEASE_STORE_PASSWORD=YueDu-Firefly' $GITHUB_WORKSPACE/gradle.properties -i
sed '$a\RELEASE_KEY_PASSWORD=YueDu-Firefly' $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 }} == 'Original' ]; then
typeName="Original"
sed "s/'.release'/'.Original'/" $GITHUB_WORKSPACE/app/build.gradle -i
sed 's/.release/.Original/' $GITHUB_WORKSPACE/app/google-services.json -i
else
typeName="Firefly"
sed "s/'.release'/'.Firefly'/" $GITHUB_WORKSPACE/app/build.gradle -i
sed 's/.release/.Firefly/' $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/YueDu.${{ env.product }}.$typeName.${{ env.VERSION }}.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: YueDu.${{ 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 YueDu.*.apk ]; then
echo "Build production not found! Check gradle logs."
exit 1
fi
- name: Upload App To Artifact
uses: actions/[email protected]
with:
name: YueDu.${{ env.product }}.${{ env.type }}
if-no-files-found: ignore
path: ${{ github.workspace }}/apk/*.apk
- name: Upload Mapping File To Artifact
uses: actions/[email protected]
with:
name: YueDu.${{ env.product }}.${{ env.type }}.mapping
if-no-files-found: ignore
path: ${{ github.workspace }}/mapping/mapping.txt
# Delete old Prerelease-alpha
- uses: dev-drprasad/[email protected]
with:
tag_name: 'beta'
github_token: ${{env.GIT_TOKEN}}
delete_release: true
- name: Tag Repo
uses: richardsimko/update-tag@v1
with:
tag_name: 'beta'
env:
GITHUB_TOKEN: ${{env.GIT_TOKEN}}
- name: Upload Alpha
uses: softprops/[email protected]
if: ${{ success() }}
with:
name: YueDu.${{ env.VERSION }}
tag_name: 'beta'
body: '此版本为测试版,签名与正式版不同,可能存在不稳定情况,升级前请务必备份好数据。'
generate_release_notes: true
token: ${{env.GIT_TOKEN}}
prerelease: true
files: ${{ github.workspace }}/apk/*
- name: Release Changelog Builder
uses: mikepenz/release-changelog-builder-action@v4
# lanzou:
# needs: [ prepare, build ]
# if: ${{ github.event_name != 'pull_request' && needs.prepare.outputs.lanzou == 'yes' }}
# runs-on: ubuntu-latest
# env:
# # 登录蓝奏云后在控制台运行document.cookie
# ylogin: ${{ secrets.LANZOU_ID }}
# phpdisk_info: ${{ secrets.LANZOU_PSD }}
# # 蓝奏云里的文件夹ID(阅读3测试版:2670621)
# LANZOU_FOLDER_ID: '2670621'
# steps:
# - name: Setup timezone
# uses: hoang-rio/[email protected]
# with:
# timezoneLinux: "Asia/Shanghai"
# - uses: actions/checkout@v4
# - uses: actions/download-artifact@v4
# with:
# path: apk/
# - working-directory: apk/
# run: mv */*.apk . ;rm -rf */
# - name: Upload To Lanzou
# continue-on-error: true
# run: |
# path="$GITHUB_WORKSPACE/apk/"
# python3 $GITHUB_WORKSPACE/.github/scripts/lzy_web.py "$path" "$LANZOU_FOLDER_ID"
# echo "[$(date '+%Y.%m.%d %H:%M:%S')] 分享链接: https://kunfei.lanzoux.com/b0f810h4b"
# test_Branch:
# needs: [ prepare, build ]
# runs-on: ubuntu-latest
# if: ${{ github.event_name != 'pull_request' && github.actor == 'LM-Firefly' }}
# env:
# VERSION: ${{ needs.prepare.outputs.ver }}
# steps:
# - uses: actions/checkout@v4
# - uses: actions/download-artifact@v4
# with:
# path: apk/
# - working-directory: apk/
# run: mv */*.apk . ;rm -rf */
# - name: Push Assets To "test" Branch
# run: |
# cd $GITHUB_WORKSPACE/apk/
# git config --global user.name "github-actions[bot]"
# git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
# git init
# git checkout -b test
# git remote add origin "https://${{ github.actor }}:${{env.GIT_TOKEN}}@github.com/${{ github.actor }}/release"
# git add *.apk
# git commit -m "${{ env.VERSION }}"
# git push -f -u origin test
# telegram:
# needs: [ prepare, build ]
# if: ${{ github.event_name != 'pull_request' && needs.prepare.outputs.telegram == 'yes' }}
# runs-on: ubuntu-latest
# env:
# CHANNEL_ID: ${{ secrets.CHANNEL_ID }}
# BOT_TOKEN: ${{ secrets.BOT_TOKEN }}
# steps:
# - uses: actions/checkout@v4
# - uses: actions/download-artifact@v4
# with:
# path: apk/
# - working-directory: apk/
# run: |
# for file in `ls */*.apk`; do
# mv "$file" "$(echo "$file"|sed -e 's#.*\/##g' -e "s/_/ /g" -e 's/legado/阅读/')"
# done
# rm -rf */
# - name: Post to channel
# uses: xireiki/channel-post@v1
# with:
# chat_id: ${{ secrets.CHANNEL_ID }}
# bot_token: ${{ secrets.BOT_TOKEN }}
# context: "#阅读 #Legado #Beta ${{ needs.prepare.outputs.versionL }}"
# path: apk/*
# method: sendFile