aboutsummaryrefslogtreecommitdiff
path: root/.github/actions/deploy/deploy.sh
diff options
context:
space:
mode:
Diffstat (limited to '.github/actions/deploy/deploy.sh')
-rwxr-xr-x.github/actions/deploy/deploy.sh123
1 files changed, 83 insertions, 40 deletions
diff --git a/.github/actions/deploy/deploy.sh b/.github/actions/deploy/deploy.sh
index 8bea7d299..f7d47a0d5 100755
--- a/.github/actions/deploy/deploy.sh
+++ b/.github/actions/deploy/deploy.sh
@@ -1,7 +1,10 @@
#!/usr/bin/env bash
set -e
-
-DEPLOY_TARGET="${1}"
+DEPLOYMET_ID="${1}"
+shift
+DEPLOYMENT_ENVIRONMENT="${1}"
+shift
+DEPLOYMENT_TASK="${1}"
shift
export ANYSOFTKEYBOARD_CRASH_REPORT_EMAIL="${1}"
shift
@@ -15,61 +18,101 @@ PUBLISH_CERT_FILE_URL="${1}"
shift
export PUBLISH_APK_SERVICE_ACCOUNT_EMAIL="${1}"
shift
+API_USER="${1}"
+shift
+API_TOKEN="${1}"
+shift
+function deployProcessFromEnvironmentName() {
+ #imeMaster_alpha_100
+ [[ $1 =~ ([a-zA-Z]+)_.*_.* ]]
+ echo "${BASH_REMATCH[1]}"
+}
+
+function deployChannelFromEnvironmentName() {
+ #imeMaster_alpha_100
+ [[ $1 =~ .*_([a-zA-Z]+)_.* ]]
+ echo "${BASH_REMATCH[1]}"
+}
+
+function deployFractionFromEnvironmentName() {
+ #imeMaster_alpha_100
+ [[ $1 =~ .*_.*_([0-9]+) ]]
+ local PERCENTAGE="${BASH_REMATCH[1]}"
+ echo "$(echo "${PERCENTAGE}" | cut -c1-1).$(echo "${PERCENTAGE}" | cut -c2-3)"
+}
+
+PROCESS_NAME=$(deployProcessFromEnvironmentName "${DEPLOYMENT_ENVIRONMENT}")
+DEPLOY_CHANNEL=$(deployChannelFromEnvironmentName "${DEPLOYMENT_ENVIRONMENT}")
+FRACTION=$(deployFractionFromEnvironmentName "${DEPLOYMENT_ENVIRONMENT}")
+
+echo "for ${DEPLOYMENT_ENVIRONMENT}: will deploy process ${PROCESS_NAME} to ${DEPLOY_CHANNEL} with ${FRACTION} fraction."
export BUILD_COUNT_FOR_VERSION=${GITHUB_RUN_NUMBER}
+./.github/actions/deploy/status-request.sh "${DEPLOYMET_ID}" "${DEPLOYMENT_ENVIRONMENT}" "in-progress" "${API_USER}" "${API_TOKEN}"
+
+echo "Downloading signature files..."
if [[ -z "${KEYSTORE_FILE_URL}" ]]; then
- echo "Using debug keystore for signing."
- mkdir -p /root/.android/ || true
- cp ./.github/actions/deploy/debug.keystore /root/.android/ || exit 1
+ echo "Could not find secure env variable KEYSTORE_FILE_URL. Can not deploy."
+ exit 1
fi
-DEPLOY_TASKS=( "-PwithAutoVersioning" ":generateFdroidYamls" )
-case "${DEPLOY_TARGET}" in
- dry-run)
- DEPLOY_TASKS+=( "-DdeployChannel=alpha" "assembleRelease" "assembleCanary" "verifyReleaseResources" "generateReleasePlayResources" "generateCanaryPlayResources" )
- ;;
+if [[ -z "${PUBLISH_CERT_FILE_URL}" ]]; then
+ echo "Could not find secure env variable PUBLISH_CERT_FILE_URL. Can not deploy."
+ exit 1
+fi
- app_alpha)
- DEPLOY_TASKS+=( "-DdeployChannel=alpha" "ime:app:assembleCanary" "ime:app:publishCanary" )
- ;;
+wget --tries=5 --waitretry=5 "${KEYSTORE_FILE_URL}" -q -O /tmp/anysoftkeyboard.keystore
+stat /tmp/anysoftkeyboard.keystore
+wget --tries=5 --waitretry=5 "${PUBLISH_CERT_FILE_URL}" -q -O /tmp/apk_upload_key.p12
+stat /tmp/apk_upload_key.p12
- app_beta)
- DEPLOY_TASKS+=( "-DdeployChannel=beta" "ime:app:assembleRelease" "ime:app:publishRelease")
- ;;
+DEPLOY_TASKS=( "-PwithAutoVersioning" ":generateFdroidYamls" "-DdeployChannel=${DEPLOY_CHANNEL}" "--user-fraction" "${FRACTION}" )
+if [[ "${DEPLOYMENT_TASK}" == "deploy" ]]; then
+ case "${PROCESS_NAME}" in
- addons_alpha)
- DEPLOY_TASKS+=( "-DdeployChannel=alpha" "assembleRelease" "publishRelease" "-x" "ime:app:assembleRelease" "-x" "ime:app:publishRelease" )
- ;;
+ imeMaster)
+ DEPLOY_TASKS+=( "ime:app:assembleCanary" "ime:app:publishCanary" )
+ ;;
- *)
- echo "deploy-target '${DEPLOY_TARGET}' is unkown!"
- exit 1
- ;;
-esac
+ imeProduction)
+ DEPLOY_TASKS+=( "ime:app:assembleRelease" "ime:app:publishRelease" )
+ ;;
+
+ addOns)
+ DEPLOY_TASKS+=( "assembleRelease" "publishRelease" "-x" "ime:app:assembleRelease" "-x" "ime:app:publishRelease" )
+ ;;
-echo "Counter is ${BUILD_COUNT_FOR_VERSION}, DEPLOY_TARGET: ${DEPLOY_TARGET}, crash email: ${ANYSOFTKEYBOARD_CRASH_REPORT_EMAIL}, and tasks: ${DEPLOY_TASKS[*]}"
+ *)
+ echo "PROCESS_NAME '${PROCESS_NAME}' is unknown in task ${DEPLOYMENT_TASK}!"
+ exit 1
+ ;;
-if [[ "${DEPLOY_TASKS[*]}" == *"publish"* ]]; then
- echo "Downloading signature files..."
+ esac
+elif [[ "${DEPLOYMENT_TASK}" == "deploy:migration" ]]; then
+ case "${PROCESS_NAME}" in
- if [[ -z "${KEYSTORE_FILE_URL}" ]]; then
- echo "Could not find secure env variable KEYSTORE_FILE_URL. Can not deploy."
- exit 1
- fi
+ imeMaster)
+ DEPLOY_TASKS+=( "ime:app:promoteReleaseArtifact" )
+ ;;
- if [[ -z "${PUBLISH_CERT_FILE_URL}" ]]; then
- echo "Could not find secure env variable PUBLISH_CERT_FILE_URL. Can not deploy."
- exit 1
- fi
+ imeProduction)
+ DEPLOY_TASKS+=( "ime:app:promoteReleaseArtifact" )
+ ;;
- wget --tries=5 --waitretry=5 "${KEYSTORE_FILE_URL}" -q -O /tmp/anysoftkeyboard.keystore
- stat /tmp/anysoftkeyboard.keystore
- wget --tries=5 --waitretry=5 "${PUBLISH_CERT_FILE_URL}" -q -O /tmp/apk_upload_key.p12
- stat /tmp/apk_upload_key.p12
+ addOns)
+ DEPLOY_TASKS+=( "promoteReleaseArtifact" "-x" "ime:app:promoteReleaseArtifact" )
+ ;;
+
+ esac
fi
-# shellcheck disable=SC2086
+echo "Counter is ${BUILD_COUNT_FOR_VERSION}, crash email: ${ANYSOFTKEYBOARD_CRASH_REPORT_EMAIL}, and tasks: ${DEPLOY_TASKS[*]}"
+
./gradlew "${DEPLOY_TASKS[@]}"
+./.github/actions/deploy/status-request.sh "${DEPLOYMET_ID}" "${DEPLOY_TARGET}" "success" "${API_USER}" "${API_TOKEN}"
+
+## TODO: kill previous enabled environments
+
[[ -n "${GITHUB_ACTIONS}" ]] && chmod -R a+rwx .