name: App / Publish on: push: tags: - v* jobs: publish: name: Publish runs-on: ubuntu-24.04 if: ${{ contains(github.repository_owner, 'jellyfin') }} 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@f29f5a9d7b09a7c6b29859002d29d24e1674c884 # v5.0.1 - name: Set JELLYFIN_VERSION run: echo "JELLYFIN_VERSION=$(echo ${GITHUB_REF#refs/tags/v} | tr / -)" >> $GITHUB_ENV - name: Assemble release files 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/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: switches: -vrptz path: build/jellyfin-publish/ remote_path: /srv/incoming/androidtv/v${{ env.JELLYFIN_VERSION }}/ 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: host: ${{ secrets.REPO_HOST }} username: ${{ secrets.REPO_USER }} key: ${{ secrets.REPO_KEY }} envs: JELLYFIN_VERSION script_stop: true script: | if [ -d "/srv/repository/main/client/androidtv/versions/v${{ env.JELLYFIN_VERSION }}" ] && [ -n "${{ env.JELLYFIN_VERSION }}" ]; then sudo rm -r /srv/repository/main/client/androidtv/versions/v${{ env.JELLYFIN_VERSION }} fi sudo mv /srv/incoming/androidtv/v${{ env.JELLYFIN_VERSION }} /srv/repository/main/client/androidtv/versions/v${{ env.JELLYFIN_VERSION }} cd /srv/repository/main/client/androidtv; sudo rm -rf *.apk version.txt; sudo ln -s versions/v${JELLYFIN_VERSION}/jellyfin-androidtv-v${JELLYFIN_VERSION}-*.apk .; sudo ln -s versions/v${JELLYFIN_VERSION}/version.txt .;