Files
esp32-aldl-android/.gitea/workflows/release.yml
T
gronod d40a63ec4a
Build and Release APK / build-and-release (push) Successful in 5m16s
ci: add release signing configuration and tag validation to workflows
2026-06-14 11:28:14 +01:00

77 lines
2.8 KiB
YAML

# Required Gitea secrets:
# SIGNING_KEYSTORE_BASE64 - base64-encoded Android release keystore
# SIGNING_STORE_PASSWORD - keystore password
# SIGNING_KEY_ALIAS - key alias
# SIGNING_KEY_PASSWORD - key password
name: Build and Release APK
on:
push:
tags:
- 'v*'
jobs:
build-and-release:
runs-on: ubuntu-latest
steps:
- name: Validate tag format
run: |
if [[ "${{ github.ref_name }}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "Tag ${{ github.ref_name }} is valid."
else
echo "Invalid tag format: ${{ github.ref_name }}. Expected vN.N.N"
exit 1
fi
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Setup Android SDK
uses: android-actions/setup-android@v3
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
- name: Decode keystore
run: |
echo "${{ secrets.SIGNING_KEYSTORE_BASE64 }}" | base64 -d > release.keystore
- name: Export signing environment variables
run: |
echo "SIGNING_STORE_FILE=$(pwd)/release.keystore" >> $GITHUB_ENV
echo "SIGNING_STORE_PASSWORD=${{ secrets.SIGNING_STORE_PASSWORD }}" >> $GITHUB_ENV
echo "SIGNING_KEY_ALIAS=${{ secrets.SIGNING_KEY_ALIAS }}" >> $GITHUB_ENV
echo "SIGNING_KEY_PASSWORD=${{ secrets.SIGNING_KEY_PASSWORD }}" >> $GITHUB_ENV
- name: Test and Build Release APK
run: chmod +x ./gradlew && ./gradlew test assembleRelease
- name: Rename APK
run: |
mkdir -p artifacts
cp app/build/outputs/apk/release/app-release.apk artifacts/esp32-aldl-dashboard-${{ github.ref_name }}.apk
- name: Create Gitea Release
id: create_release
run: |
response=$(curl -s -X POST \
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
-H "Content-Type: application/json" \
-d "{\"tag_name\":\"${{ github.ref_name }}\",\"name\":\"Release ${{ github.ref_name }}\",\"body\":\"Auto-generated release for ${{ github.ref_name }}.\"}" \
"${{ github.server_url }}/api/v1/repos/${{ github.repository }}/releases")
echo "release_response=$response" >> $GITHUB_ENV
- name: Upload APK to Gitea Release
run: |
upload_url=$(echo "$release_response" | grep -o '"url":"[^"]*' | head -1 | cut -d'"' -f4)
curl -s -X POST \
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
-H "Content-Type: application/vnd.android.package-archive" \
--data-binary @artifacts/esp32-aldl-dashboard-${{ github.ref_name }}.apk \
"${upload_url}/assets?name=esp32-aldl-dashboard-${{ github.ref_name }}.apk"