Refactor entrypoint script for improved readability and add upgrade functionality

This commit is contained in:
gyurix
2025-03-14 08:41:59 +01:00
parent 580866a0e6
commit 7cd01799e2
2 changed files with 30 additions and 16 deletions

View File

@@ -163,7 +163,6 @@ get_repositories() {
local TREES="" local TREES=""
local REPO local REPO
REPOS=$(jq -r .repositories[] /etc/user/config/repositories.json) # list of repos, delimiter by space REPOS=$(jq -r .repositories[] /etc/user/config/repositories.json) # list of repos, delimiter by space
for REPO in $REPOS; do for REPO in $REPOS; do
@@ -434,12 +433,13 @@ check_update() {
CURL_CHECK="curl -m 5 -s -o /dev/null -w "%{http_code}" https://$REPOSITORY_URL/v2/" CURL_CHECK="curl -m 5 -s -o /dev/null -w "%{http_code}" https://$REPOSITORY_URL/v2/"
CURL_CHECK_CODE=$(eval $CURL_CHECK) CURL_CHECK_CODE=$(eval $CURL_CHECK)
if [[ "$CURL_CHECK_CODE" == "200" ]]; then
if [[ "$CURL_CHECK_CODE" == "200" ]] || [[ "$(echo "$REPOSITORY_URL" | grep '\.')" == "" ]]; then
debug "$REPOSITORY_URL accessed successful" debug "$REPOSITORY_URL accessed successful"
# if repository url is not set # if repository url is not set
if [[ "$(echo "$REPOSITORY_URL" | grep '\.')" == "" ]]; then if [[ "$(echo "$REPOSITORY_URL" | grep '\.')" == "" ]]; then
REPOSITORY_URL="docker.io" REPOSITORY_URL="hub.docker.com"
TEMP_PATH=$IMAGE TEMP_PATH=$IMAGE
else else
# -f2- IMAGE can contain subdirectories # -f2- IMAGE can contain subdirectories
@@ -689,7 +689,7 @@ execute_task() {
elif [ "$TASK_NAME" == "deployment" ]; then elif [ "$TASK_NAME" == "deployment" ]; then
JSON="$(echo $B64_JSON | base64 -d)" JSON="$(echo $B64_JSON | base64 -d)"
DEPLOY_NAME=$(echo "$JSON" | jq -r .NAME | awk '{print tolower($0)}') DEPLOY_NAME=$(echo "$JSON" | jq -r .NAME | awk '{print tolower($0)}')
DEPLOY_ACTION=$(echo "$JSON" | jq -r .ACTION) DEPLOY_ACTION=$(echo "$JSON" | jq -r .ACTION)
TREES=$(get_repositories) TREES=$(get_repositories)
debug "$JSON" debug "$JSON"
@@ -697,7 +697,7 @@ execute_task() {
for TREE in $TREES; do for TREE in $TREES; do
APPS=$(jq -rc '.apps[]' $TREE) APPS=$(jq -rc '.apps[]' $TREE)
for APP in $APPS; do for APP in $APPS; do
APP_NAME=$(echo "$APP" | jq -r '.name' | awk '{print tolower($0)}') APP_NAME=$(echo "$APP" | jq -r '.name' | awk '{print tolower($0)}')
APP_VERSION=$(echo "$APP" | jq -r '.version') APP_VERSION=$(echo "$APP" | jq -r '.version')
APP_DIR=$(dirname $TREE)"/"$APP_NAME APP_DIR=$(dirname $TREE)"/"$APP_NAME
debug "$APP_TEMPLATE" debug "$APP_TEMPLATE"
@@ -713,7 +713,7 @@ execute_task() {
KEY=$(echo $LINE | jq -r .key) KEY=$(echo $LINE | jq -r .key)
VALUE=$(echo $LINE | jq -r .value) VALUE=$(echo $LINE | jq -r .value)
debug "$KEY: $VALUE" debug "$KEY: $VALUE"
# write ENV value from service files to template value by key name # write ENV value from service files to template value by key name
#TEMPLATE=$(echo "$TEMPLATE" | jq -r '.fields |= map(.value = "'$VALUE'")') #TEMPLATE=$(echo "$TEMPLATE" | jq -r '.fields |= map(.value = "'$VALUE'")')
TEMPLATE=$(echo "$TEMPLATE" | jq -r '.fields |= map(if .key == "'$KEY'" then .value = "'$VALUE'" else . end)') TEMPLATE=$(echo "$TEMPLATE" | jq -r '.fields |= map(if .key == "'$KEY'" then .value = "'$VALUE'" else . end)')
done done
@@ -736,13 +736,13 @@ execute_task() {
TEMPLATE=$(echo "$TEMPLATE" | base64 -w0) TEMPLATE=$(echo "$TEMPLATE" | base64 -w0)
JSON_TARGET=$(echo '{ "DATE": "'$DATE'", "STATUS": "0", "TEMPLATE": "'$TEMPLATE'" }' | jq -r . | base64 -w0) JSON_TARGET=$(echo '{ "DATE": "'$DATE'", "STATUS": "0", "TEMPLATE": "'$TEMPLATE'" }' | jq -r . | base64 -w0)
elif [ "$DEPLOY_ACTION" == "deploy" ]; then elif [ "$DEPLOY_ACTION" == "deploy" ]; then
JSON_TARGET="" JSON_TARGET=""
#JSON_TARGET=$(echo '{ "DATE": "'$DATE'", "STATUS": "1" }' | jq -r . | base64 -w0) # deployment has started #JSON_TARGET=$(echo '{ "DATE": "'$DATE'", "STATUS": "1" }' | jq -r . | base64 -w0) # deployment has started
#redis-cli -h $REDIS_SERVER -p $REDIS_PORT SET "$DEPLOY_ACTION-$DEPLOY_NAME" "$JSON_TARGET" # web_in #redis-cli -h $REDIS_SERVER -p $REDIS_PORT SET "$DEPLOY_ACTION-$DEPLOY_NAME" "$JSON_TARGET" # web_in
DEPLOY_PAYLOAD=$(echo "$JSON" | jq -r .PAYLOAD) # base64 list of key-value pairs in JSON DEPLOY_PAYLOAD=$(echo "$JSON" | jq -r .PAYLOAD) # base64 list of key-value pairs in JSON
deploy_additionals "$APP_DIR" "$DEPLOY_NAME" "$DEPLOY_PAYLOAD" deploy_additionals "$APP_DIR" "$DEPLOY_NAME" "$DEPLOY_PAYLOAD"
sh /scripts/check_pid.sh "$PID" "$SHARED" "$DEPLOY_ACTION-$DEPLOY_NAME" "$DATE" "$DEBUG" & sh /scripts/check_pid.sh "$PID" "$SHARED" "$DEPLOY_ACTION-$DEPLOY_NAME" "$DATE" "$DEBUG" &
elif [ "$DEPLOY_ACTION" == "redeploy" ]; then elif [ "$DEPLOY_ACTION" == "redeploy" ]; then
JSON_TARGET="" JSON_TARGET=""
remove_additionals "$APP_DIR" "$DEPLOY_NAME" remove_additionals "$APP_DIR" "$DEPLOY_NAME"
@@ -757,7 +757,7 @@ execute_task() {
debug "JSON_TARGET: $JSON_TARGET" debug "JSON_TARGET: $JSON_TARGET"
echo $JSON_TARGET | base64 -d >$SHARED/output/"uninstall-"$DEPLOY_NAME.json echo $JSON_TARGET | base64 -d >$SHARED/output/"uninstall-"$DEPLOY_NAME.json
JSON_TARGET="" JSON_TARGET=""
fi fi
fi fi
done done
done done
@@ -784,7 +784,7 @@ execute_task() {
elif [ "$TASK_NAME" == "save_vpn" ]; then elif [ "$TASK_NAME" == "save_vpn" ]; then
VPN_PROXY_REPO="wireguard-proxy-client"; VPN_PROXY_REPO="wireguard-proxy-client"
if [ ! -d "/tmp/$VPN_PROXY_REPO" ]; then if [ ! -d "/tmp/$VPN_PROXY_REPO" ]; then
git clone https://git.format.hu/safebox/$VPN_PROXY_REPO.git /tmp/$VPN_PROXY_REPO >/dev/null git clone https://git.format.hu/safebox/$VPN_PROXY_REPO.git /tmp/$VPN_PROXY_REPO >/dev/null
else else
@@ -792,11 +792,11 @@ execute_task() {
git pull >/dev/null git pull >/dev/null
fi fi
cp -av /tmp/$VPN_PROXY_REPO/*.json $SERVICE_DIR/ cp -av /tmp/$VPN_PROXY_REPO/*.json $SERVICE_DIR/
VPN_VOLUMES=$(jq -r .containers[0].VOLUMES[0].SOURCE $SERVICE_DIR/vpn-proxy.json) VPN_VOLUMES=$(jq -r .containers[0].VOLUMES[0].SOURCE $SERVICE_DIR/vpn-proxy.json)
VOLUME=$(dirname $VPN_VOLUMES); VOLUME=$(dirname $VPN_VOLUMES)
mkdir -p $VOLUME; mkdir -p $VOLUME
# install vpn only # install vpn only
sh /scripts/install.sh "$B64_JSON" "$service_exec" "vpn" "$GLOBAL_VERSION" sh /scripts/install.sh "$B64_JSON" "$service_exec" "vpn" "$GLOBAL_VERSION"
@@ -807,7 +807,12 @@ execute_task() {
CONTAINERS=$(docker ps -a --format '{{.Names}} {{.Status}}' | grep -v framework-scheduler) CONTAINERS=$(docker ps -a --format '{{.Names}} {{.Status}}' | grep -v framework-scheduler)
RESULT=$(echo "$CONTAINERS" | base64 -w0) RESULT=$(echo "$CONTAINERS" | base64 -w0)
JSON_TARGET=$(echo '{ "DATE": "'$DATE'", "RESULT": "'$RESULT'" }' | jq -r . | base64 -w0) JSON_TARGET=$(echo '{ "DATE": "'$DATE'", "RESULT": "'$RESULT'" }' | jq -r . | base64 -w0)
elif [ "$TASK_NAME" == "upgrade" ]; then
JSON_TARGET=$(echo '{ "DATE": "'$DATE'", "UPGRADE_STATUS": "0" }' | jq -r . | base64 -w0) # install has started
install -m 664 -g 65534 /dev/null $SHARED/output/$TASK.json
echo $JSON_TARGET | base64 -d >$SHARED/output/$TASK.json
sh /scripts/upgrade.sh "$B64_JSON" "$service_exec" "true" "$GLOBAL_VERSION"
JSON_TARGET=$(echo '{ "DATE": "'$DATE'", "UPGRADE_STATUS": "'$UPGRADE_STATUS'" }' | jq -r . | base64 -w0)
fi fi
debug "JSON_TARGET: $JSON_TARGET" debug "JSON_TARGET: $JSON_TARGET"

9
scripts/scheduler/upgrade.sh Executable file
View File

@@ -0,0 +1,9 @@
#!/bin/sh
B64_JSON=$1
SERVICE_EXEC=$2
GLOBAL_VERSION=$4
for SERVICE in $(echo $B64_JSON | base64 -d | jq -r 'keys[]'); do
done