alaskartv-app/.github/workflows/build.yml

234 lines
8.9 KiB
YAML
Raw Normal View History

2024-12-16 00:18:55 +00:00
name: Build Latest
2024-12-15 02:31:56 +00:00
on:
2024-12-16 12:50:14 +00:00
workflow_dispatch:
2024-12-16 01:10:43 +00:00
push:
2025-01-05 22:55:54 +00:00
branches:
- main
2024-12-16 01:10:43 +00:00
paths:
2024-12-19 03:15:19 +00:00
- release.txt
- version.txt
2024-12-15 02:31:56 +00:00
jobs:
2024-12-16 00:54:21 +00:00
AlaskarTV:
2025-01-04 03:59:08 +00:00
runs-on: docker
2025-01-04 20:48:24 +00:00
container: ghcr.io/catthehacker/ubuntu:full-latest
2024-12-15 02:31:56 +00:00
steps:
2024-12-15 03:01:19 +00:00
- name: Checkout Repository
uses: actions/checkout@v4
2024-12-15 02:31:56 +00:00
- name: Download Latest Release
run: |
2024-12-15 02:35:57 +00:00
curl -s https://api.github.com/repos/jellyfin/jellyfin-androidtv/releases/latest \
2024-12-15 02:31:56 +00:00
| 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
2025-01-05 21:53:14 +00:00
APPLICATION_ID=$(grep '^APPLICATION_ID=' version.txt | awk -F 'APPLICATION_ID=' '{print $2}')
2025-01-05 22:02:38 +00:00
VERSION_NAME=$(grep '^VERSION_NAME=' version.txt | awk -F 'VERSION_NAME=v' '{print $2}')
2025-01-05 21:53:14 +00:00
VERSION_CODE=$(grep '^VERSION_CODE=' version.txt | awk -F 'VERSION_CODE=' '{print $2}')
2024-12-15 02:31:56 +00:00
# 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
- name: Replace Assets
run: |
2024-12-15 04:41:11 +00:00
rm -r app-release/app/src/main/res/mipmap-*
2024-12-15 02:57:45 +00:00
cp -r res/* app-release/app/src/main/res
2024-12-15 02:31:56 +00:00
2024-12-16 14:22:01 +00:00
- 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
2024-12-15 02:31:56 +00:00
- name: Update strings.xml
run: |
2024-12-15 02:57:45 +00:00
sed -i 's/Jellyfin/AlaskarTV/g' app-release/app/src/main/res/values/strings.xml
2024-12-15 02:31:56 +00:00
- name: Update build.gradle.kts
env:
APPLICATION_ID: ${{ env.APPLICATION_ID }}
VERSION_NAME: ${{ env.VERSION_NAME }}
VERSION_CODE: ${{ env.VERSION_CODE }}
run: |
2024-12-15 15:45:40 +00:00
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
2024-12-15 02:57:45 +00:00
sed -i "s/versionCode = .*/versionCode = $VERSION_CODE/" app-release/app/build.gradle.kts
2025-01-05 22:02:38 +00:00
sed -i "s/setProperty(\"archivesBaseName\", \".*\")/setProperty(\"archivesBaseName\", \"alaskartv-androidtv-v$VERSION_NAME\")/" app-release/app/build.gradle.kts
2024-12-15 02:31:56 +00:00
- name: Update about.kt
run: |
2024-12-15 22:08:30 +00:00
sed -i '
s/title = "Jellyfin app version"/title = "AlaskarTV app version"/
2025-01-07 11:46:35 +00:00
s/content = "jellyfin-androidtv .*/content = "alaskartv-androidtv v${BuildConfig.VERSION_NAME} ${BuildConfig.BUILD_TYPE}"/
2024-12-15 22:08:30 +00:00
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
2024-12-15 03:54:32 +00:00
2024-12-15 15:16:29 +00:00
- 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
2024-12-15 03:54:32 +00:00
2024-12-15 15:16:29 +00:00
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
2024-12-15 03:54:32 +00:00
2024-12-15 23:35:46 +00:00
- 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: Parse release.txt
id: parse_release
run: |
VERSION_RELEASE=$(cat release.txt)
echo "VERSION_RELEASE=$VERSION_RELEASE" >> $GITHUB_ENV
2025-01-06 14:37:21 +00:00
- name: Push Source Code
env:
2025-01-06 15:34:06 +00:00
FORGEJO_TOKEN: ${{ secrets.FORGEJO_TOKEN }}
VERSION_NAME: ${{ env.VERSION_NAME }}
VERSION_RELEASE: ${{ env.VERSION_RELEASE }}
2025-01-06 14:37:21 +00:00
run: |
cd app-release
rm -rf .git .github CODEOWNERS CONTRIBUTORS.md README.md
git init
git config --global user.email "no-reply@askar.tv"
git config --global user.name "AlaskarTV-Bot"
2025-01-06 15:34:06 +00:00
git remote add origin https://${FORGEJO_TOKEN}:@git.askar.tv/nomad/alaskartv-source.git
2025-01-06 14:37:21 +00:00
git add .
git commit -m "Bumped to v${VERSION_NAME} : Release ${VERSION_RELEASE}"
2025-01-06 14:37:21 +00:00
git branch -M main
git push origin main --force
2024-12-15 02:31:56 +00:00
- name: Set up Java
2025-01-04 04:04:48 +00:00
uses: https://github.com/actions/setup-java@v4
2024-12-15 02:31:56 +00:00
with:
2024-12-15 14:17:17 +00:00
distribution: temurin
2024-12-15 14:46:10 +00:00
java-version: 21
2024-12-15 04:26:12 +00:00
- name: Cache Gradle dependencies
uses: actions/cache@v3
with:
path: ~/.gradle/caches
2024-12-15 21:03:44 +00:00
key: ${{ runner.os }}-gradle-21release-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
2024-12-15 04:26:12 +00:00
restore-keys: |
2024-12-15 21:03:44 +00:00
${{ runner.os }}-gradle-21release-
2024-12-15 02:31:56 +00:00
- name: Build APK
run: |
cd app-release
2024-12-15 21:03:44 +00:00
./gradlew assembleRelease
2024-12-15 02:31:56 +00:00
2024-12-16 00:18:55 +00:00
- name: Build AAB
run: |
cd app-release
./gradlew bundleRelease
2024-12-15 02:31:56 +00:00
2024-12-16 00:18:55 +00:00
- name: Sign APK
2025-01-04 04:08:53 +00:00
uses: https://github.com/ilharp/sign-android-release@v1
2024-12-16 00:18:55 +00:00
id: sign_apk
2024-12-15 22:39:04 +00:00
with:
2024-12-15 23:35:46 +00:00
releaseDir: app-release/app/build/outputs/apk/release
2024-12-15 23:24:31 +00:00
signingKey: ${{ secrets.KEYSTORE_FILE }}
keyAlias: ${{ secrets.KEYSTORE_ALIAS }}
2024-12-15 22:39:04 +00:00
keyStorePassword: ${{ secrets.KEYSTORE_PASSWORD }}
2024-12-15 23:24:31 +00:00
buildToolsVersion: 35.0.0
2024-12-15 05:01:07 +00:00
2024-12-16 00:18:55 +00:00
- name: Sign AAB
2025-01-04 04:08:00 +00:00
uses: https://github.com/ilharp/sign-android-release@v1
2024-12-16 00:18:55 +00:00
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
2024-12-15 21:03:44 +00:00
- name: Upload Signed APK
2025-01-04 12:58:03 +00:00
uses: actions/upload-artifact@v3
2024-12-15 02:31:56 +00:00
with:
2024-12-15 21:03:44 +00:00
name: signed-apk
2024-12-16 00:18:55 +00:00
path: ${{ steps.sign_apk.outputs.signedFiles }}
- name: Upload Signed AAB
2025-01-04 12:58:03 +00:00
uses: actions/upload-artifact@v3
2024-12-16 00:18:55 +00:00
with:
name: signed-aab
path: ${{ steps.sign_aab.outputs.signedFiles }}
2024-12-15 21:03:44 +00:00
2024-12-16 01:45:10 +00:00
- name: Upload Debug Symbols
2025-01-04 12:58:03 +00:00
uses: actions/upload-artifact@v3
2024-12-16 01:45:10 +00:00
with:
name: debug-symbols
2024-12-16 04:06:24 +00:00
path: app-release/app/build/intermediates/merged_native_libs/release/mergeReleaseNativeLibs/out/lib/*
2024-12-16 01:56:06 +00:00
2025-01-05 14:11:04 +00:00
- name: Check Debug Symbols Path
run: ls -la app-release/app/build/intermediates/merged_native_libs/release/mergeReleaseNativeLibs/out/lib/
2025-01-05 14:03:57 +00:00
- name: Prepare Release Assets
run: |
mkdir -p ./release-assets
2025-01-04 20:28:00 +00:00
2025-01-05 23:39:58 +00:00
mv ${{ steps.sign_apk.outputs.signedFiles }} ./release-assets/AlaskarTV-v${{ env.VERSION_NAME }}-signed.apk
mv ${{ steps.sign_aab.outputs.signedFiles }} ./release-assets/AlaskarTV-v${{ env.VERSION_NAME }}-signed.aab
2025-01-05 14:18:46 +00:00
zip -r ./release-assets/debug-symbols.zip app-release/app/build/intermediates/merged_native_libs/release/mergeReleaseNativeLibs/out/lib/*/
2025-01-05 14:03:57 +00:00
env:
VERSION_NAME: ${{ env.VERSION_NAME }}
VERSION_CODE: ${{ env.VERSION_CODE }}
2025-01-05 22:07:07 +00:00
2025-01-05 22:16:40 +00:00
- name: Fetch Release Notes
id: fetch-release-notes
2025-01-05 22:07:07 +00:00
run: |
2025-01-05 22:33:00 +00:00
TAG=$(cat release.txt)
echo "Fetching release notes for tag: $TAG"
RELEASE_NOTES=$(curl -s "https://api.github.com/repos/jellyfin/jellyfin-androidtv/releases/tags/$TAG" | jq -r '.body')
2025-01-05 22:07:07 +00:00
2025-01-05 22:33:00 +00:00
if [ -z "$RELEASE_NOTES" ] || [ "$RELEASE_NOTES" == "null" ]; then
echo "Error: Release notes not found for tag $TAG."
exit 1
fi
2025-01-05 22:16:40 +00:00
2025-01-05 23:04:24 +00:00
echo "# ️️️⬆️ Upstream Release Notes\n\n$RELEASE_NOTES" > release-notes.md
2025-01-05 14:03:57 +00:00
- name: Create Release and Upload Assets
2025-01-05 14:05:18 +00:00
uses: actions/forgejo-release@v2
2025-01-05 14:03:57 +00:00
with:
url: https://git.askar.tv
token: ${{ secrets.FORGEJO_TOKEN }}
2025-01-05 23:39:58 +00:00
tag: "v${{ env.VERSION_NAME }}"
2025-01-05 21:43:02 +00:00
title: "AlaskarTV-v${{ env.VERSION_NAME }}-${{ env.VERSION_CODE }}"
2025-01-05 22:41:22 +00:00
release-notes: "$(cat release-notes.md)"
2025-01-05 14:03:57 +00:00
release-dir: ./release-assets
direction: upload
env:
FORGEJO_TOKEN: ${{ secrets.FORGEJO_TOKEN }}
VERSION_NAME: ${{ env.VERSION_NAME }}
VERSION_CODE: ${{ env.VERSION_CODE }}
2025-01-07 13:22:16 +00:00
- name: Notify
uses: https://github.com/appleboy/telegram-action@master
with:
to: ${{ secrets.TELEGRAM_ID }}
token: ${{ secrets.TELEGRAM_BOT }}
message: |
${{ github.actor }}:
Commit message: ${{ github.event.commits[0].message }}
AlaskarTV Built Successfully
See changes: https://git.askar.tv/nomad/alaskartv-app/releases/tag/v${{ env.VERSION_NAME }}
[Publish to GooglePlay](http://192.168.0.200:9090/api/publish)
2025-01-07 13:26:22 +00:00
env:
VERSION_NAME: ${{ env.VERSION_NAME }}