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