This repository has been archived on 2026-06-02. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
FabledApp/.forgejo/workflows/build.yml
T
bvandeusen 46425a4b27 Add Forgejo Release creation on version tag push
Tag pushes (v*) now build the APK and create a Forgejo Release with
the APK attached as a downloadable asset, in addition to uploading the
workflow artifact. Requires RELEASE_TOKEN secret (write:repository scope).
To release: git tag v26.03.09 && git push origin v26.03.09

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 21:04:50 -04:00

78 lines
2.4 KiB
YAML

# Runs on pushes to main and on version tags (v*).
#
# Branch push (main): builds APK, uploads as workflow artifact (30 day retention)
# Tag push (v26.03.09): builds APK, creates a Forgejo Release with APK attached
#
# To cut a release:
# git tag v26.03.09 && git push origin v26.03.09
#
# Required secrets (repo → Settings → Secrets → Actions):
# RELEASE_TOKEN — Forgejo PAT with write:repository scope
name: Build APK
on:
push:
branches: [main]
tags: ["v*"]
paths:
- "lib/**"
- "pubspec.yaml"
- "pubspec.lock"
- "android/**"
- "assets/**"
- ".forgejo/workflows/build.yml"
jobs:
build:
name: Build release APK
runs-on: ubuntu-latest
container:
image: ghcr.io/cirruslabs/flutter:stable
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: flutter pub get
- name: Build release APK
run: flutter build apk --release
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: fabledapp-${{ github.sha }}
path: build/app/outputs/flutter-apk/app-release.apk
retention-days: 30
- name: Create Forgejo release
if: startsWith(github.ref, 'refs/tags/')
env:
RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
TAG: ${{ github.ref_name }}
run: |
echo "Creating release $TAG..."
RESPONSE=$(curl -s -X POST \
"https://git.fabledsword.com/api/v1/repos/bvandeusen/FabledApp/releases" \
-H "Authorization: token $RELEASE_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"tag_name\": \"$TAG\", \"name\": \"$TAG\", \"body\": \"\"}")
RELEASE_ID=$(echo "$RESPONSE" | grep -oE '"id":[[:space:]]*[0-9]+' | head -1 | grep -oE '[0-9]+')
if [ -z "$RELEASE_ID" ]; then
echo "Failed to create release. API response:"
echo "$RESPONSE"
exit 1
fi
echo "Release created with ID $RELEASE_ID, uploading APK..."
curl -s -X POST \
"https://git.fabledsword.com/api/v1/repos/bvandeusen/FabledApp/releases/$RELEASE_ID/assets" \
-H "Authorization: token $RELEASE_TOKEN" \
-F "attachment=@build/app/outputs/flutter-apk/app-release.apk"
echo "Done — release $TAG is live at:"
echo "https://git.fabledsword.com/bvandeusen/FabledApp/releases/tag/$TAG"