From cbec81efd9ce0673d3edabd3041c76a379c9ce73 Mon Sep 17 00:00:00 2001 From: AlexanderAlferov <64849422+AlexanderAlferov@users.noreply.github.com> Date: Tue, 20 Oct 2020 19:29:50 +0300 Subject: [PATCH] CircleCI signed RC build (EXPOSUREAPP-2773)(DEV) (#1437) * Added conditions for apk signing * Update testers flavour * Config fix * Disable assemble job skip * Create separate workflow * Fix config.yml * Clean up --- .circleci/config.yml | 53 ++++++++++++++++++++++++++++++++---- Corona-Warn-App/build.gradle | 35 +++++++++++++++++------- 2 files changed, 72 insertions(+), 16 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index f297a047b..fd5b17c00 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -74,9 +74,6 @@ jobs: - restore-gradle-cache - restore-android-build-cache - require-version-bump - - install-ndk: - ndk-sha: "c81a5bcb4672a18d3647bf6898cd4dbcb978d0e8" - ndk-version: "android-ndk-r21c" - run-gradle-cmd: desc: Quick Build cmd: "assembleDeviceRelease" @@ -94,9 +91,6 @@ jobs: - restore-gradle-cache - restore-android-build-cache - require-version-bump - - install-ndk: - ndk-sha: "c81a5bcb4672a18d3647bf6898cd4dbcb978d0e8" - ndk-version: "android-ndk-r21c" - run-gradle-cmd: desc: Quick Build cmd: ":Corona-Warn-App:assembleDeviceForTestersRelease" @@ -233,6 +227,44 @@ jobs: name: Skip SonarCloud for external Pull Requests command: '[[ -v CIRCLE_PR_REPONAME ]] && circleci-agent step halt || true' - scan-sonar + quick_build_device_for_testers_signed: + executor: android/android + resource_class: large + working_directory: ~/project + steps: + - checkout + - restore-gradle-cache + - restore-android-build-cache + - run: + name: Download Keystore + command: | + curl --header "Authorization: token $keystore_download_token" --header "Accept: application/vnd.github.v3.raw" --remote-name --location "$keystore_download_url$keystore_download_filename" + - run: + name: Download Environment Properties + command: | + curl --header "Authorization: token $keystore_download_token" --header "Accept: application/vnd.github.v3.raw" --remote-name --location "$keystore_download_url$env_prop_download_filename" + - run: + name: Decrypt Keystore + command: openssl enc -aes-256-cbc -d -pbkdf2 -iter 100000 -in $keystore_download_filename -out $keystore_filename -k $keystore_encrypt_key + - run: + name: Prepare keystore properties for Signing + command: | + echo "" >> "./keystore.properties" + echo "deviceForTestersRelease.storePath=../$keystore_filename" >> "./keystore.properties" + echo "deviceForTestersRelease.storePassword=$keystore_password" >> "./keystore.properties" + echo "deviceForTestersRelease.keyAlias=$key_alias" >> "./keystore.properties" + echo "deviceForTestersRelease.keyPassword=$key_password" >> "./keystore.properties" + - run-gradle-cmd: + desc: Quick Build + cmd: ":Corona-Warn-App:assembleDeviceForTestersRelease" + - save-gradle-cache + - save-android-build-cache + - store_artifacts: + path: Corona-Warn-App/build/outputs/apk + destination: apk + - store_artifacts: + path: Corona-Warn-App/build/reports + destination: reports workflows: version: 2 quick_build: @@ -249,3 +281,12 @@ workflows: - run_sonar: requires: - device_release_unit_tests + signed_build: + jobs: + - quick_build_device_for_testers_signed: + filters: + tags: + only: + - /SNAPSHOT/ + branches: + ignore: /.*/ diff --git a/Corona-Warn-App/build.gradle b/Corona-Warn-App/build.gradle index 8be9c9366..edd7de365 100644 --- a/Corona-Warn-App/build.gradle +++ b/Corona-Warn-App/build.gradle @@ -83,13 +83,28 @@ android { Properties signingProps = new Properties() signingProps.load(new FileInputStream(signingPropFile)) signingConfigs { - release { - storeFile file(signingProps['release.storePath']) - keyAlias signingProps['release.keyAlias'] - storePassword signingProps['release.storePassword'] - keyPassword signingProps['release.keyPassword'] + deviceRelease { + if(signingProps['deviceRelease.storePath'] != null) { + storeFile file(signingProps['deviceRelease.storePath']) + keyAlias signingProps['deviceRelease.keyAlias'] + storePassword signingProps['deviceRelease.storePassword'] + keyPassword signingProps['deviceRelease.keyPassword'] + } + } + deviceForTestersRelease { + if(signingProps['deviceForTestersRelease.storePath'] != null) { + storeFile file(signingProps['deviceForTestersRelease.storePath']) + keyAlias signingProps['deviceForTestersRelease.keyAlias'] + storePassword signingProps['deviceForTestersRelease.storePassword'] + keyPassword signingProps['deviceForTestersRelease.keyPassword'] + } } } + } else { + signingConfigs { + deviceRelease {} + deviceForTestersRelease {} + } } buildTypes { @@ -99,10 +114,6 @@ android { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - - if (signingPropFile.canRead()) { - signingConfig signingConfigs.release - } } } @@ -116,16 +127,20 @@ android { ext { envTypeDefault = [debug: "INT", release: "PROD"] } + + signingConfig signingConfigs.deviceRelease } deviceForTesters { // Contains test fragments dimension "version" resValue "string", "app_name", "CWA TEST" - applicationIdSuffix '.dev' + applicationIdSuffix '.test' ext { envTypeDefault = [debug: "INT", release: "WRU-XD"] } + + signingConfig signingConfigs.deviceForTestersRelease } } applicationVariants.all { variant -> -- GitLab