From b8aa545dcc157b97203499dd6b0b31c3e1703b35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Mion?= Date: Fri, 20 Dec 2024 14:19:42 +0000 Subject: [PATCH] update sdk sizes --- .github/workflows/sdk-size-checks.yml | 22 +++--- .github/workflows/update-sdk-sizes.yml | 98 ++++++++++++++++++++++++++ README.md | 9 +++ 3 files changed, 118 insertions(+), 11 deletions(-) create mode 100644 .github/workflows/update-sdk-sizes.yml diff --git a/.github/workflows/sdk-size-checks.yml b/.github/workflows/sdk-size-checks.yml index 37acae78b94..778093c6962 100644 --- a/.github/workflows/sdk-size-checks.yml +++ b/.github/workflows/sdk-size-checks.yml @@ -4,7 +4,7 @@ on: pull_request: env: - SDKS: "stream-chat-android-client stream-chat-android-offline stream-chat-android-ui-components stream-chat-android-compose" + MODULES: "stream-chat-android-client stream-chat-android-offline stream-chat-android-ui-components stream-chat-android-compose" MAX_TOLERANCE: 500 FINE_TOLERANCE: 250 @@ -20,6 +20,13 @@ jobs: with: key-prefix: gradle-build + - name: Assemble SDKs + run: | + for module in $MODULES; do + modules+=" :$module:assembleDebug" + done + ./gradlew $modules + - name: Get develop SDK sizes run: | # Reads the develop SDK sizes from JSON file @@ -28,22 +35,15 @@ jobs: DEVELOP_SDK_SIZES=$(jq -c .debug stream-chat-android.json) echo "DEVELOP_SDK_SIZES=$DEVELOP_SDK_SIZES" >> $GITHUB_ENV - - name: Assemble SDKs - run: | - for sdk in $SDKS; do - modules+=" :$sdk:assembleDebug" - done - ./gradlew $modules - - name: Calculate PR branch SDK sizes run: | echo '{}' > pr_sdk_sizes.json # Calculate sizes from the .aar files and save them into a temporary JSON file # so it can be exported for the next job step - for sdk in $SDKS; do - size=$(du -k $sdk/build/outputs/aar/*.aar | awk '{print $1}') - jq -c --arg sdk "$sdk" --arg size "$size" '. + {($sdk): ($size | tonumber)}' pr_sdk_sizes.json > temp.json && mv temp.json pr_sdk_sizes.json + for module in $MODULES; do + size=$(du -k $module/build/outputs/aar/*.aar | awk '{print $1}') + jq -c --arg sdk "$module" --arg size "$size" '. + {($sdk): ($size | tonumber)}' pr_sdk_sizes.json > temp.json && mv temp.json pr_sdk_sizes.json done echo "PR_SDK_SIZES=$(cat pr_sdk_sizes.json)" >> $GITHUB_ENV diff --git a/.github/workflows/update-sdk-sizes.yml b/.github/workflows/update-sdk-sizes.yml new file mode 100644 index 00000000000..f554de0a17b --- /dev/null +++ b/.github/workflows/update-sdk-sizes.yml @@ -0,0 +1,98 @@ +name: Update SDK sizes + +on: + pull_request: + + workflow_dispatch: + +env: + MODULES: "stream-chat-android-client stream-chat-android-offline stream-chat-android-ui-components stream-chat-android-compose" + VARIANTS: "debug release" + BRANCH_NAME: ${{ github.head_ref || github.ref_name }} + +jobs: + update-sdk-sizes: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + - uses: ./.github/actions/setup-java + - uses: ./.github/actions/gradle-cache + with: + key-prefix: gradle-build + + - name: Assemble SDKs + run: | + for module in $MODULES; do + modules+=" :$module:assemble" + done + ./gradlew $modules + + - name: Update SDK sizes + run: | + echo '{}' > stream-chat-android.json + + # Calculate sizes + for module in $MODULES; do + for variant in $VARIANTS; do + file="$module/build/outputs/aar/$module-$variant.aar" + + # Ensure file exists + if [ -f "$file" ]; then + size=$(du -k "$file" | awk '{print $1}') + else + echo "Warning: $file not found. Setting size to 0." + size=0 + fi + + # Update JSON + jq --arg module "$module" --arg variant "$variant" --argjson size "$size" \ + '."$variant"[$module] = $size' stream-chat-android.json > temp.json && mv temp.json stream-chat-android.json + done + done + + - name: Validate Generated JSON + run: jq . stream-chat-android.json + + - name: Commit and Push JSON + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + git fetch origin + git checkout $BRANCH_NAME + + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + + # Add and commit updated JSON file + git add stream-chat-android.json + + if git diff-index --quiet HEAD --; then + echo "No changes to commit" + else + git commit -m "Update SDK sizes JSON" + git push origin HEAD:$BRANCH_NAME + fi + + - name: Update size badges + run: | + # Update README.md + + for module in $MODULES; do + size=$(jq --arg module "$module" '.release.[$module]' stream-chat-android.json) + badgeUrl="https://img.shields.io/badge/${module//-/--}-$size%20KB-lightgreen" + sed -i "s|!\[${module}\]\(.*\)|![${module}](${badgeUrl})|" README.md + done + + - name: Commit and Push README + run: | + # Add and commit updated README file + git add README.md + + if git diff-index --quiet HEAD --; then + echo "No changes to commit" + else + git commit -m "Update SDK size badges" + git push origin HEAD:$BRANCH_NAME + fi diff --git a/README.md b/README.md index 88ee120d48e..8445daaa185 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,15 @@

+
+ +![stream-chat-android-client](https://img.shields.io/badge/stream--chat--android--client-0%20KB-lightgreen) +![stream-chat-android-offline](https://img.shields.io/badge/stream--chat--android--offline-0%20KB-lightgreen) +![stream-chat-android-ui-components](https://img.shields.io/badge/stream--chat--android--ui-components-0%20KB-lightgreen) +![stream-chat-android-compose](https://img.shields.io/badge/stream--chat--android--compose-0%20KB-lightgreen) + +
+ This is the official Android SDK for [Stream Chat](https://getstream.io/chat/sdk/android/), a service for building chat and messaging applications. This library includes both a low-level chat SDK and a set of reusable UI components. Most users start with the UI components, and fall back to the lower level API when they want to customize things. We're proud to say that we're the first Android Chat SDK that supports Jetpack Compose! We [released](https://github.com/GetStream/stream-chat-android/releases/tag/4.15.0) our Compose UI Components one day after the official Jetpack Compose 1.0 release and our team members have been working hard on it since then.