From 29b3ab96121e8f090a7bd961a547b4db032ff25b Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 23 Nov 2022 15:07:10 +0100 Subject: [PATCH] Setup nighlty build + GitHub action --- .github/workflows/nightly.yml | 25 ++++++++++++++++ app/build.gradle | 43 +++++++++++++++++++++------ app/signature/nightly.keystore | Bin 0 -> 2217 bytes app/src/nightly/google-services.json | 40 +++++++++++++++++++++++++ gradle.properties | 7 ++++- gradle/libs.versions.toml | 2 ++ plugins/build.gradle.kts | 1 + 7 files changed, 108 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/nightly.yml create mode 100644 app/signature/nightly.keystore create mode 100644 app/src/nightly/google-services.json diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml new file mode 100644 index 0000000000..3d34d74184 --- /dev/null +++ b/.github/workflows/nightly.yml @@ -0,0 +1,25 @@ +name: Build and release nightly APK + +on: + schedule: + # Every nights at 4 + - cron: "0 4 * * *" + +env: + GRADLE_OPTS: -Dorg.gradle.jvmargs="-Xmx3072m -Dfile.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError" -Dkotlin.daemon.jvm.options="-Xmx2560m" -Dkotlin.incremental=false + CI_GRADLE_ARG_PROPERTIES: --stacktrace -PpreDexEnable=false --max-workers 2 --no-daemon + +jobs: + nightly: + name: Build and publish nightly APK to Firebase + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Build and upload Nightly APK + run: | + ./gradlew assembleNightly appDistributionUploadNightly $CI_GRADLE_ARG_PROPERTIES + env: + ELEMENT_ANDROID_NIGHTLY_KEYID: ${{ secrets.ELEMENT_ANDROID_NIGHTLY_KEYID }} + ELEMENT_ANDROID_NIGHTLY_KEYPASSWORD: ${{ secrets.ELEMENT_ANDROID_NIGHTLY_KEYPASSWORD }} + ELEMENT_ANDROID_NIGHTLY_STOREPASSWORD: ${{ secrets.ELEMENT_ANDROID_NIGHTLY_STOREPASSWORD }} + FIREBASE_TOKEN: ${{ secrets.ELEMENT_ANDROID_NIGHTLY_FIREBASE_TOKEN }} diff --git a/app/build.gradle b/app/build.gradle index b62cc43e8a..d2c34c895d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,6 +2,7 @@ plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id 'com.google.devtools.ksp' version '1.7.20-1.0.7' + id 'com.google.firebase.appdistribution' version '3.0.2' } android { @@ -20,6 +21,21 @@ android { } } + signingConfigs { + debug { + keyAlias 'androiddebugkey' + keyPassword 'android' + storeFile file('./signature/debug.keystore') + storePassword 'android' + } + nightly { + keyAlias System.env.ELEMENT_ANDROID_NIGHTLY_KEYID ?: project.property("signing.element.nightly.keyId") + keyPassword System.env.ELEMENT_ANDROID_NIGHTLY_KEYPASSWORD ?: project.property("signing.element.nightly.keyPassword") + storeFile file('./signature/nightly.keystore') + storePassword System.env.ELEMENT_ANDROID_NIGHTLY_STOREPASSWORD ?: project.property("signing.element.nightly.storePassword") + } + } + buildTypes { debug { resValue "string", "app_name", "ElementX dbg" @@ -33,6 +49,24 @@ android { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } + + nightly { + initWith release + applicationIdSuffix ".nightly" + versionNameSuffix "-nightly" + resValue "string", "app_name", "ElementX nightly" + matchingFallbacks = ['release'] + signingConfig signingConfigs.nightly + firebaseAppDistribution { + artifactType = "APK" + // releaseNotesFile = TODO + groups = "external-testers" + // This should not be required, but if I do not add the appId, I get this error: + // "App Distribution halted because it had a problem uploading the APK: [404] Requested entity was not found." + appId = "1:912726360885:android:e17435e0beb0303000427c" + } + } + } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -60,15 +94,6 @@ android { } } } - - signingConfigs { - debug { - keyAlias 'androiddebugkey' - keyPassword 'android' - storeFile file('./signature/debug.keystore') - storePassword 'android' - } - } } dependencies { diff --git a/app/signature/nightly.keystore b/app/signature/nightly.keystore new file mode 100644 index 0000000000000000000000000000000000000000..a0e9ba413be5ac9bb0b30a3088882a17c5aaa3bd GIT binary patch literal 2217 zcmchYX*3iH8^>oem@$~Lz9mLsm@s3@5;As@{hG*bFbK(#vSbu8L%gh&woO@0m-p}uc=fm@Ro)6FYpXdDlhpUIH0001VT)@8z=1+_a zB>DJ;21FjCxZ$b?G5`Pv0856jvAj?i1`31#UvkOKfAL%zCfsf@3k=4}x5b~?zt zS>4={6p7gyxhG_MH3I1zfN#teA(S*?B|lTZoZwGcKpAO{|6-@9w&bn|X7I6X9UW zGgo>k|S7|o`+xSx=*lAdWp;Q=Ux zA15drh_my;U4+SN9d9q4lp33dhOd*Z2-MkY1(9tRT}NpRtom%KN$z0kq@Qx(Qx3jOKDu&89wDBwS>C>K zS}=#~WW1Q_Ua44H(YPiwqf0TU;Nkz2{~b7L{7e91 zDnhYF?ifpSL=LCu7~go8I~nC4>SyT4=ExsBYBF!B5-)stlTsD6Vj4`65+38(wJVmL z5FUZVNEkcR2k7;Spb8PKQ-R&l6{@;9oXMSt0UusGY0oQ}uE}+M#)|pXMMnjd8$kRG zUz2sw_H_aK$51fLx1}JEtjzS5x)IjqO!|34JxKp4)wll0EICK(_LY>TFjd(#FIm|Q zhr#WvD${`dCl1*=%8Wy!6Zi|K|BdGEEl=cw8#)%!(vr*$OKG+qDcr_v zK1@cgFC=1vvH#XNRWx7TR{<1K%5w^!FnuP(Wb@_K0xS7yJc(k?~D86QxgZyXHs zP__BqigJ!iCDVP=fP6;qM&H%+XvXK6VT*QH9`8!?1NfUg*3L>a0@t}%F7LkB=B5Ua zNt-w~w!LLLmCJugKkmK$Gk*&vyG+Aqo8@?yS{M)V`$hAY2h1O z4DKQ&LA36JPa;Ahr;$Mf_ggiziYEzC`cDtfw>FiK52$hxJm2|WJ*Q|k7H{pZKxuQ$ z=!ELXK=<$ZyBn5QgEJ9dq;Ci+l5W3~p_OJLz(r0@^%<43J?e#E$30=rjcgjuGA+wG%m39=L zE*cLdVro=R}*3L|u$9X;XEMI^9w>NSS6jZSq007tp zO9ne)$sl|I7z6}?ARbHu0u}+~mP;^6*g*h+@MFUa#KE!LP_R7&dJ<%0gX24%A2(b) zP@@p{Ku_X7fRhJmLktWg-o%~6BLBMq%q zs^V0zN?5F;2%i#G^;htJzlaQ!{8g0W!~m0le8*7&gn`IFAfV!9WH+`4Z!T?In;Z#G z62JC(0rh*4Mo=sA9p~L^3!Gy*GLO^@LPNtoNXhFx8*6DOH8Ib^Cu{F|ZRTGuQu)^; zYv6KT)8&Q4lQY+8%RK?rA+cxsJ%co&<0tcDMzHj%Cgvs@9@^kSNEVl#Qv-d?CKSt@ zY<7{DYmbTq_LHY)pT4G_yT33Ntk7f^qCviL5!N5JUu-X54*D}qD^5`3eIq}IuXw57 z`cAP2(SwBy;P<25qJ=2)(@$|d+HpHP*y{@Q9k+%}lwZWVW=uFo7rrHqhX!9Qr3$5k zA@?>1`I5c&Rv|_RZ#Zwg6ryurN&g0YdzV}kF$8v+q#!|fF6h)Vz)lUEIv|)hv!(< zHU^_&BM);E!{t|J+j-x3!aKBF_p9iv?d-%|D{ac_9sF&gbX!p(Pk7OK_qTK3ZMbz< zcX(;uW9{M7+e0dKYGW2P=>q