name: Build job on: # Every Thursday at 17:30 UTC schedule: - cron: '30 17 * * 4' # Manual triggers workflow_dispatch: inputs: git-ref: description: Git Ref (Optional) required: false dry-run: description: Creates a draft release required: false jobs: build: name: Build app runs-on: 'ubuntu-24.04' steps: - name: Clone Repository (Latest) uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: repository: 'mihonapp/mihon' fetch-depth: 0 if: github.event.inputs.git-ref == '' - name: Clone Repository (Custom Ref) uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 if: github.event.inputs.git-ref != '' with: repository: 'mihonapp/mihon' fetch-depth: 0 ref: ${{ github.event.inputs.git-ref }} - name: Set up JDK uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0 with: java-version: 17 distribution: temurin - name: Set up gradle uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0 - name: Build APK run: ./gradlew assemblePreview -Pwith-analytics -Pwith-updater - name: Sign APK uses: r0adkll/sign-android-release@f30bdd30588842ac76044ecdbd4b6d0e3e813478 with: releaseDirectory: app/build/outputs/apk/preview signingKeyBase64: ${{ secrets.SIGNING_KEY }} alias: ${{ secrets.ALIAS }} keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} keyPassword: ${{ secrets.KEY_PASSWORD }} env: BUILD_TOOLS_VERSION: '35.0.1' - name: Get previous release id: last_release uses: InsonusK/get-latest-release@7a9ff16c8c6b7ead5d71c0f1cc61f2703170eade # v1.1.0 with: myToken: ${{ github.token }} exclude_types: 'draft|prerelease' view_top: 1 - name: Prepare changelog run: | set -e commit_count=$(git rev-list --count HEAD) echo "COMMIT_COUNT=$commit_count" >> $GITHUB_ENV current_sha=$(git rev-parse --short HEAD) echo "CURRENT_SHA=$current_sha" >> $GITHUB_ENV prev_commit_count=$(echo "${{ steps.last_release.outputs.tag_name }}" | sed -e "s/^r//") commit_count_diff=$(expr $commit_count - $prev_commit_count) prev_release_sha=$(git rev-parse --short HEAD~$commit_count_diff) echo "PREV_RELEASE_SHA=$prev_release_sha" >> $GITHUB_ENV echo "COMMIT_LOGS<<{delimiter} $(curl -H "Accept: application/vnd.github.v3+json" \ "https://api.github.com/repos/mihonapp/mihon/compare/$prev_release_sha...$current_sha" \ | jq '[.commits[]|{message:(.commit.message | split("\n")), username:.author.login}]' \ | jq -r '.[]|"- \(.message | first) (@\(.username))"') {delimiter}" >> $GITHUB_ENV - name: Clean up build artifacts run: | set -e cp app/build/outputs/apk/preview/app-universal-preview-signed.apk mihon-r${{ env.COMMIT_COUNT }}.apk sha=`sha256sum mihon-r${{ env.COMMIT_COUNT }}.apk | awk '{ print $1 }'` echo "APK_UNIVERSAL_SHA=$sha" >> $GITHUB_ENV cp app/build/outputs/apk/preview/app-arm64-v8a-preview-signed.apk mihon-arm64-v8a-r${{ env.COMMIT_COUNT }}.apk sha=`sha256sum mihon-arm64-v8a-r${{ env.COMMIT_COUNT }}.apk | awk '{ print $1 }'` echo "APK_ARM64_V8A_SHA=$sha" >> $GITHUB_ENV cp app/build/outputs/apk/preview/app-armeabi-v7a-preview-signed.apk mihon-armeabi-v7a-r${{ env.COMMIT_COUNT }}.apk sha=`sha256sum mihon-armeabi-v7a-r${{ env.COMMIT_COUNT }}.apk | awk '{ print $1 }'` echo "APK_ARMEABI_V7A_SHA=$sha" >> $GITHUB_ENV cp app/build/outputs/apk/preview/app-x86-preview-signed.apk mihon-x86-r${{ env.COMMIT_COUNT }}.apk sha=`sha256sum mihon-x86-r${{ env.COMMIT_COUNT }}.apk | awk '{ print $1 }'` echo "APK_X86_SHA=$sha" >> $GITHUB_ENV cp app/build/outputs/apk/preview/app-x86_64-preview-signed.apk mihon-x86_64-r${{ env.COMMIT_COUNT }}.apk sha=`sha256sum mihon-x86_64-r${{ env.COMMIT_COUNT }}.apk | awk '{ print $1 }'` echo "APK_X86_64_SHA=$sha" >> $GITHUB_ENV - name: Create release uses: softprops/action-gh-release@c95fe1489396fe8a9eb87c0abf8aa5b2ef267fda # v2.2.1 with: tag_name: r${{ env.COMMIT_COUNT }} name: Mihon Preview r${{ env.COMMIT_COUNT }} body: | ### Commits https://github.com/mihonapp/mihon/compare/${{ env.PREV_RELEASE_SHA }}...${{ env.CURRENT_SHA }} ${{ env.COMMIT_LOGS }} --- ### Checksums | Variant | SHA-256 | | ------- | ------- | | Universal | ${{ env.APK_UNIVERSAL_SHA }} | arm64-v8a | ${{ env.APK_ARM64_V8A_SHA }} | armeabi-v7a | ${{ env.APK_ARMEABI_V7A_SHA }} | x86 | ${{ env.APK_X86_SHA }} | | x86_64 | ${{ env.APK_X86_64_SHA }} | ## If you are unsure which apk to download then go with mihon-r${{ env.COMMIT_COUNT }}.apk files: | mihon-r${{ env.COMMIT_COUNT }}.apk mihon-arm64-v8a-r${{ env.COMMIT_COUNT }}.apk mihon-armeabi-v7a-r${{ env.COMMIT_COUNT }}.apk mihon-x86-r${{ env.COMMIT_COUNT }}.apk mihon-x86_64-r${{ env.COMMIT_COUNT }}.apk draft: ${{ github.event.inputs.dry-run != '' }} prerelease: false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Prune old releases uses: dev-drprasad/delete-older-releases@dfbe6be2a006e9475dfcbe5b8d201f1824c2a9fe # v0.3.4 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: keep_latest: 28 delete_tags: true - name: Update website run: | curl -L \ -X POST \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer ${{ secrets.MIHON_BOT_TOKEN }}" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/repos/mihonapp/website/dispatches \ -d '{"event_type":"app_release"}'