From 46dd46fe743ead2bc42fb88aa058e63e4b185638 Mon Sep 17 00:00:00 2001 From: greenart7c3 <115044884+greenart7c3@users.noreply.github.com> Date: Fri, 28 Jul 2023 15:16:01 -0300 Subject: [PATCH] created github workflow --- .github/workflows/build.yml | 54 ++++++ .github/workflows/create-release.yml | 173 ++++++++++++++++++ .../nostrsigner/service/relays/JsonFilter.kt | 3 +- .../nostrsigner/service/relays/Relay.kt | 2 +- .../service/relays/Subscription.kt | 31 ---- .../nostrsigner/service/relays/TypedFilter.kt | 1 - 6 files changed, 229 insertions(+), 35 deletions(-) create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/create-release.yml delete mode 100644 app/src/main/java/com/greenart7c3/nostrsigner/service/relays/Subscription.kt diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..e7ef182e --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,54 @@ +name: Test/Build Android + +on: + pull_request: + branches: [main] + push: + branches: [main] + +jobs: + build: + runs-on: ubuntu-latest + timeout-minutes: 30 + + steps: + - uses: actions/checkout@v2 + + - name: Set up JDK 17 + uses: actions/setup-java@v1 + with: + java-version: 17 + + - name: Cache gradle + uses: actions/cache@v1 + with: + path: ~/.gradle/caches + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} + restore-keys: | + ${{ runner.os }}-gradle- + + - name: Linter (gradle) + run: ./gradlew ktlintCheck + + - name: Test (gradle) + run: ./gradlew test --no-daemon + + - name: Android Test Report + uses: asadmansr/android-test-report-action@v1.2.0 + if: ${{ always() }} # IMPORTANT: run Android Test Report regardless + + - name: Build APK (gradle) + run: ./gradlew assembleDebug --no-daemon + + - name: Upload APK + uses: actions/upload-artifact@v2 + with: + name: Debug APK + path: app/build/outputs/apk/debug/app-debug.apk + + - name: Upload Test Results + uses: actions/upload-artifact@v2 + with: + name: Build Reports + path: app/build/reports + diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml new file mode 100644 index 00000000..19eddc9b --- /dev/null +++ b/.github/workflows/create-release.yml @@ -0,0 +1,173 @@ +name: Create Release Assets + +on: + push: + tags: + - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Set up JDK 17 + uses: actions/setup-java@v1 + with: + java-version: 17 + + - name: Cache gradle + uses: actions/cache@v1 + with: + path: ~/.gradle/caches + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} + restore-keys: | + ${{ runner.os }}-gradle- + + - name: Build AAB + run: ./gradlew clean bundleRelease --stacktrace + + - name: Sign AAB (Google Play) + uses: r0adkll/sign-android-release@v1 + with: + releaseDirectory: app/build/outputs/bundle/playRelease + signingKeyBase64: ${{ secrets.SIGNING_KEY }} + alias: ${{ secrets.KEY_ALIAS }} + keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} + keyPassword: ${{ secrets.KEY_PASSWORD }} + + - name: Sign AAB (F-Droid) + uses: r0adkll/sign-android-release@v1 + with: + releaseDirectory: app/build/outputs/bundle/fdroidRelease + signingKeyBase64: ${{ secrets.SIGNING_KEY }} + alias: ${{ secrets.KEY_ALIAS }} + keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} + keyPassword: ${{ secrets.KEY_PASSWORD }} + + - name: Build APK + run: ./gradlew assembleRelease --stacktrace + + - name: Sign APK (Google Play) + uses: r0adkll/sign-android-release@v1 + with: + releaseDirectory: app/build/outputs/apk/play/release + signingKeyBase64: ${{ secrets.SIGNING_KEY }} + alias: ${{ secrets.KEY_ALIAS }} + keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} + keyPassword: ${{ secrets.KEY_PASSWORD }} + + - name: Sign APK (F-Droid) + uses: r0adkll/sign-android-release@v1 + with: + releaseDirectory: app/build/outputs/apk/fdroid/release + signingKeyBase64: ${{ secrets.SIGNING_KEY }} + alias: ${{ secrets.KEY_ALIAS }} + keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} + keyPassword: ${{ secrets.KEY_PASSWORD }} + + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: Release ${{ github.ref }} + draft: false + prerelease: false + + # Google Play APK + - name: Upload Play APK Universal Asset + id: upload-release-asset-play-universal-apk + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: app/build/outputs/apk/play/release/app-play-universal-release-unsigned-signed.apk + asset_name: amber-googleplay-universal-${{ github.ref_name }}.apk + asset_content_type: application/zip + + - name: Upload Play APK x86 Asset + id: upload-release-asset-play-x86-apk + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: app/build/outputs/apk/play/release/app-play-x86-release-unsigned-signed.apk + asset_name: amber-googleplay-x86-${{ github.ref_name }}.apk + asset_content_type: application/zip + + - name: Upload Play APK x86_64 Asset + id: upload-release-asset-play-x86-64-apk + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: app/build/outputs/apk/play/release/app-play-x86_64-release-unsigned-signed.apk + asset_name: amber-googleplay-x86_64-${{ github.ref_name }}.apk + asset_content_type: application/zip + + # F-Droid APK + - name: Upload F-Droid APK Universal Asset + id: upload-release-asset-fdroid-universal-apk + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: app/build/outputs/apk/fdroid/release/app-fdroid-universal-release-unsigned-signed.apk + asset_name: amber-fdroid-universal-${{ github.ref_name }}.apk + asset_content_type: application/zip + + - name: Upload F-Droid APK x86 Asset + id: upload-release-asset-fdroid-x86-apk + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: app/build/outputs/apk/fdroid/release/app-fdroid-x86-release-unsigned-signed.apk + asset_name: amber-fdroid-x86-${{ github.ref_name }}.apk + asset_content_type: application/zip + + - name: Upload F-Droid APK x86_64 Asset + id: upload-release-asset-fdroid-x86-64-apk + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: app/build/outputs/apk/fdroid/release/app-fdroid-x86_64-release-unsigned-signed.apk + asset_name: amber-fdroid-x86_64-${{ github.ref_name }}.apk + asset_content_type: application/zip + + + + # Google Play AAB + - name: Upload Google Play AAB Asset + id: upload-release-asset-play-aab + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: app/build/outputs/bundle/playRelease/app-play-release.aab + asset_name: amber-googleplay-${{ github.ref_name }}.aab + asset_content_type: application/zip + + # FDroid AAB + - name: Upload F-Droid AAB Asset + id: upload-release-asset-fdroid-aab + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: app/build/outputs/bundle/fdroidRelease/app-fdroid-release.aab + asset_name: amber-fdroid-${{ github.ref_name }}.aab + asset_content_type: application/zip \ No newline at end of file diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/service/relays/JsonFilter.kt b/app/src/main/java/com/greenart7c3/nostrsigner/service/relays/JsonFilter.kt index c19a822f..159a1a8c 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/service/relays/JsonFilter.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/service/relays/JsonFilter.kt @@ -1,10 +1,9 @@ -package com.vitorpamplona.amethyst.service.relays +package com.greenart7c3.nostrsigner.service.relays import com.google.gson.Gson import com.google.gson.GsonBuilder import com.google.gson.JsonArray import com.google.gson.JsonObject -import com.greenart7c3.nostrsigner.service.relays.EOSETime class JsonFilter( val ids: List? = null, diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/service/relays/Relay.kt b/app/src/main/java/com/greenart7c3/nostrsigner/service/relays/Relay.kt index 7b2e0c05..2a3812df 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/service/relays/Relay.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/service/relays/Relay.kt @@ -80,7 +80,7 @@ class Relay( try { val request = Request.Builder() - .header("User-Agent", "Amethyst/${BuildConfig.VERSION_NAME}") + .header("User-Agent", "Amber/${BuildConfig.VERSION_NAME}") .url(url.trim()) .build() diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/service/relays/Subscription.kt b/app/src/main/java/com/greenart7c3/nostrsigner/service/relays/Subscription.kt deleted file mode 100644 index a590140e..00000000 --- a/app/src/main/java/com/greenart7c3/nostrsigner/service/relays/Subscription.kt +++ /dev/null @@ -1,31 +0,0 @@ -package com.vitorpamplona.amethyst.service.relays - -import com.google.gson.GsonBuilder -import com.google.gson.JsonArray -import com.google.gson.JsonObject -import com.greenart7c3.nostrsigner.service.relays.TypedFilter -import java.util.UUID - -data class Subscription( - val id: String = UUID.randomUUID().toString().substring(0, 4), - val onEOSE: ((Long, String) -> Unit)? = null -) { - var typedFilters: List? = null // Inactive when null - - fun updateEOSE(time: Long, relay: String) { - onEOSE?.let { it(time, relay) } - } - - fun toJson(): String { - return GsonBuilder().create().toJson(toJsonObject()) - } - - fun toJsonObject(): JsonObject { - val jsonObject = JsonObject() - jsonObject.addProperty("id", id) - typedFilters?.run { - jsonObject.add("typedFilters", JsonArray().apply { typedFilters?.forEach { add(it.toJsonObject()) } }) - } - return jsonObject - } -} diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/service/relays/TypedFilter.kt b/app/src/main/java/com/greenart7c3/nostrsigner/service/relays/TypedFilter.kt index b4151115..fe14f1ca 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/service/relays/TypedFilter.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/service/relays/TypedFilter.kt @@ -3,7 +3,6 @@ package com.greenart7c3.nostrsigner.service.relays import com.google.gson.GsonBuilder import com.google.gson.JsonArray import com.google.gson.JsonObject -import com.vitorpamplona.amethyst.service.relays.JsonFilter class TypedFilter( val types: Set,