From 91ea47f63a4a24cdd3c39ac83b3974a3bec570f9 Mon Sep 17 00:00:00 2001 From: Agzamus Date: Thu, 3 Sep 2026 00:39:40 +0300 Subject: [PATCH] ci: base64 key generating --- .gitignore | 6 ++++++ prepare_keystore_secret.sh | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100755 prepare_keystore_secret.sh diff --git a/.gitignore b/.gitignore index 9b0f6f3..8ac2d33 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,9 @@ local.properties /app/build /app/release /.idea + +# Keystore подписи и его base64-представление для Gitea-секрета +*.jks +*.keystore +/scripts/.keystore.b64 +.keystore.b64 diff --git a/prepare_keystore_secret.sh b/prepare_keystore_secret.sh new file mode 100755 index 0000000..8fefc68 --- /dev/null +++ b/prepare_keystore_secret.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +# Готовит содержимое keystore (.jks) для вставки в секрет ANDROID_KEYSTORE +# Кодирует файл в base64 одной длинной строкой (без переносов) и сохраняет в файл .keystore.b64 рядом со скриптом. + +set -euo pipefail + +if [ "$#" -ne 1 ]; then + echo "Usage: " >&2 + exit 1 +fi + +KEYSTORE="$1" + +if [ ! -f "$KEYSTORE" ]; then + echo "File not found: $KEYSTORE" >&2 + exit 1 +fi + +# base64 -w0: без переносов строк. (на macOS base64 не имеет -w) +if base64 --help 2>/dev/null | grep -q '\-w'; then + ENCODED=$(base64 -w0 "$KEYSTORE") +else + ENCODED=$(base64 <"$KEYSTORE" | tr -d '\n') +fi + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +OUTFILE="$SCRIPT_DIR/.keystore.b64" +printf '%s\n' "$ENCODED" >"$OUTFILE" + +echo "Keystore: $KEYSTORE" +echo "Output: $OUTFILE" +echo "Size: ${#ENCODED} chars"