This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
name: Build Android Release
|
||||
name: Android APK Release
|
||||
|
||||
on:
|
||||
push:
|
||||
@@ -6,7 +6,7 @@ on:
|
||||
- main
|
||||
- master
|
||||
tags:
|
||||
- "*"
|
||||
- "android-app-v*"
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
@@ -16,7 +16,7 @@ permissions:
|
||||
|
||||
jobs:
|
||||
android:
|
||||
name: Build Android
|
||||
name: Build Android APK
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
@@ -163,31 +163,31 @@ jobs:
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cp "$apk_path" "$pkg_dir/gongyun-app-release.apk"
|
||||
ls -alh "$pkg_dir/gongyun-app-release.apk"
|
||||
cp "$apk_path" "$pkg_dir/gongyun-android-app-release.apk"
|
||||
ls -alh "$pkg_dir/gongyun-android-app-release.apk"
|
||||
|
||||
- name: Rename Android APK
|
||||
- name: Prepare Android APK artifact
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
apk="dist/android/gongyun-app-release.apk"
|
||||
apk="dist/android/gongyun-android-app-release.apk"
|
||||
if [ ! -f "$apk" ]; then
|
||||
echo "Release APK was not found at $apk."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cp "$apk" gongyun-app-release.apk
|
||||
ls -alh gongyun-app-release.apk
|
||||
cp "$apk" gongyun-android-app-release.apk
|
||||
ls -alh gongyun-android-app-release.apk
|
||||
|
||||
- name: Upload Android APK artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: gongyun-app-release.apk
|
||||
path: gongyun-app-release.apk
|
||||
name: gongyun-android-app-release.apk
|
||||
path: gongyun-android-app-release.apk
|
||||
|
||||
- name: Publish Gitea release
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
if: startsWith(github.ref, 'refs/tags/android-app-v')
|
||||
shell: bash
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
@@ -196,6 +196,7 @@ jobs:
|
||||
GITEA_REPO: app
|
||||
TAG_NAME: ${{ github.ref_name }}
|
||||
TARGET_COMMITISH: ${{ github.sha }}
|
||||
ANDROID_APK_FILE: gongyun-android-app-release.apk
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
@@ -206,6 +207,8 @@ jobs:
|
||||
|
||||
releases_url="$GITEA_API_URL/repos/$GITEA_OWNER/$GITEA_REPO/releases"
|
||||
release_by_tag_url="$releases_url/tags/$TAG_NAME"
|
||||
export RELEASE_TITLE="Android App APK ${TAG_NAME}"
|
||||
export RELEASE_BODY="Android app installation package (APK) for ${TAG_NAME}."
|
||||
|
||||
status="$(curl -sS -o release.json -w "%{http_code}" \
|
||||
-H "Authorization: token $GITEA_TOKEN" \
|
||||
@@ -220,8 +223,8 @@ jobs:
|
||||
print(json.dumps({
|
||||
"tag_name": tag,
|
||||
"target_commitish": os.environ.get("TARGET_COMMITISH", ""),
|
||||
"name": tag,
|
||||
"body": f"Automated release for {tag}.",
|
||||
"name": f"Android App APK {tag}",
|
||||
"body": f"Android app installation package (APK) for {tag}.",
|
||||
"draft": False,
|
||||
"prerelease": False,
|
||||
}))
|
||||
@@ -250,6 +253,32 @@ jobs:
|
||||
PY
|
||||
)"
|
||||
|
||||
release_update_payload="$(python3 - <<'PY'
|
||||
import json
|
||||
import os
|
||||
|
||||
print(json.dumps({
|
||||
"name": os.environ["RELEASE_TITLE"],
|
||||
"body": os.environ["RELEASE_BODY"],
|
||||
"draft": False,
|
||||
"prerelease": False,
|
||||
}))
|
||||
PY
|
||||
)"
|
||||
|
||||
update_status="$(curl -sS -o release.json -w "%{http_code}" \
|
||||
-X PATCH \
|
||||
-H "Authorization: token $GITEA_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$release_update_payload" \
|
||||
"$releases_url/$release_id")"
|
||||
|
||||
if [ "$update_status" != "200" ]; then
|
||||
echo "Failed to update Android release metadata. HTTP status: $update_status"
|
||||
cat release.json
|
||||
exit 1
|
||||
fi
|
||||
|
||||
assets_url="$releases_url/$release_id/assets"
|
||||
|
||||
curl -sS -f \
|
||||
@@ -259,8 +288,14 @@ jobs:
|
||||
|
||||
python3 - <<'PY' > asset-ids-to-delete.txt
|
||||
import json
|
||||
import os
|
||||
|
||||
names = {"gongyun-app-release.apk"}
|
||||
tag = os.environ["TAG_NAME"]
|
||||
names = {
|
||||
os.environ["ANDROID_APK_FILE"],
|
||||
f"gongyun-{tag}.apk",
|
||||
"gongyun-app-release.apk",
|
||||
}
|
||||
with open("assets.json", encoding="utf-8") as f:
|
||||
for asset in json.load(f):
|
||||
if asset.get("name") in names:
|
||||
@@ -276,18 +311,19 @@ jobs:
|
||||
fi
|
||||
done < asset-ids-to-delete.txt
|
||||
|
||||
release_asset_name="gongyun-${TAG_NAME}.apk"
|
||||
curl -sS -f \
|
||||
-X POST \
|
||||
-H "Authorization: token $GITEA_TOKEN" \
|
||||
-F "attachment=@gongyun-app-release.apk" \
|
||||
"$assets_url?name=gongyun-app-release.apk"
|
||||
-F "attachment=@$ANDROID_APK_FILE" \
|
||||
"$assets_url?name=$release_asset_name"
|
||||
|
||||
- name: Post-build disk cleanup
|
||||
if: always()
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
rm -rf build dist .dart_tool android/.gradle android/app-release.jks android/key.properties || true
|
||||
rm -rf build dist .dart_tool android/.gradle android/app-release.jks android/key.properties gongyun-android-app-release.apk gongyun-app-release.apk || true
|
||||
if command -v docker >/dev/null 2>&1; then
|
||||
docker system prune -af --volumes || true
|
||||
docker builder prune -af || true
|
||||
Reference in New Issue
Block a user