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"