You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ytdl-android/.github/workflows/android.yml

225 lines
8.3 KiB
YAML

name: Android CI
env:
# The name of the main module repository
main_project_module: app
permissions:
contents: write # for deleting/creating a pre-release
on:
push:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: set up JDK 17
uses: actions/setup-java@v4
with:
java-version: 17
distribution: 'corretto'
cache: 'gradle'
- name: Create base64 jks file
run: echo "${{ secrets.BASE_64_SIGNING_KEY }}" > app/release_keystore.txt
- name: Create jks file
run: base64 -d "app/release_keystore.txt" > app/release_keystore.jks
- name: Create Blank Local Properties FIle
run: touch local.properties
- name: Create Keystore Properties File
run: echo "${{ secrets.LOCAL_PROPERTIES }}" > keystore.properties
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Set current date as env variable
run: echo "date_today=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
# Create APK Debug
- name: Build apk debug project (APK)
run: ./gradlew assembleDebug
# Create APK Release
- name: Build apk release project (APK)
run: ./gradlew assemble
# Upload Artifact Build
# Noted For Output [main_project_module]/build/outputs/apk/debug/
- name: Find Debug arm64
run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/debug/ -type f -name '*arm64*.apk')" >> $GITHUB_ENV
- name: Upload APK Debug arm64
uses: actions/upload-artifact@v4
with:
name: ytdlnis-autogenerated-arm64-v8a-debug
path: ${{ env.APK_PATH }}
- name: Find Debug armeabiv7
run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/debug/ -type f -name '*armeabi*.apk')" >> $GITHUB_ENV
- name: Upload APK Debug armeabiv7
uses: actions/upload-artifact@v4
with:
name: ytdlnis-autogenerated-armeabi-v7a-debug
path: ${{ env.APK_PATH }}
- name: Find Debug universal
run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/debug/ -type f -name '*universal*.apk')" >> $GITHUB_ENV
- name: Upload APK Debug universal
uses: actions/upload-artifact@v4
with:
name: ytdlnis-autogenerated-universal-debug
path: ${{ env.APK_PATH }}
- name: Find Debug x86
run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/debug/ -type f -name '*x86-*.apk')" >> $GITHUB_ENV
- name: Upload APK Debug x86
uses: actions/upload-artifact@v4
with:
name: ytdlnis-autogenerated-x86-debug
path: ${{ env.APK_PATH }}
- name: Find Debug x86_64
run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/debug/ -type f -name '*x86_64*.apk')" >> $GITHUB_ENV
- name: Upload APK Debug x86_64
uses: actions/upload-artifact@v4
with:
name: ytdlnis-autogenerated-x86_64-debug
path: ${{ env.APK_PATH }}
# Noted For Output [main_project_module]/build/outputs/apk/release/
- name: Find Release arm64
run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/release/ -type f -name '*arm64*.apk')" >> $GITHUB_ENV
- name: Upload APK Release arm64
uses: actions/upload-artifact@v4
with:
name: ytdlnis-autogenerated-arm64-v8a-release
path: ${{ env.APK_PATH }}
- name: Find Release armeabiv7
run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/release/ -type f -name '*armeabi*.apk')" >> $GITHUB_ENV
- name: Upload APK Release armeabiv7
uses: actions/upload-artifact@v4
with:
name: ytdlnis-autogenerated-armeabi-v7a-release
path: ${{ env.APK_PATH }}
- name: Find Release universal
run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/release/ -type f -name '*universal*.apk')" >> $GITHUB_ENV
- name: Upload APK Release universal
uses: actions/upload-artifact@v4
with:
name: ytdlnis-autogenerated-universal-release
path: ${{ env.APK_PATH }}
- name: Find Release x86
run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/release/ -type f -name '*x86-*.apk')" >> $GITHUB_ENV
- name: Upload APK Release x86
uses: actions/upload-artifact@v4
with:
name: ytdlnis-autogenerated-x86-release
path: ${{ env.APK_PATH }}
- name: Find Release x86_64
run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/release/ -type f -name '*x86_64*.apk')" >> $GITHUB_ENV
- name: Upload APK Release x86_64
uses: actions/upload-artifact@v4
with:
name: ytdlnis-autogenerated-x86_64-release
path: ${{ env.APK_PATH }}
# Noted For Output [main_project_module]/build/outputs/apk/debug/
- name: Upload APK Debug
uses: actions/upload-artifact@v4
with:
name: YTDLnis APK debug generated
path: ${{ env.main_project_module }}/build/outputs/apk/debug/
# Noted For Output [main_project_module]/build/outputs/apk/release/
- name: Upload APK Release
uses: actions/upload-artifact@v4
with:
name: YTDLnis APK release generated
path: ${{ env.main_project_module }}/build/outputs/apk/release/
# Send Message To Telegram
- name: send telegram message on push or pull
continue-on-error: true
uses: appleboy/telegram-action@master
with:
to: ${{ secrets.TELEGRAM_TO }}
token: ${{ secrets.TELEGRAM_TOKEN }}
message: |
${{ github.actor }} created commit:
Commit message: ${{ github.event.commits[0].message }}
Repository: ${{ github.repository }}
See changes: https://github.com/${{ github.repository }}/commit/${{github.sha}}
# # Start Creating Pre-Release
# - name: Start Pre-Release
# uses: actions/checkout@v4
# with:
# persist-credentials: false
# # returns null if no pre-release exists
# - name: Get Commit SHA of Latest Pre-release
# run: |
# # Install Required Packages
# sudo apt-get updated
# sudo apt-get install -y curl jq
# echo "COMMIT_SHA_TAG=$(jq -r 'map(select(.prerelease)) | first | .tag_name' <<< $(curl -s https://api.github.com/repos/deniscerri/ytdlnis/releases))" >> $GITHUB_ENV
#
# - run: gh release delete ${{ env.COMMIT_SHA_TAG }} --cleanup-tag
# if: (env.COMMIT_SHA_TAG != 'null' && contains('Auto-Release', env.COMMIT_SHA_TAG))
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
#
# # Make sure that an old ci that still runs on main doesn't recreate a prerelease
# - name: Check Pullable Commits
# id: check_commits
# run: |
# git fetch
# CHANGES=$(git rev-list HEAD..origin/main --count)
# echo "CHANGES=$CHANGES" >> $GITHUB_ENV
#
# - name: Get Release Name
# id: get_last_release_tag
# run: |
# LASTRELEASE=$(curl "https://api.github.com/repos/deniscerri/ytdlnis/releases/latest")
# ISPRERELEASE=$(echo $LASTRELEASE | jq -r '.prerelease')
# NEWRELEASENAME=$(echo $LASTRELEASE | jq -r '.name')
# if ! $ISPRERELEASE; then NEWRELEASENAME=$(echo $NEWRELEASENAME'.1'); else NEWRELEASENAME=$(echo $NEWRELEASENAME | sed -E 's/(.*\.)([0-9]+)$/echo "\1$((\2 + 1))"/e'); fi
# echo "NEWRELEASENAME=$NEWRELEASENAME" >> $GITHUB_ENV
#
# - name: Get last commit SHA
# id: last_commit
# run: echo "COMMIT_SHA=$(git rev-parse HEAD | cut -c 1-8)" >> $GITHUB_ENV
#
# - name: Get commmit date
# id: commit_date
# run: echo "COMMIT_DATE=$(git show -s --date=format:'%Y%m%d' --format=%cd HEAD)" >> $GITHUB_ENV
#
#
# # Create a new pre-release, the other upload_binaries.yml will upload the binaries
# # to this pre-release.
# - name: Create Prerelease
# if: github.ref.name == 'main' && env.CHANGES == '0'
# uses: softprops/action-gh-release@4634c16e79c963813287e889244c50009e7f0981
# with:
# name: ${{ env.NEWRELEASENAME }} [Auto-Release] [${{ env.COMMIT_DATE }}-${{ env.COMMIT_SHA }}]
# tag_name: v${{ env.NEWRELEASENAME }}-beta
# body: ${{ github.event.commits[0].message }}
# prerelease: true
# files: |
# ${{ env.main_project_module }}/build/outputs/apk/release/*
# ${{ env.main_project_module }}/build/outputs/apk/debug/*