From 7ce23309f61704c82125b865d83e3990d2c59a1a Mon Sep 17 00:00:00 2001 From: Sebastian Molenda Date: Wed, 27 May 2026 15:04:28 +0200 Subject: [PATCH] 0.2.3-t2 --- .gitea/workflows/release-on-tag.yml | 117 ++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 .gitea/workflows/release-on-tag.yml diff --git a/.gitea/workflows/release-on-tag.yml b/.gitea/workflows/release-on-tag.yml new file mode 100644 index 0000000..b1678b8 --- /dev/null +++ b/.gitea/workflows/release-on-tag.yml @@ -0,0 +1,117 @@ +name: Release APK on Tag (Gitea Actions) + +on: + push: + tags: + - '*' + +# Note: This workflow requires a repository secret named GITEA_TOKEN with a personal access token +# that has `repo` (or appropriate) scope for creating releases and uploading assets. +# Optionally set GITEA_SERVER to your Gitea server base URL (e.g. https://gitea.example.com). + +jobs: + build-and-release: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Ensure JDK 17 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: '17' + + - name: Build release APK + run: | + set -e + ./gradlew :app:assembleRelease --no-daemon --stacktrace + + - name: Locate APK + id: locate_apk + run: | + set -e + APK_PATH=$(ls app/build/outputs/apk/release/*.apk | head -n1 || true) + if [ -z "$APK_PATH" ]; then + echo "No APK found in app/build/outputs/apk/release" + exit 1 + fi + echo "APK_PATH=$APK_PATH" >> $GITHUB_ENV + echo "Found $APK_PATH" + + - name: Create Gitea release + id: create_release + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + GITEA_SERVER: ${{ secrets.GITEA_SERVER }} + run: | + set -e + # Determine API base URL + if [ -n "$GITEA_SERVER" ]; then + API_BASE="$GITEA_SERVER/api/v1" + else + API_BASE="https://gitea.com/api/v1" + fi + + # Derive owner/repo from git remote + REMOTE_URL=$(git config --get remote.origin.url || true) + if [ -z "$REMOTE_URL" ]; then + echo "Cannot determine remote origin URL" >&2 + exit 1 + fi + REPO_FULL=$(echo "$REMOTE_URL" | sed -E 's#.*[:/](.+/.+)\.git$#\1#') + OWNER=$(echo "$REPO_FULL" | cut -d/ -f1) + REPO_NAME=$(echo "$REPO_FULL" | cut -d/ -f2) + + TAG=${GITHUB_REF_NAME:-$(echo $GITHUB_REF | sed 's#refs/tags/##')} + if [ -z "$TAG" ]; then + # fallback: use git to get tag from HEAD + TAG=$(git describe --tags --exact-match 2>/dev/null || true) + fi + if [ -z "$TAG" ]; then + echo "Cannot determine tag name" >&2 + exit 1 + fi + + echo "Creating release $TAG for $OWNER/$REPO_NAME against $API_BASE" + + CREATE_RESPONSE=$(curl -s -H "Content-Type: application/json" -H "Authorization: token $GITEA_TOKEN" \ + -d "{\"tag_name\": \"$TAG\", \"name\": \"$TAG\", \"body\": \"Automated release for $TAG\", \"draft\": false, \"prerelease\": false}" \ + "$API_BASE/repos/$OWNER/$REPO_NAME/releases") + + RELEASE_ID=$(echo "$CREATE_RESPONSE" | grep -o '"id":[0-9]*' | head -n1 | cut -d: -f2 | tr -d ' ') + if [ -z "$RELEASE_ID" ]; then + echo "Failed to create release. Response: $CREATE_RESPONSE" >&2 + exit 1 + fi + echo "RELEASE_ID=$RELEASE_ID" >> $GITHUB_ENV + echo "Created release id $RELEASE_ID" + + - name: Upload APK to Gitea release + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + GITEA_SERVER: ${{ secrets.GITEA_SERVER }} + run: | + set -e + API_BASE=${GITEA_SERVER:+$GITEA_SERVER/api/v1} + API_BASE=${API_BASE:-https://gitea.com/api/v1} + REMOTE_URL=$(git config --get remote.origin.url || true) + REPO_FULL=$(echo "$REMOTE_URL" | sed -E 's#.*[:/](.+/.+)\.git$#\1#') + OWNER=$(echo "$REPO_FULL" | cut -d/ -f1) + REPO_NAME=$(echo "$REPO_FULL" | cut -d/ -f2) + APK_PATH=${APK_PATH:-$APK_PATH} + if [ -z "$APK_PATH" ]; then + echo "APK_PATH not set" >&2 + exit 1 + fi + RELEASE_ID=${RELEASE_ID} + if [ -z "$RELEASE_ID" ]; then + echo "RELEASE_ID not set" >&2 + exit 1 + fi + + UPLOAD_URL="$API_BASE/repos/$OWNER/$REPO_NAME/releases/$RELEASE_ID/assets?name=$(basename $APK_PATH)" + echo "Uploading $APK_PATH to $UPLOAD_URL" + + curl --fail -H "Authorization: token $GITEA_TOKEN" -H "Content-Type: application/octet-stream" \ + --data-binary @"$APK_PATH" "$UPLOAD_URL"