taler-android

Android apps for GNU Taler (wallet, PoS, cashier)
Log | Files | Refs | README | LICENSE

deploy.sh (3494B)


      1 #!/bin/bash
      2 set -exuo pipefail
      3 
      4 ARTIFACT_PATH_LIB="/artifacts/taler-android/${CI_COMMIT_REF}/merchant-lib"
      5 ARTIFACT_PATH_POS="/artifacts/taler-android/${CI_COMMIT_REF}/merchant-terminal"
      6 APK_PATH="merchant-terminal/build/outputs/apk/release/merchant-terminal-release-unsigned.apk"
      7 LINT_PATH_LIB="merchant-lib/build/reports/lint-results-debug.html"
      8 LINT_PATH_POS="merchant-terminal/build/reports/lint-results-debug.html"
      9 
     10 export versionCode=$(date '+%s')
     11 
     12 function build_apk {
     13     [[ ! -f "${NIGHTLY_KEYSTORE_PATH}" ]] && return 1
     14     echo "Building APK ..."
     15 
     16     # Rename nightly app
     17     sed -i 's,<string name="app_name">.*</string>,<string name="app_name">Merchant PoS Nightly</string>,' merchant-terminal/src/main/res/values*/strings.xml
     18 
     19     # Set time-based version code
     20     sed -i "s,^\(\s*versionCode\) *[0-9].*,\1 $versionCode," merchant-terminal/build.gradle
     21 
     22     # Add commit to version name
     23     export versionName=$(git rev-parse --short=7 HEAD)
     24     sed -i "s,^\(\s*versionName\ *\"[0-9].*\)\",\1 ($versionName)\"," merchant-terminal/build.gradle
     25 
     26     # Set nightly application ID
     27     sed -i "s,^\(\s*applicationId\) \"*[a-z\.].*\",\1 \"net.taler.merchantpos.nightly\"," merchant-terminal/build.gradle
     28 
     29     # Test and build the APK
     30     ./gradlew :merchant-lib:check :merchant-terminal:check :merchant-terminal:assembleRelease
     31 
     32     # Sign the APK
     33     apksigner sign \
     34               --ks "${NIGHTLY_KEYSTORE_PATH}" \
     35               --ks-key-alias "${NIGHTLY_KEYSTORE_ALIAS}" \
     36               --ks-pass env:NIGHTLY_KEYSTORE_PASS \
     37               "${APK_PATH}"
     38 
     39     # Copy the APK and lint reports to artifacts folder
     40     mkdir -p "${ARTIFACT_PATH_POS}"
     41     mkdir -p "${ARTIFACT_PATH_LIB}"
     42     cp "${APK_PATH}" "${ARTIFACT_PATH_POS}"/merchant-terminal-debug.apk
     43     cp "${LINT_PATH_LIB}" "${ARTIFACT_PATH_LIB}"
     44     cp "${LINT_PATH_POS}" "${ARTIFACT_PATH_POS}"
     45 }
     46 
     47 
     48 function deploy_apk {
     49     [[ ! -f "${SCP_SSH_KEY}" ]] && return 0
     50     echo "Deploying APK to taler.net/files ..."
     51 
     52     apk_dest="${SCP_SSH_PATH}"/merchant-terminal/merchant-terminal-nightly-debug-${versionCode}.apk
     53     latest_dest="${SCP_SSH_PATH}"/merchant-terminal/merchant-terminal-nightly-debug-latest.apk
     54 
     55     # Deploy APK to taler.net/files/cashier
     56     scp -i "${SCP_SSH_KEY}" \
     57         -o StrictHostKeyChecking=no \
     58         -o UserKnownHostsFile=/dev/null \
     59         "${APK_PATH}" \
     60         "${SCP_SSH_HOST}":"${apk_dest}"
     61 
     62     # Create symbolic link to the latest version
     63     ssh -i "${SCP_SSH_KEY}" \
     64         -o StrictHostKeyChecking=no \
     65         -o UserKnownHostsFile=/dev/null \
     66         "${SCP_SSH_HOST}" \
     67         ln -sfr "${apk_dest}" "${latest_dest}"
     68 }
     69 
     70 
     71 function deploy_fdroid {
     72     [[ ! -f "${FDROID_REPO_KEY}" ]] && return 0
     73     echo "Deploying APK to F-droid nightly ..."
     74 
     75     # Copy keystore where SDK can find it
     76     cp "${NIGHTLY_KEYSTORE_PATH}" /root/.android/debug.keystore
     77 
     78     # Rename APK, so fdroid nightly accepts it (looks for *-debug.apk)
     79     cp "${APK_PATH}" merchant-terminal-debug.apk
     80 
     81     fdroid --version
     82 
     83     set +x
     84     export DEBUG_KEYSTORE=$(cat "$FDROID_REPO_KEY")
     85     set -x
     86 
     87     # Deploy APK to nightly repository
     88     export DEBUG_KEYSTORE
     89     export CI=
     90     export CI_PROJECT_URL="https://gitlab.com/gnu-taler/fdroid-repo"
     91     export CI_PROJECT_PATH="gnu-taler/fdroid-repo"
     92     export GITLAB_USER_NAME="$(git log -1 --pretty=format:'%an')"
     93     export GITLAB_USER_EMAIL="$(git log -1 --pretty=format:'%ae')"
     94     fdroid nightly -v --archive-older 6
     95 }
     96 
     97 build_apk
     98 deploy_apk
     99 deploy_fdroid