Pārlūkot izejas kodu

WIP Add GitHub Action for releasing the auth app (mobile and desktop)

Manav Rathi 1 gadu atpakaļ
vecāks
revīzija
006a3ea60d

+ 123 - 0
.github/workflows/auth-release.yml

@@ -0,0 +1,123 @@
+name: "Release (auth)"
+
+# To test this out, push a tag with a pre-release version. The version number
+# should be the version number of the next actual release.
+#
+# > When major, minor, and patch are equal, a pre-release version has lower
+# > precedence than a normal version:
+# >
+# > Example: 1.0.0-alpha < 1.0.0.
+# >
+# > - https://semver.org
+#
+# So if the next release we intend to put out is 1.2.3, you can:
+#
+#     git tag auth-v1.2.3-test
+#     git push auth-v1.2.3-test
+#
+# We use a suffix like `-test` to indicate that these are test tags, and that
+# they belong to a pre-release.
+#
+# Once the test is done, also delete the tag please.
+
+on:
+    push:
+        # Run when a tag matching the pattern "auth-v*"" is pushed
+        tags:
+            - "auth-v*"
+
+env:
+    FLUTTER_VERSION: "3.16.9"
+
+jobs:
+    build-ubuntu:
+        runs-on: ubuntu-latest
+        defaults:
+            run:
+                working-directory: auth
+        steps:
+            - name: Checkout code and submodules
+              uses: actions/checkout@v4
+              with:
+                  submodules: recursive
+
+            - name: Install Flutter ${{ env.FLUTTER_VERSION  }}
+              uses: subosito/flutter-action@v2
+              with:
+                  channel: "stable"
+                  flutter-version: ${{ env.FLUTTER_VERSION  }}
+                  cache: true
+
+            - run: flutter pub get
+
+            - name: Setup keys
+              uses: timheuer/base64-to-file@v1
+              with:
+                  fileName: "keystore/ente_auth_key.jks"
+                  encodedString: ${{ secrets.SIGNING_KEY }}
+
+            - name: Build Android APK
+              run: |
+                  flutter build apk --release --flavor independent --dart-define=app.flavor=independent
+                  mv build/app/outputs/flutter-apk/app-independent-release.apk build/app/outputs/flutter-apk/ente-auth.apk
+              env:
+                  SIGNING_KEY_PATH: "/home/runner/work/_temp/keystore/ente_auth_key.jks"
+                  SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
+                  SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
+                  SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }}
+
+            - name: Checksum APK
+              run: sha256sum build/app/outputs/flutter-apk/ente-auth.apk > build/app/outputs/flutter-apk/sha256sum
+
+            - name: Build PlayStore AAB
+              run: |
+                  flutter build appbundle --release --flavor playstore --dart-define=app.flavor=playstore
+              env:
+                  SIGNING_KEY_PATH: "/home/runner/work/_temp/keystore/ente_auth_key.jks"
+                  SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
+                  SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
+                  SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }}
+
+            - name: Install dependencies for desktop build
+              run: |
+                  sudo apt-get update -y
+                  sudo apt-get install -y libsecret-1-dev libsodium-dev libwebkit2gtk-4.0-dev libfuse2 ninja-build libgtk-3-dev dpkg-dev pkg-config rpm libsqlite3-dev locate
+
+            - name: Install appimagetool
+              run: |
+                  wget -O appimagetool "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage"
+                  chmod +x appimagetool
+                  mv appimagetool /usr/local/bin/
+
+            - name: Build desktop app
+              # Temporarily disable desktop builds
+              if: false
+              env:
+                  LIBSODIUM_USE_PKGCONFIG: 1
+              run: |
+                  flutter config --enable-linux-desktop
+                  dart pub global activate flutter_distributor
+                  flutter_distributor package --platform=linux --targets=deb --skip-clean
+                  flutter_distributor package --platform=linux --targets=rpm --skip-clean
+                  flutter_distributor package --platform=linux --targets=appimage --skip-clean
+                  mv dist/**/*-*-linux.deb ente-${{ github.event.release.tag_name }}-x86_64.deb
+                  mv dist/**/*-*-linux.rpm ente-${{ github.event.release.tag_name }}-x86_64.rpm
+                  mv dist/**/*-*-linux.AppImage ente-${{ github.event.release.tag_name }}-x86_64.AppImage
+
+            - name: Create a draft GitHub release
+              uses: ncipollo/release-action@v1
+              with:
+                  artifacts: "build/app/outputs/flutter-apk/*,ente-${{ github.event.release.tag_name }}"
+                  prerelease: true
+                  draft: true
+                  updateOnlyUnreleased: true
+
+            - name: Upload AAB to PlayStore
+              # Temporarily disable GP upload
+              if: false
+              uses: r0adkll/upload-google-play@v1
+              with:
+                  serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
+                  packageName: io.ente.auth
+                  releaseFiles: build/app/outputs/bundle/playstoreRelease/app-playstore-release.aab
+                  track: internal

+ 0 - 86
auth/.github/workflows/ci.yml

@@ -1,86 +0,0 @@
-name: release
-
-# This workflow is triggered on pushes to the repository.
-on:
-    workflow_dispatch:
-        # Enable manual run
-    push:
-        # Sequence of patterns matched against refs/tags
-        tags:
-            - "v*" # Push events to matching v*, i.e. v4.2.0
-
-jobs:
-    build:
-        # This job will run on ubuntu virtual machine
-        runs-on: ubuntu-latest
-        steps:
-            # Setup Java environment in order to build the Android app.
-            - uses: actions/checkout@v2
-            - uses: actions/setup-java@v2
-              with:
-                  distribution: "adopt"
-                  java-version: "11"
-
-            # Setup the flutter environment.
-            - uses: subosito/flutter-action@v2
-              with:
-                  channel: "stable"
-                  flutter-version: "3.13.4"
-
-            # Fetch sub modules
-            - run: git submodule update --init --recursive
-
-            # Get flutter dependencies.
-            - run: flutter pub get
-
-            - name: Setup keys
-              uses: timheuer/base64-to-file@v1
-              with:
-                  fileName: "keystore/ente_auth_key.jks"
-                  encodedString: ${{ secrets.SIGNING_KEY }}
-
-            # Build independent apk.
-            - name: Build
-              run: flutter build apk --release --flavor independent --dart-define=app.flavor=independent && mv build/app/outputs/flutter-apk/app-independent-release.apk build/app/outputs/flutter-apk/ente-auth.apk
-              env:
-                  SIGNING_KEY_PATH: "/home/runner/work/_temp/keystore/ente_auth_key.jks"
-                  SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
-                  SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
-                  SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }}
-
-            # Build Play store aab.
-            - name: Build
-              run: flutter build appbundle --release --flavor playstore --dart-define=app.flavor=playstore
-              env:
-                  SIGNING_KEY_PATH: "/home/runner/work/_temp/keystore/ente_auth_key.jks"
-                  SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
-                  SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
-                  SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }}
-
-            - name: Checksum
-              run: sha256sum build/app/outputs/flutter-apk/ente-auth.apk > build/app/outputs/flutter-apk/sha256sum
-
-            # Upload generated apk to the artifacts.
-            - uses: actions/upload-artifact@v2
-              with:
-                  name: release-apk
-                  path: build/app/outputs/flutter-apk/ente-auth.apk
-
-            - uses: actions/upload-artifact@v2
-              with:
-                  name: release-checksum
-                  path: build/app/outputs/flutter-apk/sha256sum
-
-            # Create a Github release
-            - uses: ncipollo/release-action@v1
-              with:
-                  artifacts: "build/app/outputs/flutter-apk/ente-auth.apk,build/app/outputs/flutter-apk/sha256sum"
-                  token: ${{ secrets.GITHUB_TOKEN }}
-
-            # Upload to Play store
-            - uses: ente-io/upload-google-play@v1
-              with:
-                  serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
-                  packageName: io.ente.auth
-                  releaseFiles: build/app/outputs/bundle/playstoreRelease/app-playstore-release.aab
-                  track: internal

+ 0 - 12
auth/.github/workflows/desktop.yml

@@ -1,12 +0,0 @@
-name: desktop build
-
-on:
-  workflow_dispatch:
-
-jobs:
-  build-linux:
-    name: Linux
-    runs-on: ubuntu-20.04
-
-    steps:
-      - uses: actions/checkout@v2