name: Build Release on: push: tags: - "*" permissions: contents: read jobs: android: name: Build Android runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Java uses: actions/setup-java@v4 with: distribution: temurin java-version: "17" - name: Set up Flutter uses: subosito/flutter-action@v2 with: channel: stable cache: true - name: Install dependencies run: flutter pub get - name: Restore Android signing files shell: bash env: ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} ANDROID_STORE_PASSWORD: ${{ secrets.ANDROID_STORE_PASSWORD }} ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }} ANDROID_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }} run: | if [ -z "$ANDROID_KEYSTORE_BASE64" ] || [ -z "$ANDROID_STORE_PASSWORD" ] || [ -z "$ANDROID_KEY_ALIAS" ] || [ -z "$ANDROID_KEY_PASSWORD" ]; then echo "Android signing secrets are required: ANDROID_KEYSTORE_BASE64, ANDROID_STORE_PASSWORD, ANDROID_KEY_ALIAS, ANDROID_KEY_PASSWORD" exit 1 fi printf "%s" "$ANDROID_KEYSTORE_BASE64" | base64 -d > android/app-release.jks cat > android/key.properties < asset-ids-to-delete.txt import json names = {"gongyun-app-release.apk", "gongyun.zip"} with open("assets.json", encoding="utf-8") as f: for asset in json.load(f): if asset.get("name") in names: print(asset["id"]) PY while IFS= read -r asset_id; do if [ -n "$asset_id" ]; then curl -sS -f \ -X DELETE \ -H "Authorization: token $GITEA_TOKEN" \ "$ASSETS_URL/$asset_id" fi done < asset-ids-to-delete.txt upload_asset() { local file="$1" local name name="$(basename "$file")" curl -sS -f \ -X POST \ -H "Authorization: token $GITEA_TOKEN" \ -F "attachment=@$file" \ "$ASSETS_URL?name=$name" } upload_asset dist/gongyun-app-release.apk upload_asset dist/gongyun.zip