git.iko.soy/parseable-android
on master help sign in
Add prerelease creation on every push to master (#4)

Adds a new `prerelease` job to the CI workflow that runs after the build job succeeds on pushes to master/main. It builds the release APK, renames it with the short commit SHA, and publishes it as a GitHub prerelease under the rolling `latest-master` tag. The previous prerelease is deleted before creating a new one so there is always exactly one `latest-master` prerelease pointing to the most recent master commit. https://claude.ai/code/session_01KZJ5GTZ7FHWHFYZHR5uEjY Co-authored-by: Claude <noreply@anthropic.com>

commit439f9721b9bf6596025928fed2590571c2e09ac4 authoriko <mail@iko.soy> dateSun 15 Feb 2026, 14:31 (8 months ago) parent5e8f3d7
1 file changed+59
.github/workflows/ci.yml+59
.github/workflows/ci.yml+59
@@ -58,3 +58,62 @@ jobs:
5858 name: lint-results
5959 path: app/build/reports/lint-results-release.html
6060 retention-days: 14
61+
62+ prerelease:
63+ name: Create Prerelease
64+ needs: build
65+ if: github.event_name == 'push'
66+ runs-on: ubuntu-latest
67+ permissions:
68+ contents: write
69+
70+ steps:
71+ - name: Checkout code
72+ uses: actions/checkout@v4
73+
74+ - name: Set up JDK 17
75+ uses: actions/setup-java@v4
76+ with:
77+ java-version: '17'
78+ distribution: 'temurin'
79+
80+ - name: Setup Gradle
81+ uses: gradle/actions/setup-gradle@v4
82+
83+ - name: Setup Android SDK
84+ uses: android-actions/setup-android@v3
85+
86+ - name: Generate Gradle wrapper
87+ run: gradle wrapper --gradle-version 8.9
88+
89+ - name: Build release APK
90+ run: ./gradlew assembleRelease
91+
92+ - name: Rename APK with commit SHA
93+ run: |
94+ SHORT_SHA=$(echo "${{ github.sha }}" | cut -c1-7)
95+ for apk in app/build/outputs/apk/release/*.apk; do
96+ mv "$apk" "app/build/outputs/apk/release/parseable-android-${SHORT_SHA}.apk"
97+ done
98+
99+ - name: Delete existing latest-master tag and release
100+ env:
101+ GH_TOKEN: ${{ github.token }}
102+ run: |
103+ gh release delete latest-master --yes || true
104+ git push origin :refs/tags/latest-master || true
105+
106+ - name: Create prerelease
107+ uses: softprops/action-gh-release@v2
108+ with:
109+ tag_name: latest-master
110+ name: "Latest Master Build (${{ github.sha }})"
111+ prerelease: true
112+ body: |
113+ Automated prerelease from commit ${{ github.sha }}.
114+
115+ **Commit:** [`${{ github.sha }}`](${{ github.server_url }}/${{ github.repository }}/commit/${{ github.sha }})
116+ **Branch:** `${{ github.ref_name }}`
117+ **Triggered by:** @${{ github.actor }}
118+ files: |
119+ app/build/outputs/apk/release/*.apk