Auto-commit after successful build: improve build setup
Changed files:\nCreateUploadKey.sh app/build.gradle.kts
This commit is contained in:
99
CreateUploadKey.sh
Executable file
99
CreateUploadKey.sh
Executable file
@@ -0,0 +1,99 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
KEYSTORE_PROPERTIES="$SCRIPT_DIR/keystore.properties"
|
||||||
|
|
||||||
|
log() {
|
||||||
|
printf '\n[%s] %s\n' "create-upload-key" "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
fail() {
|
||||||
|
echo "$1" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
require_tool() {
|
||||||
|
if ! command -v "$1" >/dev/null 2>&1; then
|
||||||
|
fail "Missing required tool: $1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
get_property() {
|
||||||
|
local key="$1"
|
||||||
|
python - "$KEYSTORE_PROPERTIES" "$key" <<'PY'
|
||||||
|
from pathlib import Path
|
||||||
|
import sys
|
||||||
|
|
||||||
|
path = Path(sys.argv[1])
|
||||||
|
target_key = sys.argv[2]
|
||||||
|
|
||||||
|
for raw_line in path.read_text().splitlines():
|
||||||
|
line = raw_line.strip()
|
||||||
|
if not line or line.startswith('#'):
|
||||||
|
continue
|
||||||
|
if '=' not in line:
|
||||||
|
continue
|
||||||
|
key, value = line.split('=', 1)
|
||||||
|
if key.strip() == target_key:
|
||||||
|
print(value.strip())
|
||||||
|
break
|
||||||
|
PY
|
||||||
|
}
|
||||||
|
|
||||||
|
ensure_required_property() {
|
||||||
|
local key="$1"
|
||||||
|
local value="$2"
|
||||||
|
|
||||||
|
if [ -z "$value" ]; then
|
||||||
|
fail "Missing required property '$key' in $KEYSTORE_PROPERTIES"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
require_tool keytool
|
||||||
|
require_tool python
|
||||||
|
|
||||||
|
if [ ! -f "$KEYSTORE_PROPERTIES" ]; then
|
||||||
|
fail "Missing $KEYSTORE_PROPERTIES. Create it from keystore.properties.example first."
|
||||||
|
fi
|
||||||
|
|
||||||
|
local store_file
|
||||||
|
local store_password
|
||||||
|
local key_alias
|
||||||
|
local key_password
|
||||||
|
|
||||||
|
store_file="$(get_property storeFile)"
|
||||||
|
store_password="$(get_property storePassword)"
|
||||||
|
key_alias="$(get_property keyAlias)"
|
||||||
|
key_password="$(get_property keyPassword)"
|
||||||
|
|
||||||
|
ensure_required_property storeFile "$store_file"
|
||||||
|
ensure_required_property storePassword "$store_password"
|
||||||
|
ensure_required_property keyAlias "$key_alias"
|
||||||
|
ensure_required_property keyPassword "$key_password"
|
||||||
|
|
||||||
|
if [ -f "$store_file" ]; then
|
||||||
|
fail "Keystore already exists at $store_file. Delete or move it first if you want to regenerate it."
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$(dirname "$store_file")"
|
||||||
|
|
||||||
|
log "Creating upload keystore at $store_file"
|
||||||
|
keytool -genkeypair \
|
||||||
|
-v \
|
||||||
|
-keystore "$store_file" \
|
||||||
|
-storepass "$store_password" \
|
||||||
|
-alias "$key_alias" \
|
||||||
|
-keypass "$key_password" \
|
||||||
|
-keyalg RSA \
|
||||||
|
-keysize 2048 \
|
||||||
|
-validity 10000 \
|
||||||
|
-dname "CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, S=Unknown, C=US"
|
||||||
|
|
||||||
|
log "Upload keystore created successfully"
|
||||||
|
log "Back up both the keystore file and the matching keystore.properties secrets"
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
||||||
@@ -19,8 +19,8 @@ android {
|
|||||||
applicationId = "solutions.tretter.githugandroid"
|
applicationId = "solutions.tretter.githugandroid"
|
||||||
minSdk = 26
|
minSdk = 26
|
||||||
targetSdk = 34
|
targetSdk = 34
|
||||||
versionCode = 83
|
versionCode = 87
|
||||||
versionName = "0.1.82"
|
versionName = "0.1.86"
|
||||||
|
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
vectorDrawables.useSupportLibrary = true
|
vectorDrawables.useSupportLibrary = true
|
||||||
|
|||||||
Reference in New Issue
Block a user