name: Build Latest on: workflow_dispatch: push: paths: - release.txt - version.txt jobs: AlaskarTV: runs-on: docker container: ghcr.io/catthehacker/ubuntu:full-latest steps: - name: Checkout Repository uses: actions/checkout@v4 - name: Download Latest Release run: | curl -s https://api.github.com/repos/jellyfin/jellyfin-androidtv/releases/latest \ | jq -r '.tarball_url' \ | xargs curl -L -o latest-release.tar.gz - name: Extract Release Tarball run: | mkdir -p app-release tar -xzf latest-release.tar.gz --strip-components=1 -C app-release - name: Parse version.txt id: parse_version run: | # Read values from version.txt APPLICATION_ID=$(grep '^APPLICATION_ID=' version.txt | cut -d '=' -f 2) VERSION_NAME=$(grep '^VERSION_NAME=' version.txt | cut -d '=' -f 2) VERSION_CODE=$(grep '^VERSION_CODE=' version.txt | cut -d '=' -f 2) TAG=$(cat release.txt) # Read the tag from release.txt RELEASE_NOTES=$(curl -s "https://api.github.com/repos/jellyfin/jellyfin-androidtv/releases/tags/$TAG" | jq -r '.body') # Export values as environment variables echo "APPLICATION_ID=$APPLICATION_ID" >> $GITHUB_ENV echo "VERSION_NAME=$VERSION_NAME" >> $GITHUB_ENV echo "VERSION_CODE=$VERSION_CODE" >> $GITHUB_ENV echo "RELEASE_NOTES=$RELEASE_NOTES" >> $GITHUB_ENV - name: Replace Assets run: | rm -r app-release/app/src/main/res/mipmap-* cp -r res/* app-release/app/src/main/res - name: Update AndroidManifest.xml banner run: | sed -i 's/android:banner="@mipmap\/app_banner"/android:banner="@drawable\/app_banner"/' app-release/app/src/main/AndroidManifest.xml - name: Update strings.xml run: | sed -i 's/Jellyfin/AlaskarTV/g' app-release/app/src/main/res/values/strings.xml - name: Update build.gradle.kts env: APPLICATION_ID: ${{ env.APPLICATION_ID }} VERSION_NAME: ${{ env.VERSION_NAME }} VERSION_CODE: ${{ env.VERSION_CODE }} run: | sed -i 's/applicationId = namespace/applicationId = "'"$APPLICATION_ID"'"/' app-release/app/build.gradle.kts sed -i 's/versionName = .*/versionName = "'"$VERSION_NAME"'"/' app-release/app/build.gradle.kts sed -i "s/versionCode = .*/versionCode = $VERSION_CODE/" app-release/app/build.gradle.kts sed -i "s/setProperty(\"archivesBaseName\", \".*\")/setProperty(\"archivesBaseName\", \"alaskartv-androidtv-v$VERSION_NAME\")/" app-release/app/build.gradle.kts - name: Update about.kt run: | sed -i ' s/title = "Jellyfin app version"/title = "AlaskarTV app version"/ s/content = "jellyfin-androidtv .*/content = "alaskartv-androidtv ${BuildConfig.VERSION_NAME} ${BuildConfig.BUILD_TYPE}"/ s/icon = R.drawable.ic_jellyfin/icon = R.drawable.app_icon_foreground_monochrome/ ' app-release/app/src/main/java/org/jellyfin/androidtv/ui/preference/category/about.kt - name: Update UserPreferences.kt run: | sed -i 's/booleanPreference("trick_play_enabled", false)/booleanPreference("trick_play_enabled", true)/' \ app-release/app/src/main/java/org/jellyfin/androidtv/preference/UserPreferences.kt sed -i 's/enumPreference("app_theme", AppTheme.DARK)/enumPreference("app_theme", AppTheme.MUTED_PURPLE)/' \ app-release/app/src/main/java/org/jellyfin/androidtv/preference/UserPreferences.kt - name: Update SelectServerFragment.kt run: | sed -i 's/jellyfin-androidtv/alaskartv-androidtv/' \ app-release/app/src/main/java/org/jellyfin/androidtv/ui/startup/fragment/SelectServerFragment.kt # - name: Push Source Code # env: # GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} # run: | # cd app-release # rm -rf .git .github CODEOWNERS CONTRIBUTORS.md README.md # git init # git config --global user.email "binaskar@gmail.com" # git config --global user.name "nomadics9" # git remote add origin https://x-access-token:${GITHUB_TOKEN}@github.com/nomadics9/alaskartv.git # git add . # git commit -m "Update" # git branch -M main # git push origin main --force - name: Set up Java uses: https://github.com/actions/setup-java@v4 with: distribution: temurin java-version: 21 - name: Cache Gradle dependencies uses: actions/cache@v3 with: path: ~/.gradle/caches key: ${{ runner.os }}-gradle-21release-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} restore-keys: | ${{ runner.os }}-gradle-21release- - name: Build APK run: | cd app-release ./gradlew assembleRelease - name: Build AAB run: | cd app-release ./gradlew bundleRelease - name: Sign APK uses: https://github.com/ilharp/sign-android-release@v1 id: sign_apk with: releaseDir: app-release/app/build/outputs/apk/release signingKey: ${{ secrets.KEYSTORE_FILE }} keyAlias: ${{ secrets.KEYSTORE_ALIAS }} keyStorePassword: ${{ secrets.KEYSTORE_PASSWORD }} buildToolsVersion: 35.0.0 - name: Sign AAB uses: https://github.com/ilharp/sign-android-release@v1 id: sign_aab with: releaseDir: app-release/app/build/outputs/bundle/release signingKey: ${{ secrets.KEYSTORE_FILE }} keyAlias: ${{ secrets.KEYSTORE_ALIAS }} keyStorePassword: ${{ secrets.KEYSTORE_PASSWORD }} buildToolsVersion: 35.0.0 - name: Upload Signed APK uses: actions/upload-artifact@v3 with: name: signed-apk path: ${{ steps.sign_apk.outputs.signedFiles }} - name: Upload Signed AAB uses: actions/upload-artifact@v3 with: name: signed-aab path: ${{ steps.sign_aab.outputs.signedFiles }} - name: Upload Debug Symbols uses: actions/upload-artifact@v3 with: name: debug-symbols path: app-release/app/build/intermediates/merged_native_libs/release/mergeReleaseNativeLibs/out/lib/* - name: Check Debug Symbols Path run: ls -la app-release/app/build/intermediates/merged_native_libs/release/mergeReleaseNativeLibs/out/lib/ - name: Prepare Release Assets run: | mkdir -p ./release-assets mv ${{ steps.sign_apk.outputs.signedFiles }} ./release-assets/AlaskarTV-${{ env.VERSION_NAME }}-signed.apk mv ${{ steps.sign_aab.outputs.signedFiles }} ./release-assets/AlaskarTV-${{ env.VERSION_NAME }}-signed.aab zip -r ./release-assets/debug-symbols.zip app-release/app/build/intermediates/merged_native_libs/release/mergeReleaseNativeLibs/out/lib/*/ env: VERSION_NAME: ${{ env.VERSION_NAME }} VERSION_CODE: ${{ env.VERSION_CODE }} - name: Create Release and Upload Assets uses: actions/forgejo-release@v2 with: url: https://git.askar.tv token: ${{ secrets.FORGEJO_TOKEN }} tag: "${{ env.VERSION_NAME }}" title: "AlaskarTV-${{ env.VERSION_NAME }}-${{ env.VERSION_CODE }}" release-notes: ${{ env.RELEASE_NOTES }} release-dir: ./release-assets direction: upload env: FORGEJO_TOKEN: ${{ secrets.FORGEJO_TOKEN }} VERSION_NAME: ${{ env.VERSION_NAME }} VERSION_CODE: ${{ env.VERSION_CODE }} RELEASE_NOTES: ${{ env.RELEASE_NOTES }}