89 lines
4.1 KiB
YAML
89 lines
4.1 KiB
YAML
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@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
|
|
- name: Setup Java
|
|
uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73 # v4.4.0
|
|
with:
|
|
distribution: temurin
|
|
java-version: 21
|
|
- name: Setup Gradle
|
|
uses: gradle/actions/setup-gradle@d156388eb19639ec20ade50009f3d199ce1e2808 # v4.1.0
|
|
- 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@25ce8cbbcb08177468c7ff7ec5cbfa236f9341e1 # v1.1.0
|
|
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 .;
|