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/*