Build & Release #651
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build & Release | |
env: | |
DOCKER_BUILDKIT: 1 | |
COMPOSE_DOCKER_CLI_BUILD: 1 | |
HAVE_TELEGRAM_API_ID: ${{ secrets.TELEGRAM_API_ID != '' }} | |
on: | |
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: false | |
JOIN_NOTIFY: | |
type: boolean | |
description: "Notify with JOIN API when the build is complete." | |
required: false | |
default: true | |
PRE_RELEASE: | |
description: "Release as a pre-release" | |
required: false | |
type: boolean | |
default: false | |
CACHE_RELEASES: | |
description: "Persist older releases to not delete them on the run." | |
required: false | |
type: boolean | |
default: true | |
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 }} | |
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://raw.githubusercontent.com/${{ github.repository }}/check-updates/changelog.md" > changelog.md | |
- name: Delete Older Releases | |
uses: nikhilbadyal/[email protected] | |
if: ${{ inputs.CACHE_RELEASES == false }} | |
with: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
RELEASE_PATTERN: ".*" | |
- name: Upload Build Artifact | |
uses: ncipollo/release-action@main | |
with: | |
artifacts: "*-output.apk" | |
token: ${{ secrets.GITHUB_TOKEN }} | |
tag: Build-${{ steps.get-date.outputs.date }} | |
bodyFile: changelog.md | |
artifactErrorsFailBuild: true | |
prerelease: ${{ inputs.PRE_RELEASE }} | |
- 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 }} | |
join-notify: | |
name: Join Notification | |
if: inputs.JOIN_NOTIFY | |
needs: [upload-to-github] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v2 | |
- name: Send Join Notification | |
env: | |
JOIN_API_KEY: ${{ secrets.JOIN_API_KEY }} | |
JOIN_DEVICE_ID: ${{ secrets.JOIN_DEVICE_ID }} | |
run: | | |
curl -X POST \ | |
-H "Content-Type: application/json" \ | |
-d '{ | |
"deviceId": "'${JOIN_DEVICE_ID}'", | |
"title": "IMXEren/RVX-Builds", | |
"text": "🚀 New Release Alert: Built ReVanced Apps has just been released on GitHub. Happy coding! 💻", | |
"icon": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", | |
"smallicon": "https://i.imgur.com/Elnh5VF.png", | |
"url": "https://www.github.com/imxeren/rvx-builds/releases/latest", | |
"dismissOnTouch": "true" | |
}' \ | |
"https://joinjoaomgcd.appspot.com/_ah/api/messaging/v1/sendPush?apikey=${JOIN_API_KEY}" |