Skip to content

Build & Release

Build & Release #1

Workflow file for this run

name: Build & Release
env:
DOCKER_BUILDKIT: 1
COMPOSE_DOCKER_CLI_BUILD: 1
HAVE_TELEGRAM_API_ID: ${{ secrets.TELEGRAM_API_ID != '' }}
on:
workflow_call:
inputs:
GITHUB_UPLOAD:
description: "Upload to GitHub"
required: false
type: boolean
default: true
TELEGRAM_NO_ROOT_UPLOAD:
description: "Upload Non Rooted APKs to Telegram"
required: false
type: boolean
default: false
TELEGRAM_ROOT_UPLOAD:
description: "Upload Magisk Module from nikhilbadyal/revanced-magisk-module to Telegram"
required: false
type: boolean
default: false
APPRISE_NOTIFY:
description: "Use Apprise to Notify"
required: false
type: boolean
default: false
VIRUSTOTAL_SCAN:
description: "Scan apks with VirusTotal"
required: false
type: boolean
default: false
CLEANUP:
description: "Clear GitHub(Useful if Telegram upload is enabled)"
required: false
type: boolean
default: false
COMMIT_CHANGELOG:
description: "Update Changelog"
type: boolean
required: false
default: true
DEBUG_ENABLED:
type: boolean
description: 'Run the build with tmate debugging enabled.'
required: false
default: false
PREFERRED_PATCH_APPS:
description: "Apps to be patched. Overrides any env set"
required: false
type: string
workflow_dispatch:
inputs:
GITHUB_UPLOAD:
description: "Upload to GitHub"
required: false
type: boolean
default: true
TELEGRAM_NO_ROOT_UPLOAD:
description: "Upload Non Rooted APKs to Telegram"
required: false
type: boolean
default: false
TELEGRAM_ROOT_UPLOAD:
description: "Upload Magisk Module from nikhilbadyal/revanced-magisk-module to Telegram"
required: false
type: boolean
default: false
APPRISE_NOTIFY:
description: "Use Apprise to Notify"
required: false
type: boolean
default: false
VIRUSTOTAL_SCAN:
description: "Scan apks with VirusTotal"
required: false
type: boolean
default: false
CLEANUP:
description: "Clear GitHub(Useful if Telegram upload is enabled)"
required: false
type: boolean
default: false
COMMIT_CHANGELOG:
description: "Update Changelog"
type: boolean
required: false
default: true
DEBUG_ENABLED:
type: boolean
description: 'Run the build with tmate debugging enabled.'
required: false
default: false
PREFERRED_PATCH_APPS:
description: "Apps to be patched. Overrides any env set"
required: false
type: string
concurrency:
group: ${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
build-apk:
uses: ./.github/workflows/build-artifact.yml
with:
COMMIT_CHANGELOG: ${{ inputs.COMMIT_CHANGELOG }}
DEBUG_ENABLED: ${{ inputs.DEBUG_ENABLED }}
PREFERRED_PATCH_APPS: ${{ inputs.PREFERRED_PATCH_APPS }}
secrets:
ENVS: ${{ secrets.ENVS }}
REDDIT_CLIENT_ID: ${{ secrets.REDDIT_CLIENT_ID }}
upload-to-github:
name: GitHub Upload
runs-on: ubuntu-latest
timeout-minutes: 30
needs: build-apk
if: inputs.GITHUB_UPLOAD
steps:
- name: Download Already Built APKs
uses: actions/download-artifact@main
with:
name: Built-APKs
- name: Get Date
id: get-date
run: |
echo "date=$(TZ='Asia/Kolkata' date +"%Y.%m.%d-%H.%M.%S")" >> $GITHUB_OUTPUT
curl https://github.com/nikhilbadyal/docker-py-revanced/blob/changelogs/changelog.md > changelog.md
- name: Delete Older Releases
uses: nikhilbadyal/[email protected]
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RELEASE_PATTERN: "Build*"
- name: Upload Build Artifact
uses: ncipollo/release-action@main
with:
artifacts: "*-output.apk"
token: ${{ secrets.GITHUB_TOKEN }}
tag: Build-${{ steps.get-date.outputs.date }}
artifactErrorsFailBuild: true
- name: Sleep for 10 seconds
run: |
sleep 10
virustotal-scan:
needs: [ upload-to-github ]
uses: nikhilbadyal/ghactions/.github/workflows/virustotal-scan.yml@main
with:
FILES: |
.apk$
request_rate: 4
if: inputs.VIRUSTOTAL_SCAN
secrets:
VT_API_KEY: ${{ secrets.VT_API_KEY }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
upload-to-telegram:
needs: [ upload-to-github ]
uses: nikhilbadyal/ghactions/.github/workflows/telegram-uploader.yml@main
if: inputs.TELEGRAM_NO_ROOT_UPLOAD
secrets:
TELEGRAM_API_ID: ${{ secrets.TELEGRAM_API_ID }}
TELEGRAM_API_HASH: ${{ secrets.TELEGRAM_API_HASH }}
TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
TELEGRAM_STICKER_ID: ${{ secrets.TELEGRAM_STICKER_ID }}
MESSAGE: ${{ secrets.MESSAGE_NON_ROOT }}
upload-to-telegram-root:
needs: [ upload-to-telegram ]
uses: nikhilbadyal/ghactions/.github/workflows/telegram-uploader.yml@main
if: inputs.TELEGRAM_ROOT_UPLOAD
secrets:
TELEGRAM_API_ID: ${{ secrets.TELEGRAM_API_ID }}
TELEGRAM_API_HASH: ${{ secrets.TELEGRAM_API_HASH }}
TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
DOWNLOAD_GITHUB_REPOSITORY: ${{ secrets.ROOT_DOWNLOAD_GITHUB_REPOSITORY }}
MESSAGE: ${{ secrets.MESSAGE_ROOT }}
apprise-notifier:
needs: build-apk
name: Apprise Notifier
runs-on: ubuntu-latest
timeout-minutes: 30
if: inputs.APPRISE_NOTIFY
steps:
- name: Download Already Built APKs
uses: actions/download-artifact@main
with:
name: Built-APKs
- name: Find all built apks
id: ff
run: |
apk_list=""
for filename in $(find . -name "*-output.apk" -type f); do
apk_list="$apk_list,$filename"
done
apk_list=${apk_list:1}
echo "apks=$apk_list" >> "$GITHUB_OUTPUT"
is_present=$([ -n "${{ secrets.APPRISE_URL }}" ] && echo true || echo false );
echo "has_apprise_url=$is_present" >> $GITHUB_OUTPUT
- name: Print files
run: echo "${{ steps.ff.outputs.apks }} ${{ steps.ff.outputs.has_apprise_url }}"
- name: Upload to Telegram
uses: nikhilbadyal/ghaction-apprise@main
with:
APPRISE_URL: ${{ secrets.APPRISE_URL }}
APPRISE_NOTIFICATION_BODY: ${{ secrets.APPRISE_NOTIFICATION_BODY }}
APPRISE_NOTIFICATION_TITLE: ${{ secrets.APPRISE_NOTIFICATION_TITLE }}
APPRISE_ATTACHMENTS: ${{ steps.ff.outputs.apks }}
cleanup:
name: GitHub Cleanup
if: inputs.CLEANUP
needs: [ upload-to-telegram ]
uses: ./.github/workflows/github-cleanup.yml
secrets:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}