diff --git a/.github/workflows/app-publish.yaml b/.github/workflows/app-publish.yaml index 983b74058..51ee3bd0b 100644 --- a/.github/workflows/app-publish.yaml +++ b/.github/workflows/app-publish.yaml @@ -13,53 +13,45 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - name: Setup Java uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 with: distribution: temurin java-version-file: .tools-versions + - name: Setup Gradle uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2 + - name: Set JELLYFIN_VERSION run: echo "JELLYFIN_VERSION=$(echo ${GITHUB_REF#refs/tags/v} | tr / -)" >> $GITHUB_ENV + + - name: Decode keystore + run: echo "${{ secrets.KEYSTORE }}" | base64 --decode > keystore.jks + - name: Assemble release files + env: + KEYSTORE_FILE: ${{ github.workspace }}/keystore.jks + KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} + SIGNING_KEY_ALIAS: ${{ secrets.KEY_ALIAS }} + SIGNING_KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} run: ./gradlew assemble bundleRelease versionTxt - - name: Sign APK - id: signApk - uses: r0adkll/sign-android-release@349ebdef58775b1e0d8099458af0816dc79b6407 # tag=v1 - env: - BUILD_TOOLS_VERSION: "34.0.0" - with: - releaseDirectory: app/build/outputs/apk/release - signingKeyBase64: ${{ secrets.KEYSTORE }} - keyStorePassword: ${{ secrets.KEYSTORE_PASSWORD }} - alias: ${{ secrets.KEY_ALIAS }} - keyPassword: ${{ secrets.KEY_PASSWORD }} - - name: Sign app bundle - id: signAab - uses: r0adkll/sign-android-release@349ebdef58775b1e0d8099458af0816dc79b6407 # tag=v1 - env: - BUILD_TOOLS_VERSION: "34.0.0" - with: - releaseDirectory: app/build/outputs/bundle/release - signingKeyBase64: ${{ secrets.KEYSTORE }} - keyStorePassword: ${{ secrets.KEYSTORE_PASSWORD }} - alias: ${{ secrets.KEY_ALIAS }} - keyPassword: ${{ secrets.KEY_PASSWORD }} + - name: Prepare release archive run: | mkdir -p build/jellyfin-publish - mv app/build/outputs/apk/*/jellyfin-androidtv-*-debug.apk build/jellyfin-publish/ - mv app/build/outputs/apk/*/jellyfin-androidtv-*-release-unsigned.apk build/jellyfin-publish/ - mv ${{ steps.signApk.outputs.signedReleaseFile }} build/jellyfin-publish/jellyfin-androidtv-v${{ env.JELLYFIN_VERSION }}-release.apk - mv ${{ steps.signAab.outputs.signedReleaseFile }} build/jellyfin-publish/jellyfin-androidtv-v${{ env.JELLYFIN_VERSION }}-release.aab + mv app/build/outputs/apk/debug/jellyfin-androidtv-*-debug.apk build/jellyfin-publish/ + mv app/build/outputs/apk/release/jellyfin-androidtv-*-release.apk build/jellyfin-publish/ + mv app/build/outputs/bundle/release/jellyfin-androidtv-*-release.aab build/jellyfin-publish/ mv app/build/version.txt build/jellyfin-publish/ + - name: Upload release archive to GitHub release uses: alexellis/upload-assets@13926a61cdb2cb35f5fdef1c06b8b591523236d3 # 0.4.1 env: GITHUB_TOKEN: ${{ secrets.JF_BOT_TOKEN }} with: asset_paths: '["build/jellyfin-publish/*"]' + - name: Upload release archive to repo.jellyfin.org uses: burnett01/rsync-deployments@0dc935cdecc5f5e571865e60d2a6cdc673704823 # tag=5.2 with: @@ -69,6 +61,7 @@ jobs: remote_host: ${{ secrets.REPO_HOST }} remote_user: ${{ secrets.REPO_USER }} remote_key: ${{ secrets.REPO_KEY }} + - name: Update repo.jellyfin.org symlinks uses: appleboy/ssh-action@0ff4204d59e8e51228ff73bce53f80d53301dee2 # v1.2.5 with: diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 890efd749..bc7331dbb 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -30,6 +30,22 @@ android { isCoreLibraryDesugaringEnabled = true } + signingConfigs { + val keystoreFile = getProperty("keystore.file") + val keystorePassword = getProperty("keystore.password") + val signingKeyAlias = getProperty("signing.key.alias") + val signingKeyPassword = getProperty("signing.key.password") + + if (keystoreFile != null && keystorePassword != null && signingKeyAlias != null && signingKeyPassword != null) { + create("release") { + storeFile = file(keystoreFile) + storePassword = keystorePassword + keyAlias = signingKeyAlias + keyPassword = signingKeyPassword + } + } + } + buildTypes { release { proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") @@ -43,6 +59,8 @@ android { resValue("string", "app_name", "@string/app_name_release") buildConfigField("boolean", "DEVELOPMENT", "false") + + signingConfig = signingConfigs.findByName("release") } debug {