diff --git a/.github/scripts/upload.py b/.github/scripts/upload.py new file mode 100644 index 0000000..ebea6d0 --- /dev/null +++ b/.github/scripts/upload.py @@ -0,0 +1,52 @@ +import json +import os +import requests + +apiAddress = "http://127.0.0.1:8081/" +urlPrefix = apiAddress + "bot" + os.getenv("TELEGRAM_TOKEN") + + +def findString(sourceStr, targetStr): + if str(sourceStr).find(str(targetStr)) == -1: + return False + else: + return True + + +def genFileDirectory(path): + files_walk = os.walk(path) + target = { + } + for root, dirs, file_name_dic in files_walk: + for fileName in file_name_dic: + if findString(fileName, "v8a"): + target["arm64"] = (fileName, open(path + "/" + fileName, "rb")) + if findString(fileName, "v7a"): + target["armeabi"] = (fileName, open(path + "/" + fileName, "rb")) + if findString(fileName, "x86.apk"): + target["i386"] = (fileName, open(path + "/" + fileName, "rb")) + if findString(fileName, "x86_64"): + target["amd64"] = (fileName, open(path + "/" + fileName, "rb")) + + return target + + +def sendDocument(user_id, path, message = "", entities = None): + files = {'document': open(path, 'rb')} + data = {'chat_id': user_id, + 'caption': message, + 'parse_mode': 'Markdown', + 'caption_entities': entities} + response = requests.post(urlPrefix + "/sendDocument", files=files, data=data) + print(response.json()) + + +def sendAPKs(path): + apks = os.listdir("apks") + apks.sort() + apk = os.path.join("apks", apks[0]) + sendDocument(user_id="@maaryIsTyping", path = apk, message="#app #apk #wallpaperTunnel https://github.com/Steve-Mr/WallpaperTunnel") + +if __name__ == '__main__': + sendAPKs("./apks") + diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..d9e3c9d --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,202 @@ +name: Android CI + +on: + pull_request: + branches: [ "master" ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + cache: gradle + + - name: Storing key.properties + run: | + echo "${{ secrets.KEY_PROPERTIES }}" | base64 --decode > ./key.properties + ls ./ + ls -l key.properties + + - name: Storing keystore + run: | + echo "${{ secrets.KEYSTORE }}" | base64 --decode > ./app/key.keystore + ls ./app + ls -l ./app/key.keystore + + - name: Storing keystore + run: | + echo "${{ secrets.KEYSTORE }}" | base64 --decode > ./key.keystore + ls -l ./key.keystore + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + - name: Build with Gradle + run: | + ./gradlew :app:assembleRelease + + echo "APK_FILE=$(find app/build/outputs/apk -name '*arm64*.apk')" >> $GITHUB_ENV + echo "APK_FILE_ARMV7=$(find app/build/outputs/apk -name '*v7a*.apk')" >> $GITHUB_ENV + echo "APK_FILE_X86=$(find app/build/outputs/apk -name '*x86\-*.apk')" >> $GITHUB_ENV + echo "APK_FILE_X64=$(find app/build/outputs/apk -name '*x86\_64*.apk')" >> $GITHUB_ENV + + - uses: actions/upload-artifact@v4 + name: Upload apk (arm64-v8a) + with: + name: app-arm64-v8a-release + path: ${{ env.APK_FILE }} + - uses: actions/upload-artifact@v4 + name: Upload apk (armeabi-v7a) + with: + name: app-armeabi-v7a-release + path: ${{ env.APK_FILE_ARMV7 }} + - uses: actions/upload-artifact@v4 + name: Upload apk (x86_64) + with: + name: app-x86_64-release + path: ${{ env.APK_FILE_X64 }} + - uses: actions/upload-artifact@v4 + name: Upload apk (x86) + with: + name: app-x86-release + path: ${{ env.APK_FILE_X86 }} + + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + with: + tag_name: v${{ github.run_number }} + prerelease: true + release_name: Release v${{ github.run_number }} + body: | + ## Changes + ${{ github.event.pull_request.body }} + ${{ steps.show_pr_commits.outputs.commits }} + + - uses: actions/upload-release-asset@v1 + name: Upload apk (arm64-v8a) + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_name: Oblivionis-arm64-v8a.apk + asset_path: ${{ env.APK_FILE }} + asset_content_type: application/zip + + - uses: actions/upload-release-asset@v1 + name: Upload apk (armeabi-v7a) + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_name: Oblivionis-armeabi-v7a.apk + asset_path: ${{ env.APK_FILE_ARMV7 }} + asset_content_type: application/zip + + - uses: actions/upload-release-asset@v1 + name: Upload apk (x86_64) + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_name: Oblivionis-x86_64.apk + asset_path: ${{ env.APK_FILE_X64 }} + asset_content_type: application/zip + + - uses: actions/upload-release-asset@v1 + name: Upload apk (x86) + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_name: Oblivionis-x86.apk + asset_path: ${{ env.APK_FILE_X86 }} + asset_content_type: application/zip + + + upload: + name: Upload Release + runs-on: ubuntu-latest + needs: + - build + - telegram-bot-api + steps: + - name: Download Artifacts + uses: actions/download-artifact@v4 + with: + path: artifacts + - name: Download Telegram Bot API Binary + uses: actions/download-artifact@master + with: + name: telegram-bot-api-binary + path: . + + - name: find apk + run: | + mkdir apks + find artifacts -name "*.apk" -exec cp {} apks \; + echo "APK_FILE_UPLOAD=$(find apks -name '*arm64*.apk')" >> $GITHUB_ENV + ls ./apks + + - name: Get Apk Info + id: apk + uses: JantHsueh/get-apk-info-action@master + with: + apkPath: ${{ env.APK_FILE_UPLOAD }} + + - name: Release + run: | + chmod +x telegram-bot-api-binary + ./telegram-bot-api-binary --api-id=21724 --api-hash=3e0cb5efcd52300aec5994fdfc5bdc16 --local 2>&1 > /dev/null & + curl https://raw.githubusercontent.com/Steve-Mr/Oblivionis/dev/.github/scripts/upload.py -o uploadCI.py + python uploadCI.py > upload.txt + cat upload.txt + env: + TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }} + VERSION_CODE: ${{steps.apk.outputs.versionCode}} + VERSION_NAME: ${{steps.apk.outputs.versionNum}} + COMMIT_MESSAGE: ${{ github.event.head_commit.message }} + + telegram-bot-api: + name: Telegram Bot API + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Clone Telegram Bot API + run: | + git clone --recursive https://github.com/tdlib/telegram-bot-api.git + git status telegram-bot-api >> telegram-bot-api-status + - name: Cache Bot API Binary + id: cache-bot-api + uses: actions/cache@v4 + with: + path: telegram-bot-api-binary + key: CI-telegram-bot-api-${{ hashFiles('telegram-bot-api-status') }} + - name: Compile Telegram Bot API + if: steps.cache-bot-api.outputs.cache-hit != 'true' + run: | + sudo apt-get update + sudo apt-get install make git zlib1g-dev libssl-dev gperf cmake g++ + cd telegram-bot-api + rm -rf build + mkdir build + cd build + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=.. .. + cmake --build . --target install -j$(nproc) + cd ../.. + ls -l telegram-bot-api/bin/telegram-bot-api* + cp telegram-bot-api/bin/telegram-bot-api telegram-bot-api-binary + - name: Upload Binary + uses: actions/upload-artifact@master + with: + name: telegram-bot-api-binary + path: telegram-bot-api-binary diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..7643783 --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,123 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..79ee123 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/other.xml b/.idea/other.xml new file mode 100644 index 0000000..94c96f6 --- /dev/null +++ b/.idea/other.xml @@ -0,0 +1,318 @@ + + + + + + \ No newline at end of file