diff --git a/.gitea/workflows/build-apk.yml b/.gitea/workflows/build-apk.yml index 258a05b..0528360 100644 --- a/.gitea/workflows/build-apk.yml +++ b/.gitea/workflows/build-apk.yml @@ -54,44 +54,52 @@ jobs: GITEA_SERVER: ${{ secrets.GIT_SERVER }} run: | set -e - if [ -n "$GITEA_SERVER" ]; then - API_BASE="$GITEA_SERVER/api/v1" - else - API_BASE="https://gitea.com/api/v1" - fi - 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#') + API_BASE="${GITEA_SERVER}/api/v1" + + REMOTE_URL=$(git config --get remote.origin.url) + echo "Remote URL: $REMOTE_URL" + + REPO_FULL=$(echo "$REMOTE_URL" \ + | sed -E 's#https?://[^/]+/##' \ + | sed 's/\.git$//') + 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 - 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 "OWNER=$OWNER" + echo "REPO_NAME=$REPO_NAME" - echo "Creating release $TAG for $OWNER/$REPO_NAME against $API_BASE" + TAG="${GITEA_REF_NAME}" - 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}" \ + echo "Creating release $TAG for $OWNER/$REPO_NAME" + + CREATE_RESPONSE=$(curl -s \ + -H "Content-Type: application/json" \ + -H "Authorization: token $GITEA_TOKEN" \ + -X POST \ + -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 ' ') + echo "$CREATE_RESPONSE" + + RELEASE_ID=$(echo "$CREATE_RESPONSE" \ + | grep -o '"id":[0-9]*' \ + | head -n1 \ + | cut -d: -f2) + if [ -z "$RELEASE_ID" ]; then - echo "Failed to create release. Response: $CREATE_RESPONSE" >&2 + echo "Failed to create release" exit 1 fi - echo "RELEASE_ID=$RELEASE_ID" >> $GITHUB_ENV - echo "Created release id $RELEASE_ID" + echo "RELEASE_ID=$RELEASE_ID" >> $GITEA_ENV - name: Upload APK to Gitea release env: GITEA_TOKEN: ${{ secrets.GIT_TOKEN }} diff --git a/.gitea/workflows/release-on-tag.yml b/.gitea/workflows/release-on-tag.yml deleted file mode 100644 index 311e02f..0000000 --- a/.gitea/workflows/release-on-tag.yml +++ /dev/null @@ -1,117 +0,0 @@ -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).p - -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" diff --git a/.github/workflows/release-on-tag.yml b/.github/workflows/release-on-tag.yml deleted file mode 100644 index 869dd43..0000000 --- a/.github/workflows/release-on-tag.yml +++ /dev/null @@ -1,68 +0,0 @@ -name: Release APK on Tag - -on: - push: - tags: - - '*' - -jobs: - build-and-release: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Set up JDK 17 - uses: actions/setup-java@v4 - with: - distribution: 'temurin' - java-version: '17' - - - name: Cache Gradle - uses: actions/cache@v4 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} - restore-keys: | - ${{ runner.os }}-gradle- - - - name: Build release APK - run: ./gradlew :app:assembleRelease --no-daemon --stacktrace - - - name: Find APK - id: find_apk - run: | - set -e - APK=$(ls app/build/outputs/apk/release/*.apk | head -n1 || true) - if [ -z "$APK" ]; then - echo "No APK found in app/build/outputs/apk/release" - exit 1 - fi - echo "APK_PATH=$APK" >> $GITHUB_ENV - echo "apk=$APK" - - - name: Upload artifact (for debugging) - uses: actions/upload-artifact@v4 - with: - name: app-release-apk - path: ${{ env.APK_PATH }} - - - name: Create GitHub Release - id: create_release - uses: actions/create-release@v1 - with: - tag_name: ${{ github.ref_name }} - release_name: Release ${{ github.ref_name }} - body: Automated release for tag ${{ github.ref_name }} - draft: false - prerelease: false - - - name: Upload APK to Release - uses: actions/upload-release-asset@v1 - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ${{ env.APK_PATH }} - asset_name: app-release.apk - asset_content_type: application/vnd.android.package-archive