From d840dbfe22fa4c22bd90c310567461abd836cb5d Mon Sep 17 00:00:00 2001 From: iamareebjamal Date: Tue, 2 Jul 2019 08:07:14 +0530 Subject: [PATCH 1/6] chore: Simplify signing and APK generation --- .travis.yml | 3 ++- app/build.gradle | 24 ++++++++++++++++++++++++ build.gradle | 5 +++++ scripts/prep-key.sh | 5 +++-- scripts/update-apk.sh | 28 ++++++++++------------------ 5 files changed, 44 insertions(+), 21 deletions(-) diff --git a/.travis.yml b/.travis.yml index 94ce485a0..4f753316a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,10 +16,11 @@ cache: - "${TRAVIS_BUILD_DIR}/gradle/wrapper/dists/" - "$HOME/.gradle/caches/" - "$HOME/.gradle/wrapper/" +before_script: + - bash scripts/prep-key.sh script: - ./gradlew build - ./gradlew testPlayStoreDebugUnitTestCoverage after_success: - bash <(curl -s https://codecov.io/bash) - - bash scripts/prep-key.sh - bash scripts/update-apk.sh diff --git a/app/build.gradle b/app/build.gradle index edbf1b26e..5a76f5255 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,7 @@ apply plugin: 'com.noveogroup.android.check' apply from: './jacoco.gradle' apply plugin: 'com.google.gms.oss.licenses.plugin' apply plugin: "net.ltgt.errorprone" +apply plugin: "com.github.b3er.local.properties" def app_name = System.getenv('app_name') ?: "Eventyay Organizer" def GOOGLE_PLACES_API_KEY = System.getenv('GOOGLE_PLACES_API_KEY') ?: "YOUR_API_KEY" @@ -33,6 +34,25 @@ android { GOOGLE_PLACES_API_KEY: GOOGLE_PLACES_API_KEY ] } + + signingConfigs { + if (travisBuild) { + release { + storeFile rootProject.file('scripts/key.jks') + storePassword System.getenv("STORE_PASS") + keyAlias System.getenv("ALIAS") + keyPassword System.getenv("KEY_PASS") + } + } else if (project.hasProperty('SIGNING_KEY_FILE')) { + release { + storeFile rootProject.file(SIGNING_KEY_FILE) + storePassword STORE_PASS + keyAlias ALIAS + keyPassword KEY_PASS + } + } + } + buildTypes { release { minifyEnabled true @@ -41,6 +61,9 @@ android { buildConfigField "String", "DEFAULT_BASE_URL", '"https://api.eventyay.com/v1/"' resValue "string", "default_base_url", '"https://api.eventyay.com/v1/"' + + if (project.hasProperty('SIGNING_KEY_FILE') || travisBuild) + signingConfig signingConfigs.release } debug { testCoverageEnabled = true @@ -48,6 +71,7 @@ android { resValue "string", "default_base_url", '"https://open-event-api-dev.herokuapp.com/v1/"' } } + dataBinding { enabled true } diff --git a/build.gradle b/build.gradle index 5244e8697..708cc686a 100644 --- a/build.gradle +++ b/build.gradle @@ -15,6 +15,7 @@ buildscript { classpath 'com.noveogroup.android:check:1.2.5' classpath "com.google.gms:oss-licenses:0.9.2" classpath "net.ltgt.gradle:gradle-errorprone-plugin:0.8.1" + classpath "gradle.plugin.com.github.b3er.local.properties:local-properties-plugin:1.1" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -26,6 +27,10 @@ allprojects { google() jcenter() } + + ext { + travisBuild = System.getenv("TRAVIS") == "true" + } } task clean(type: Delete) { diff --git a/scripts/prep-key.sh b/scripts/prep-key.sh index c9e84474a..89c9fe165 100755 --- a/scripts/prep-key.sh +++ b/scripts/prep-key.sh @@ -1,9 +1,10 @@ #!/bin/sh set -e -export DEPLOY_BRANCH=${DEPLOY_BRANCH:-master} +export DEPLOY_BRANCH=${DEPLOY_BRANCH:-development} +export PUBLISH_BRANCH=${PUBLISH_BRANCH:-build} -if [ "$TRAVIS_PULL_REQUEST" != "false" -o "$TRAVIS_REPO_SLUG" != "fossasia/open-event-orga-app" -o "$TRAVIS_BRANCH" != "$DEPLOY_BRANCH" ]; then +if [ "$TRAVIS_PULL_REQUEST" != "false" -o "$TRAVIS_REPO_SLUG" != "fossasia/open-event-organizer-android" ] || ! [ "$TRAVIS_BRANCH" == "$DEPLOY_BRANCH" -o "$TRAVIS_BRANCH" == "$PUBLISH_BRANCH" ]; then echo "We decrypt key only for pushes to the master branch and not PRs. So, skip." exit 0 fi diff --git a/scripts/update-apk.sh b/scripts/update-apk.sh index 8dfbdd3e9..34984dc18 100755 --- a/scripts/update-apk.sh +++ b/scripts/update-apk.sh @@ -5,13 +5,15 @@ git config --global user.name "Travis CI" git config --global user.email "noreply+travis@fossasia.org" export DEPLOY_BRANCH=${DEPLOY_BRANCH:-development} -export PUBLISH_BRANCH=${PUBLISH_BRANCH:-master} +export PUBLISH_BRANCH=${PUBLISH_BRANCH:-build} -if [ "$TRAVIS_PULL_REQUEST" != "false" -o "$TRAVIS_REPO_SLUG" != "fossasia/open-event-orga-app" ] || ! [ "$TRAVIS_BRANCH" == "$DEPLOY_BRANCH" -o "$TRAVIS_BRANCH" == "$PUBLISH_BRANCH" ]; then +if [ "$TRAVIS_PULL_REQUEST" != "false" -o "$TRAVIS_REPO_SLUG" != "fossasia/open-event-organizer-android" ] || ! [ "$TRAVIS_BRANCH" == "$DEPLOY_BRANCH" -o "$TRAVIS_BRANCH" == "$PUBLISH_BRANCH" ]; then echo "We upload apk only for changes in development or master, and not PRs. So, let's skip this shall we ? :)" exit 0 fi +./gradlew bundlePlayStoreRelease + git clone --quiet --branch=apk https://niranjan94:$GITHUB_API_KEY@github.com/fossasia/open-event-orga-app apk > /dev/null cd apk @@ -21,21 +23,8 @@ else /bin/rm -f eventyay-organizer-dev-*.apk fi -\cp -r ../app/build/outputs/apk/playStore/*/**.apk . -\cp -r ../app/build/outputs/apk/fdroid/*/**.apk . -\cp -r ../app/build/outputs/apk/playStore/debug/output.json playStore-debug-output.json -\cp -r ../app/build/outputs/apk/playStore/release/output.json playStore-release-output.json -\cp -r ../app/build/outputs/apk/fdroid/debug/output.json fdroid-debug-output.json -\cp -r ../app/build/outputs/apk/fdroid/release/output.json fdroid-release-output.json - -# Signing Apps - -if [ "$TRAVIS_BRANCH" == "$PUBLISH_BRANCH" ]; then - echo "Push to master branch detected, signing the app..." - cp app-playStore-release-unsigned.apk app-playStore-release-unaligned.apk - jarsigner -verbose -tsa http://timestamp.comodoca.com/rfc3161 -sigalg SHA1withRSA -digestalg SHA1 -keystore ../scripts/key.jks -storepass $STORE_PASS -keypass $KEY_PASS app-playStore-release-unaligned.apk $ALIAS - ${ANDROID_HOME}/build-tools/27.0.3/zipalign -v -p 4 app-playStore-release-unaligned.apk app-playStore-release.apk -fi +\cp -r ../app/build/outputs/*/**.apk . +\cp -r ../app/build/outputs/*/**.aab . if [ "$TRAVIS_BRANCH" == "$PUBLISH_BRANCH" ]; then for file in app*; do @@ -62,7 +51,7 @@ git branch -D apk git branch -m apk # Force push to origin since histories are unrelated -git push origin apk --force --quiet > /dev/null +# git push origin apk --force --quiet > /dev/null # Publish App to Play Store if [ "$TRAVIS_BRANCH" != "$PUBLISH_BRANCH" ]; then @@ -70,5 +59,8 @@ if [ "$TRAVIS_BRANCH" != "$PUBLISH_BRANCH" ]; then exit 0 fi +ls -alh +exit 0 + gem install fastlane fastlane supply --apk eventyay-organizer-master-app-playStore-release.apk --track alpha --json_key ../scripts/fastlane.json --package_name $PACKAGE_NAME From 8c6e2cdfa97338d57a2d43f4d4bcde617df8f15d Mon Sep 17 00:00:00 2001 From: iamareebjamal Date: Tue, 2 Jul 2019 20:21:34 +0530 Subject: [PATCH 2/6] chore: Simplify signing and APK generation --- build.gradle | 2 +- scripts/prep-key.sh | 2 ++ scripts/update-apk.sh | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 708cc686a..414a68b15 100644 --- a/build.gradle +++ b/build.gradle @@ -29,7 +29,7 @@ allprojects { } ext { - travisBuild = System.getenv("TRAVIS") == "true" + travisBuild = System.getenv("TRAVIS") == "true" && System.getenv("TRAVIS_SIGNING_ENABLED") == "true" } } diff --git a/scripts/prep-key.sh b/scripts/prep-key.sh index 89c9fe165..5ecf3a387 100755 --- a/scripts/prep-key.sh +++ b/scripts/prep-key.sh @@ -9,5 +9,7 @@ if [ "$TRAVIS_PULL_REQUEST" != "false" -o "$TRAVIS_REPO_SLUG" != "fossasia/open- exit 0 fi +export TRAVIS_SIGNING_ENABLED=true + openssl aes-256-cbc -K $encrypted_4afa27b18f52_key -iv $encrypted_4afa27b18f52_iv -in ./scripts/secrets.tar.enc -out ./scripts/secrets.tar -d tar xvf ./scripts/secrets.tar -C scripts/ diff --git a/scripts/update-apk.sh b/scripts/update-apk.sh index 34984dc18..8a971a7cd 100755 --- a/scripts/update-apk.sh +++ b/scripts/update-apk.sh @@ -23,8 +23,8 @@ else /bin/rm -f eventyay-organizer-dev-*.apk fi -\cp -r ../app/build/outputs/*/**.apk . -\cp -r ../app/build/outputs/*/**.aab . +cp -r ../app/build/outputs/*/**.apk . +cp -r ../app/build/outputs/*/**.aab . if [ "$TRAVIS_BRANCH" == "$PUBLISH_BRANCH" ]; then for file in app*; do From 1de91e0d876c63ba3cd3575d00919fd32eac756d Mon Sep 17 00:00:00 2001 From: iamareebjamal Date: Tue, 2 Jul 2019 20:26:28 +0530 Subject: [PATCH 3/6] chore: Simplify signing and APK generation --- scripts/update-apk.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/update-apk.sh b/scripts/update-apk.sh index 8a971a7cd..349ceabbb 100755 --- a/scripts/update-apk.sh +++ b/scripts/update-apk.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash set -e git config --global user.name "Travis CI" From dd2847d37d3417fafe380b3ad63f4667f2f24d1b Mon Sep 17 00:00:00 2001 From: iamareebjamal Date: Tue, 2 Jul 2019 20:51:42 +0530 Subject: [PATCH 4/6] chore: Simplify signing and APK generation --- scripts/update-apk.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/update-apk.sh b/scripts/update-apk.sh index 349ceabbb..89351ce9d 100755 --- a/scripts/update-apk.sh +++ b/scripts/update-apk.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh set -e git config --global user.name "Travis CI" @@ -23,8 +23,8 @@ else /bin/rm -f eventyay-organizer-dev-*.apk fi -cp -r ../app/build/outputs/*/**.apk . -cp -r ../app/build/outputs/*/**.aab . +find ../app/build/outputs -type f -name '*.apk' -exec cp -v {} . \; +find ../app/build/outputs -type f -name '*.aab' -exec cp -v {} . \; if [ "$TRAVIS_BRANCH" == "$PUBLISH_BRANCH" ]; then for file in app*; do From 1716eedc5b642be7dad5443ca18ec9da10def26e Mon Sep 17 00:00:00 2001 From: iamareebjamal Date: Tue, 2 Jul 2019 21:56:15 +0530 Subject: [PATCH 5/6] chore: Simplify signing and APK generation --- app/build.gradle | 10 ++++++---- build.gradle | 3 ++- scripts/prep-key.sh | 2 -- scripts/update-apk.sh | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 5a76f5255..61ba13c34 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,6 +9,8 @@ apply plugin: "com.github.b3er.local.properties" def app_name = System.getenv('app_name') ?: "Eventyay Organizer" def GOOGLE_PLACES_API_KEY = System.getenv('GOOGLE_PLACES_API_KEY') ?: "YOUR_API_KEY" +def LOCAL_KEY_PRESENT = project.hasProperty('SIGNING_KEY_FILE') && rootProject.file(SIGNING_KEY_FILE).exists() + android { lintOptions { warning 'InvalidPackage' @@ -36,14 +38,14 @@ android { } signingConfigs { - if (travisBuild) { + if (TRAVIS_BUILD) { release { - storeFile rootProject.file('scripts/key.jks') + storeFile KEYSTORE_FILE storePassword System.getenv("STORE_PASS") keyAlias System.getenv("ALIAS") keyPassword System.getenv("KEY_PASS") } - } else if (project.hasProperty('SIGNING_KEY_FILE')) { + } else if (LOCAL_KEY_PRESENT) { release { storeFile rootProject.file(SIGNING_KEY_FILE) storePassword STORE_PASS @@ -62,7 +64,7 @@ android { buildConfigField "String", "DEFAULT_BASE_URL", '"https://api.eventyay.com/v1/"' resValue "string", "default_base_url", '"https://api.eventyay.com/v1/"' - if (project.hasProperty('SIGNING_KEY_FILE') || travisBuild) + if (LOCAL_KEY_PRESENT || TRAVIS_BUILD) signingConfig signingConfigs.release } debug { diff --git a/build.gradle b/build.gradle index 414a68b15..61839692a 100644 --- a/build.gradle +++ b/build.gradle @@ -29,7 +29,8 @@ allprojects { } ext { - travisBuild = System.getenv("TRAVIS") == "true" && System.getenv("TRAVIS_SIGNING_ENABLED") == "true" + KEYSTORE_FILE = rootProject.file('scripts/key.jks') + TRAVIS_BUILD = System.getenv("TRAVIS") == "true" && KEYSTORE_FILE.exists() } } diff --git a/scripts/prep-key.sh b/scripts/prep-key.sh index 5ecf3a387..89c9fe165 100755 --- a/scripts/prep-key.sh +++ b/scripts/prep-key.sh @@ -9,7 +9,5 @@ if [ "$TRAVIS_PULL_REQUEST" != "false" -o "$TRAVIS_REPO_SLUG" != "fossasia/open- exit 0 fi -export TRAVIS_SIGNING_ENABLED=true - openssl aes-256-cbc -K $encrypted_4afa27b18f52_key -iv $encrypted_4afa27b18f52_iv -in ./scripts/secrets.tar.enc -out ./scripts/secrets.tar -d tar xvf ./scripts/secrets.tar -C scripts/ diff --git a/scripts/update-apk.sh b/scripts/update-apk.sh index 89351ce9d..7a5262592 100755 --- a/scripts/update-apk.sh +++ b/scripts/update-apk.sh @@ -63,4 +63,4 @@ ls -alh exit 0 gem install fastlane -fastlane supply --apk eventyay-organizer-master-app-playStore-release.apk --track alpha --json_key ../scripts/fastlane.json --package_name $PACKAGE_NAME +fastlane supply --aab eventyay-organizer-master-app.aab --track alpha --json_key ../scripts/fastlane.json --package_name $PACKAGE_NAME From 185dc4adae549169629132b6aff9bb15adcdbc25 Mon Sep 17 00:00:00 2001 From: iamareebjamal Date: Tue, 2 Jul 2019 22:35:46 +0530 Subject: [PATCH 6/6] chore: Simplify signing and APK generation --- scripts/prep-key.sh | 2 +- scripts/update-apk.sh | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/scripts/prep-key.sh b/scripts/prep-key.sh index 89c9fe165..97d9305f0 100755 --- a/scripts/prep-key.sh +++ b/scripts/prep-key.sh @@ -2,7 +2,7 @@ set -e export DEPLOY_BRANCH=${DEPLOY_BRANCH:-development} -export PUBLISH_BRANCH=${PUBLISH_BRANCH:-build} +export PUBLISH_BRANCH=${PUBLISH_BRANCH:-master} if [ "$TRAVIS_PULL_REQUEST" != "false" -o "$TRAVIS_REPO_SLUG" != "fossasia/open-event-organizer-android" ] || ! [ "$TRAVIS_BRANCH" == "$DEPLOY_BRANCH" -o "$TRAVIS_BRANCH" == "$PUBLISH_BRANCH" ]; then echo "We decrypt key only for pushes to the master branch and not PRs. So, skip." diff --git a/scripts/update-apk.sh b/scripts/update-apk.sh index 7a5262592..3151b2113 100755 --- a/scripts/update-apk.sh +++ b/scripts/update-apk.sh @@ -5,7 +5,7 @@ git config --global user.name "Travis CI" git config --global user.email "noreply+travis@fossasia.org" export DEPLOY_BRANCH=${DEPLOY_BRANCH:-development} -export PUBLISH_BRANCH=${PUBLISH_BRANCH:-build} +export PUBLISH_BRANCH=${PUBLISH_BRANCH:-master} if [ "$TRAVIS_PULL_REQUEST" != "false" -o "$TRAVIS_REPO_SLUG" != "fossasia/open-event-organizer-android" ] || ! [ "$TRAVIS_BRANCH" == "$DEPLOY_BRANCH" -o "$TRAVIS_BRANCH" == "$PUBLISH_BRANCH" ]; then echo "We upload apk only for changes in development or master, and not PRs. So, let's skip this shall we ? :)" @@ -51,7 +51,7 @@ git branch -D apk git branch -m apk # Force push to origin since histories are unrelated -# git push origin apk --force --quiet > /dev/null +git push origin apk --force --quiet > /dev/null # Publish App to Play Store if [ "$TRAVIS_BRANCH" != "$PUBLISH_BRANCH" ]; then @@ -59,8 +59,5 @@ if [ "$TRAVIS_BRANCH" != "$PUBLISH_BRANCH" ]; then exit 0 fi -ls -alh -exit 0 - gem install fastlane fastlane supply --aab eventyay-organizer-master-app.aab --track alpha --json_key ../scripts/fastlane.json --package_name $PACKAGE_NAME