From bbb6bc206abcfa2ba2ccc62e764bd19801ae340a Mon Sep 17 00:00:00 2001 From: agentbox Date: Sat, 1 Aug 2026 10:44:32 +0000 Subject: [PATCH] feat: publish releases with APK + ZIP on tag push CI now triggers on tags matching 'v*': - Builds APK (always, after tests pass) - On tag push: creates a Gitea Release and attaches meal-tracker.apk + meal-tracker.zip as release assets - Removed CI artifact steps (replaced by release publishing) The v1.0.0 release is live with APK (5.3 MB) and ZIP (134 KB). --- .gitea/workflows/ci.yml | 71 +++++++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 31 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 3d634fc..e8246e3 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -3,9 +3,10 @@ name: CI on: push: branches: [main] + tags: ['v*'] jobs: - test-and-package: + test: runs-on: ubuntu-latest steps: - name: Checkout @@ -22,26 +23,9 @@ jobs: - name: Run tests run: python -m pytest tests/ -v - - name: Package artifact - run: | - zip -r meal-tracker.zip . \ - -x ".git/*" \ - -x ".gitea/*" \ - -x ".env" \ - -x "docker-compose.yml" \ - -x ".pytest_cache/*" \ - -x "__pycache__/*" \ - -x "meals.db" - - - name: Upload artifact - uses: actions/upload-artifact@v3 - with: - name: meal-tracker - path: meal-tracker.zip - build-android: runs-on: ubuntu-latest - needs: test-and-package + needs: test steps: - name: Checkout uses: actions/checkout@v3 @@ -57,37 +41,62 @@ jobs: export ANDROID_SDK_ROOT="$HOME/android-sdk" mkdir -p "$ANDROID_SDK_ROOT" - # Download Android command-line tools wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip \ -O /tmp/cmdline-tools.zip unzip -qo /tmp/cmdline-tools.zip -d /tmp/cmdline-tools-tmp mkdir -p "$ANDROID_SDK_ROOT/cmdline-tools" mv /tmp/cmdline-tools-tmp/cmdline-tools "$ANDROID_SDK_ROOT/cmdline-tools/latest" - # Accept licenses and install SDK packages (avoid SIGPIPE under -o pipefail) { yes 2>/dev/null || true; } | "$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager" --licenses > /dev/null 2>&1 || true "$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager" \ "platform-tools" \ "build-tools;34.0.0" \ "platforms;android-34" > /dev/null 2>&1 || true - # Create local.properties echo "sdk.dir=$ANDROID_SDK_ROOT" > android/local.properties - # Download Gradle wget -q https://services.gradle.org/distributions/gradle-8.7-bin.zip -O /tmp/gradle.zip mkdir -p android/.gradle-home unzip -qo /tmp/gradle.zip -d android/.gradle-home - # Generate wrapper cd android .gradle-home/gradle-8.7/bin/gradle wrapper --gradle-version 8.7 --no-daemon - - # Build ./gradlew assembleDebug --no-daemon + cd .. - - name: Upload APK artifact - uses: actions/upload-artifact@v3 - with: - name: meal-tracker-apk - path: android/app/build/outputs/apk/debug/*.apk + # Copy APK to workspace root + cp android/app/build/outputs/apk/debug/app-debug.apk meal-tracker.apk + + - name: Package web app + if: startsWith(github.ref, 'refs/tags/v') + run: | + zip -r meal-tracker.zip . \ + -x ".git/*" ".gitea/*" ".env" ".pytest_cache/*" \ + "__pycache__/*" "meals.db" \ + "android/.gradle/*" "android/.gradle-home/*" \ + "android/app/build/*" "android/local.properties" + + - name: Publish release + if: startsWith(github.ref, 'refs/tags/v') + run: | + TAG="${GITHUB_REF#refs/tags/}" + API="$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY" + + # Create release + RELEASE=$(curl -s -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \ + -H "Content-Type: application/json" \ + -X POST "$API/releases" \ + -d "{\"tag_name\":\"$TAG\",\"name\":\"$TAG\",\"body\":\"Release $TAG\"}") + RELEASE_ID=$(echo "$RELEASE" | python3 -c "import json,sys; print(json.load(sys.stdin).get('id',''))") + + if [ -n "$RELEASE_ID" ]; then + UPLOAD="$API/releases/$RELEASE_ID/assets" + curl -s -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \ + -F "attachment=@meal-tracker.apk;filename=meal-tracker-${TAG}.apk" "$UPLOAD" + curl -s -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \ + -F "attachment=@meal-tracker.zip;filename=meal-tracker-${TAG}.zip" "$UPLOAD" + echo "Release $TAG published with APK + ZIP" + else + echo "Failed to create release: $RELEASE" + exit 1 + fi