From 187a60ec3ac5243938b068dc4ffd6afe2605f85a Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Mon, 11 Aug 2025 16:32:01 +0530 Subject: [PATCH] Add daily release workflow for photos --- .github/workflows/mobile-daily-internal.yml | 118 ++++++++++++++++++++ mobile/apps/photos/scripts/changes.txt | 1 + 2 files changed, 119 insertions(+) create mode 100644 .github/workflows/mobile-daily-internal.yml create mode 100644 mobile/apps/photos/scripts/changes.txt diff --git a/.github/workflows/mobile-daily-internal.yml b/.github/workflows/mobile-daily-internal.yml new file mode 100644 index 0000000000..7002bea278 --- /dev/null +++ b/.github/workflows/mobile-daily-internal.yml @@ -0,0 +1,118 @@ +name: "Internal release (photos)" + +on: + schedule: + # Runs daily at 12:30 UTC (6:00 PM IST) + - cron: "30 12 * * *" + workflow_dispatch: # Allow manual trigger + +env: + FLUTTER_VERSION: "3.24.3" + +permissions: + contents: read + +jobs: + build: + runs-on: ubuntu-latest + + defaults: + run: + working-directory: mobile/apps/photos + + steps: + - name: Checkout code and submodules + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Setup JDK 17 + uses: actions/setup-java@v1 + with: + java-version: 17 + + - name: Install Flutter ${{ env.FLUTTER_VERSION }} + uses: subosito/flutter-action@v2 + with: + channel: "stable" + flutter-version: ${{ env.FLUTTER_VERSION }} + cache: true + + - name: Increment version code for build + run: | + CURRENT_VERSION=$(grep '^version:' pubspec.yaml | sed 's/version: //') + VERSION_NAME=$(echo $CURRENT_VERSION | cut -d'+' -f1) + NEW_BUILD=$(date +%Y%m%d%H%M) + NEW_VERSION="${VERSION_NAME}+${NEW_BUILD}" + + sed -i "s/^version: .*/version: $NEW_VERSION/" pubspec.yaml + echo "Building with version ${NEW_VERSION}" + + - name: Prepare and validate changelog for Play Store + run: | + mkdir -p whatsnew + CHANGELOG_FILE="scripts/changes.txt" + OUTPUT_FILE="whatsnew/en-US.txt" + + # Use provided changelog or fallback + if [ -f "$CHANGELOG_FILE" ]; then + head -c 500 "$CHANGELOG_FILE" > "$OUTPUT_FILE" + else + echo "Bug fixes and improvements" > "$OUTPUT_FILE" + fi + + # Validate: file exists + if [ ! -s "$OUTPUT_FILE" ]; then + echo "❌ Changelog is empty." + exit 1 + fi + + # Validate: <= 500 chars + LENGTH=$(wc -m < "$OUTPUT_FILE") + if [ "$LENGTH" -gt 500 ]; then + echo "❌ Changelog exceeds 500 characters ($LENGTH)." + exit 1 + fi + + # Validate: no markdown or HTML + if grep -Eq '[\*\_\<\>\[\]\(\)]' "$OUTPUT_FILE"; then + echo "❌ Changelog contains markdown/HTML formatting." + exit 1 + fi + + echo "✅ Changelog valid:" + cat "$OUTPUT_FILE" + + - name: Setup keys + uses: timheuer/base64-to-file@v1 + with: + fileName: "keystore/ente_photos_key.jks" + encodedString: ${{ secrets.SIGNING_KEY_PHOTOS }} + + - name: Build PlayStore AAB + run: | + flutter build appbundle --dart-define=cronetHttpNoPlay=true --release --flavor playstore + env: + SIGNING_KEY_PATH: "/home/runner/work/_temp/keystore/ente_photos_key.jks" + SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS_PHOTOS }} + SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD_PHOTOS }} + SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD_PHOTOS }} + + - name: Upload AAB to PlayStore + uses: r0adkll/upload-google-play@v1 + with: + serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }} + packageName: io.ente.photos + releaseFiles: mobile/apps/photos/build/app/outputs/bundle/playstoreRelease/app-playstore-release.aab + track: internal + whatsNewDirectory: mobile/apps/photos/whatsnew + mappingFile: mobile/apps/photos/build/app/outputs/mapping/playstoreRelease/mapping.txt + + - name: Notify Discord + uses: sarisia/actions-status-discord@v1 + with: + webhook: ${{ secrets.DISCORD_INTERNAL_RELEASE_WEBHOOK }} + nodetail: true + title: "🏆 Daily release Photos (Branch: ${{ github.ref_name }})" + description: "[Download](https://play.google.com/store/apps/details?id=io.ente.photos) | [Changelog](https://github.com/ente-io/ente/blob/main/mobile/apps/photos/scripts/changes.txt)" + color: 0x00ff00 diff --git a/mobile/apps/photos/scripts/changes.txt b/mobile/apps/photos/scripts/changes.txt new file mode 100644 index 0000000000..965deccd99 --- /dev/null +++ b/mobile/apps/photos/scripts/changes.txt @@ -0,0 +1 @@ +- Gracefully handle heic rendering on Android \ No newline at end of file