From e37d97c7c78f70e65c1ae4fde3024efbf8bb5cea Mon Sep 17 00:00:00 2001 From: Ylarod Date: Wed, 11 Jan 2023 22:47:31 +0800 Subject: [PATCH] ci: push to telegram (#43) * ci: push to telegram * support topic * check BOT_TOKEN in build-su * update script --- .github/workflows/build-kernel-5.10.yml | 31 +++++++++-- .github/workflows/build-kernel-5.15.yml | 19 ++++++- .github/workflows/build-su.yml | 15 ++++++ scripts/ksubot.py | 71 +++++++++++++++++++++++++ 4 files changed, 131 insertions(+), 5 deletions(-) create mode 100644 scripts/ksubot.py diff --git a/.github/workflows/build-kernel-5.10.yml b/.github/workflows/build-kernel-5.10.yml index db788c63..d188e5d3 100644 --- a/.github/workflows/build-kernel-5.10.yml +++ b/.github/workflows/build-kernel-5.10.yml @@ -82,22 +82,45 @@ jobs: uses: actions/upload-artifact@v3 with: name: kernel-aarch64-${{ matrix.version }}-Image.gz - path: android-kernel/out/*/dist/Image.gz + path: android-kernel/out/android12-5.10/dist/Image.gz - name: Upload boot.img uses: actions/upload-artifact@v3 with: name: kernel-aarch64-${{ matrix.version }}-boot.img - path: android-kernel/out/*/dist/boot.img + path: android-kernel/out/android12-5.10/dist/boot.img - name: Upload boot-lz4.img uses: actions/upload-artifact@v3 with: name: kernel-aarch64-${{ matrix.version }}-boot-lz4.img - path: android-kernel/out/*/dist/boot-lz4.img + path: android-kernel/out/android12-5.10/dist/boot-lz4.img - name: Upload boot-gz.img uses: actions/upload-artifact@v3 with: name: kernel-aarch64-${{ matrix.version }}-boot-gz.img - path: android-kernel/out/*/dist/boot-gz.img \ No newline at end of file + path: android-kernel/out/android12-5.10/dist/boot-gz.img + + - name: Upload to telegram + env: + CHAT_ID: ${{ secrets.CHAT_ID }} + CACHE_CHAT_ID: ${{ secrets.CACHE_CHAT_ID }} + BOT_TOKEN: ${{ secrets.BOT_TOKEN }} + MESSAGE_THREAD_ID: ${{ secrets.MESSAGE_THREAD_ID }} + COMMIT_MESSAGE: ${{ github.event.head_commit.message }} + COMMIT_URL: ${{ github.event.head_commit.url }} + run: | + if [ ! -z "${{ secrets.BOT_TOKEN }}" ]; then + OUTDIR=android-kernel/out/android12-5.10/dist + IMAGE_GZ=kernel-aarch64-${{ matrix.version }}-Image.gz + BOOT=kernel-aarch64-${{ matrix.version }}-boot.img.zip + BOOT_LZ4=kernel-aarch64-${{ matrix.version }}-boot-lz4.img.zip + BOOT_GZ=kernel-aarch64-${{ matrix.version }}-boot-gz.img.zip + mv $OUTDIR/Image.gz $IMAGE_GZ + zip $BOOT -j -r $OUTDIR/boot.img + zip $BOOT_LZ4 -j -r $OUTDIR/boot-gz.img + zip $BOOT_GZ -j -r $OUTDIR/boot-lz4.img + pip3 install python-telegram-bot + python3 $GITHUB_WORKSPACE/KernelSU/scripts/ksubot.py $IMAGE_GZ $BOOT $BOOT_LZ4 $BOOT_GZ + fi \ No newline at end of file diff --git a/.github/workflows/build-kernel-5.15.yml b/.github/workflows/build-kernel-5.15.yml index 7a7113d5..2eefc6b9 100644 --- a/.github/workflows/build-kernel-5.15.yml +++ b/.github/workflows/build-kernel-5.15.yml @@ -54,4 +54,21 @@ jobs: uses: actions/upload-artifact@v3 with: name: kernel-aarch64-${{ matrix.version }}-boot.img - path: android-kernel/out/*/dist/boot.img \ No newline at end of file + path: android-kernel/out/*/dist/boot.img + + - name: Upload to telegram + env: + CHAT_ID: ${{ secrets.CHAT_ID }} + CACHE_CHAT_ID: ${{ secrets.CACHE_CHAT_ID }} + BOT_TOKEN: ${{ secrets.BOT_TOKEN }} + MESSAGE_THREAD_ID: ${{ secrets.MESSAGE_THREAD_ID }} + COMMIT_MESSAGE: ${{ github.event.head_commit.message }} + COMMIT_URL: ${{ github.event.head_commit.url }} + run: | + if [ ! -z "${{ secrets.BOT_TOKEN }}" ]; then + OUTDIR=android-kernel/out/android13-5.15/dist + BOOT=kernel-aarch64-${{ matrix.version }}-boot.img.zip + zip $BOOT -j -r $OUTDIR/boot.img + pip3 install python-telegram-bot + python3 $GITHUB_WORKSPACE/KernelSU/scripts/ksubot.py $BOOT + fi \ No newline at end of file diff --git a/.github/workflows/build-su.yml b/.github/workflows/build-su.yml index e2e375dd..c063989e 100644 --- a/.github/workflows/build-su.yml +++ b/.github/workflows/build-su.yml @@ -27,3 +27,18 @@ jobs: with: name: su path: ./userspace/su/libs + - name: Upload to telegram + env: + CHAT_ID: ${{ secrets.CHAT_ID }} + CACHE_CHAT_ID: ${{ secrets.CACHE_CHAT_ID }} + BOT_TOKEN: ${{ secrets.BOT_TOKEN }} + MESSAGE_THREAD_ID: ${{ secrets.MESSAGE_THREAD_ID }} + COMMIT_MESSAGE: ${{ github.event.head_commit.message }} + COMMIT_URL: ${{ github.event.head_commit.url }} + run: | + if [ ! -z "${{ secrets.BOT_TOKEN }}" ]; then + pip3 install python-telegram-bot + mv ./userspace/su/libs/arm64-v8a/su su-arm64 + mv ./userspace/su/libs/x86_64/su su-x86_64 + python3 scripts/ksubot.py su-arm64 su-x86_64 + fi diff --git a/scripts/ksubot.py b/scripts/ksubot.py new file mode 100644 index 00000000..69116691 --- /dev/null +++ b/scripts/ksubot.py @@ -0,0 +1,71 @@ +import os +import sys +import asyncio +import telegram + + +BOT_TOKEN = os.environ.get("BOT_TOKEN") +CHAT_ID = os.environ.get("CHAT_ID") +CACHE_CHAT_ID = os.environ.get("CACHE_CHAT_ID") +MESSAGE_THREAD_ID = os.environ.get("MESSAGE_THREAD_ID") +COMMIT_URL = os.environ.get("COMMIT_URL") +COMMIT_MESSAGE = os.environ.get("COMMIT_MESSAGE") + + +def get_caption(): + msg = COMMIT_MESSAGE + "\n" + COMMIT_URL + if len(msg) > telegram.constants.MessageLimit.CAPTION_LENGTH: + return COMMIT_URL + return msg + + +def check_environ(): + if BOT_TOKEN is None: + print("[-] Invalid BOT_TOKEN") + exit(1) + if CHAT_ID is None: + print("[-] Invalid CHAT_ID") + exit(1) + if CACHE_CHAT_ID is None: + print("[-] Invalid CACHE_CHAT_ID") + exit(1) + if COMMIT_URL is None: + print("[-] Invalid COMMIT_URL") + exit(1) + if COMMIT_MESSAGE is None: + print("[-] Invalid COMMIT_MESSAGE") + exit(1) + + +async def main(): + print("[+] Uploading to telegram") + check_environ() + print("[+] Files:", sys.argv[1:]) + bot = telegram.Bot(BOT_TOKEN) + files = [] + paths = sys.argv[1:] + caption = get_caption() + print("[+] Caption: ") + print("---") + print(caption) + print("---") + for one in paths: + if not os.path.exists(one): + print("[-] File not exist: " + one) + continue + print("[+] Upload: " + one) + msg = await bot.send_document(CACHE_CHAT_ID, one) + if one == paths[-1]: + files.append(telegram.InputMediaDocument(msg.document, caption=caption)) + else: + files.append(telegram.InputMediaDocument(msg.document)) + await bot.delete_message(CACHE_CHAT_ID, msg.message_id) + print("[+] Sending") + await bot.send_media_group(CHAT_ID, files, message_thread_id=MESSAGE_THREAD_ID) + print("[+] Done!") + + +if __name__ == "__main__": + loops = asyncio.new_event_loop() + loops.run_until_complete(asyncio.wait([main()])) +