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

131 lines
4.9 KiB
YAML
Raw Normal View History

2024-12-15 02:31:56 +00:00
name: Build and Customize Android App from Release
on:
workflow_dispatch: # Allows manual triggering of the workflow
jobs:
build-and-customize:
runs-on: ubuntu-latest
steps:
2024-12-15 03:01:19 +00:00
- name: Checkout Repository
uses: actions/checkout@v4
2024-12-15 02:31:56 +00:00
# Step 1: Download the latest release tarball
- 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
# Step 2: Extract the tarball
- name: Extract Release Tarball
run: |
mkdir -p app-release
tar -xzf latest-release.tar.gz --strip-components=1 -C app-release
2024-12-15 02:47:42 +00:00
extracted_dir=$(ls app-release | head -n 1)
mv "app-release/$extracted_dir" app-release/source
2024-12-15 02:31:56 +00:00
# Step 3: Parse version.txt
- 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)
# 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
# Step 4: Replace assets in app/src/main/
- name: Replace Assets
run: |
2024-12-15 03:14:06 +00:00
find app-release/app/src/main/res/mipmap-* -type f -name "app_icon.*" -delete
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
# Step 5: Replace strings in app/src/main/res/values/strings.xml
- 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
# Step 6: Update build.gradle.kts with version info
- 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 02:57:45 +00:00
sed -i "s/applicationId = \".*\"/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
2024-12-15 02:31:56 +00:00
# Step 7: Update about.kt
- name: Update about.kt
run: |
2024-12-15 03:54:32 +00:00
sed -i "s/applicationId = namespace/applicationId = \"$APPLICATION_ID\"/" app-release/app/build.gradle.kts
sed -i "s/versionName = project.getVersionName()/versionName = \"$VERSION_NAME\"/" app-release/app/build.gradle.kts
sed -i "s/versionCode = getVersionCode(versionName!!)/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
echo "Updated build.gradle.kts:"
cat app-release/app/build.gradle.kts
2024-12-15 02:31:56 +00:00
# Step 8: Set up Java and Gradle
- name: Set up Java
2024-12-15 04:18:13 +00:00
uses: actions/setup-java@v4
2024-12-15 02:31:56 +00:00
with:
distribution: temurin
2024-12-15 04:26:12 +00:00
java-version: 21
- name: Cache Gradle dependencies
uses: actions/cache@v3
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
2024-12-15 02:31:56 +00:00
# Step 9: Build the APK
- name: Build APK
run: |
cd app-release
./gradlew assembleRelease
2024-12-15 03:30:37 +00:00
- name: Find APK Files
run: find app-release -name "*.apk"
2024-12-15 02:31:56 +00:00
# Step 10: Upload APK as Artifact
- name: Upload APK as Artifact
uses: actions/upload-artifact@v3
with:
name: unsigned-apk
2024-12-15 03:54:32 +00:00
path: app-release/app/build/outputs/apk/release/alaskartv-androidtv-v${{ env.VERSION_NAME }}-release-unsigned.apk
2024-12-15 02:31:56 +00:00
# # Step 10: Sign the APK
# - name: Sign APK
# env:
# KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
# KEYSTORE_ALIAS: ${{ secrets.KEYSTORE_ALIAS }}
# KEYSTORE_FILE: ${{ secrets.KEYSTORE_FILE }}
# run: |
# jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 \
# -keystore $KEYSTORE_FILE \
# app-release/app/build/outputs/apk/release/app-release-unsigned.apk \
# $KEYSTORE_ALIAS
# # Step 11: (Optional) Upload to Play Store
# - name: Upload to Play Store
# uses: r0adkll/upload-google-play@v1
# with:
# serviceAccountJson: ${{ secrets.PLAY_STORE_SERVICE_ACCOUNT }}
# packageName: ${{ env.APPLICATION_ID }}
# releaseFiles: app-release/app/build/outputs/apk/release/app-release.apk