fe646d7281
build-android.yaml (раннер android/VM 118): provision -> build-android.sh -> APK в gitea release на теге. CODEMAP: полный android-рецепт + 5 грабель (libssl-dev, bindgen sysroot, no-hwcodec, JDK17, debug-подпись). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
64 lines
2.6 KiB
YAML
64 lines
2.6 KiB
YAML
name: build-android
|
|
# Собирает преднастроенный RustDesk APK (arm64-v8a) на раннере `android` (= VM 118, где тулчейн
|
|
# поднят provision-android.sh). Логику несёт scripts/build-android.sh — тот же путь, что и вручную.
|
|
#
|
|
# Секреты репозитория: RUSTDESK_SERVER, RUSTDESK_PUB_KEY, (опц.) RUSTDESK_PRESET_PASSWORD.
|
|
# Публикация: на теге v* APK прикрепляется к Gitea Release; иначе кладётся в ~/rd-ci-out.
|
|
# Подпись: без flutter/android/key.properties APK debug-подписан (для теста); свой keystore -> релизная.
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
tags: ['v*']
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
env:
|
|
REGISTRY_HOST: gitea.gusik.tech
|
|
|
|
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: Attach APK to Gitea Release
|
|
if: startsWith(github.ref, 'refs/tags/v')
|
|
env:
|
|
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
|
GITHUB_REPOSITORY: ${{ github.repository }}
|
|
GITHUB_REF_NAME: ${{ github.ref_name }}
|
|
run: |
|
|
set -e
|
|
base="https://${REGISTRY_HOST}/api/v1/repos/${GITHUB_REPOSITORY}"
|
|
hdr="Authorization: token ${GITEA_TOKEN}"
|
|
curl -sf -X POST "$base/releases" -H "$hdr" -H 'Content-Type: application/json' \
|
|
-d "{\"tag_name\":\"${GITHUB_REF_NAME}\",\"name\":\"${GITHUB_REF_NAME}\",\"draft\":false,\"prerelease\":false}" || true
|
|
relid=$(curl -sf "$base/releases/tags/${GITHUB_REF_NAME}" -H "$hdr" | python3 -c 'import sys,json;print(json.load(sys.stdin)["id"])')
|
|
[ -n "$relid" ] || { echo "нет release id"; exit 1; }
|
|
for f in dist/*.apk; do
|
|
echo "Uploading $(basename "$f")..."
|
|
curl -sf -X POST "$base/releases/$relid/assets?name=$(basename "$f")" -H "$hdr" -F "attachment=@$f"
|
|
done
|
|
|
|
- name: Stash APK (dispatch)
|
|
if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
|
|
run: |
|
|
mkdir -p ~/rd-ci-out
|
|
cp dist/*.apk ~/rd-ci-out/
|
|
ls -la ~/rd-ci-out/*.apk
|