1b3c3496c5
- Убраны все машинно/инфра-специфичные данные из README/CODEMAP/скриптов/ workflows (хосты, IP, домен gitea -> github.server_url). - preconfigure: enable-check-update=N (выкл. проверку обновлений); подсказка «set up your own server» и так гаснет с override-сервером. - CI публикует exe/apk в Gitea Release `latest` (обновляется каждый прогон, стабильная ссылка) + версионный релиз на теге v*. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
61 lines
2.8 KiB
YAML
61 lines
2.8 KiB
YAML
name: build-android
|
|
# Собирает преднастроенный RustDesk APK (arm64-v8a) на раннере `android` (тулчейн поднят
|
|
# scripts/provision-android.sh). Всю логику несёт scripts/build-android.sh.
|
|
#
|
|
# Секреты репозитория: RUSTDESK_SERVER, RUSTDESK_PUB_KEY, (опц.) RUSTDESK_PRESET_PASSWORD.
|
|
# Публикация: APK кладётся в Gitea Release `latest` (обновляется каждый прогон), на теге v* — ещё и в версионный.
|
|
# Подпись: без flutter/android/key.properties APK debug-подписан; свой keystore -> релизная подпись.
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
tags: ['v*']
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
android:
|
|
runs-on: android
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Provision toolchain (идемпотентно)
|
|
run: |
|
|
chmod +x scripts/*.sh
|
|
bash scripts/provision-android.sh
|
|
|
|
- name: Build preconfigured APK
|
|
env:
|
|
RUSTDESK_SERVER: ${{ secrets.RUSTDESK_SERVER }}
|
|
RUSTDESK_PUB_KEY: ${{ secrets.RUSTDESK_PUB_KEY }}
|
|
RUSTDESK_PRESET_PASSWORD: ${{ secrets.RUSTDESK_PRESET_PASSWORD }}
|
|
run: bash scripts/build-android.sh
|
|
|
|
- name: Publish APK to Gitea Release
|
|
env:
|
|
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
|
run: |
|
|
set -e
|
|
base="${GITHUB_SERVER_URL}/api/v1/repos/${GITHUB_REPOSITORY}"
|
|
hdr="Authorization: token ${GITEA_TOKEN}"
|
|
case "$GITHUB_REF" in
|
|
refs/tags/v*) tag="$GITHUB_REF_NAME"; prerelease=false ;;
|
|
*) tag="latest"; prerelease=true ;;
|
|
esac
|
|
curl -sf -X POST "$base/releases" -H "$hdr" -H 'Content-Type: application/json' \
|
|
-d "{\"tag_name\":\"$tag\",\"name\":\"$tag\",\"draft\":false,\"prerelease\":$prerelease,\"target_commitish\":\"master\"}" || true
|
|
rel=$(curl -sf "$base/releases/tags/$tag" -H "$hdr")
|
|
relid=$(printf '%s' "$rel" | python3 -c 'import sys,json;print(json.load(sys.stdin)["id"])')
|
|
[ -n "$relid" ] || { echo "нет release id"; exit 1; }
|
|
for f in dist/*.apk; do
|
|
name=$(basename "$f")
|
|
# удалить старый ассет с тем же именем (gitea не перезаписывает)
|
|
aid=$(printf '%s' "$rel" | python3 -c "import sys,json;a=[x['id'] for x in json.load(sys.stdin).get('assets',[]) if x['name']=='$name'];print(a[0] if a else '')")
|
|
[ -n "$aid" ] && curl -sf -X DELETE "$base/releases/$relid/assets/$aid" -H "$hdr" || true
|
|
echo "Uploading $name -> release '$tag'..."
|
|
curl -sf -X POST "$base/releases/$relid/assets?name=$name" -H "$hdr" -F "attachment=@$f"
|
|
done
|
|
echo "Готово: $tag"
|