name: Build and Release APK on: push: tags: - 'v*' jobs: build: runs-on: docker-compose steps: - name: Checkout source code uses: actions/checkout@v4 - name: Setup keystore and environment run: | echo "${{ secrets.KEYSTORE_BASE64 }}" | tr -d '\n' | base64 -d > app/key.jks echo "${{ secrets.DOTENV_BASE64 }}" | tr -d '\n' | base64 -d > .build/release/.env - name: Build APK working-directory: .build/release run: docker compose run --rm release - name: Rename APK run: | APP_NAME="${{ gitea.repository }}" APP_NAME="${APP_NAME##*/}" TAG="${{ gitea.ref_name }}" find .build/release/release/ -maxdepth 1 -name "*.apk" | head -1 | xargs -I{} mv {} ".build/release/release/${APP_NAME}-${TAG}.apk" - name: Extract release notes run: | echo "No release notes" > release_notes.md # VERSION="${{ gitea.ref_name }}" # VERSION="${VERSION#v}" # # awk -v ver="$VERSION" ' # BEGIN { found=0 } # /^## \[/ { # if (found) exit # if ($0 ~ "\\[" ver "\\]") { found=1; next } # } # found { print } # ' CHANGELOG.md > release_notes.md - name: Create Gitea Release env: GITEA_SERVER_URL: ${{ gitea.server_url }} GITEA_REPOSITORY: ${{ gitea.repository }} GITEA_TOKEN: ${{ secrets.PAT_GITEA }} run: | APP_NAME="${{ gitea.repository }}" APP_NAME="${APP_NAME##*/}" TAG="${{ gitea.ref_name }}" TITLE="${APP_NAME} ${TAG}" NOTES_FILE="release_notes.md" ASSET_PATH=".build/release/release/${APP_NAME}-${TAG}.apk" API_URL="${GITEA_SERVER_URL}/api/v1/repos/${GITEA_REPOSITORY}/releases" RELEASE_RESPONSE=$(curl -s -X POST "$API_URL" \ -H "Authorization: token ${GITEA_TOKEN}" \ -H "Content-Type: application/json" \ -d "{ \"tag_name\": \"${TAG}\", \"name\": \"${TITLE}\", \"body\": $(jq -Rs . < "$NOTES_FILE") }") RELEASE_ID=$(echo "$RELEASE_RESPONSE" | jq -r '.id') if [ "$RELEASE_ID" = "null" ] || [ -z "$RELEASE_ID" ]; then echo "Failed to create release:" echo "$RELEASE_RESPONSE" exit 1 fi echo "Created release with ID: $RELEASE_ID" ASSET_NAME=$(basename "$ASSET_PATH") UPLOAD_URL="${API_URL}/${RELEASE_ID}/assets?name=${ASSET_NAME}" curl -s -X POST "$UPLOAD_URL" \ -H "Authorization: token ${GITEA_TOKEN}" \ -H "Content-Type: application/octet-stream" \ --data-binary "@${ASSET_PATH}" echo "Uploaded asset: $ASSET_NAME"