mmm
This commit is contained in:
45
.drone.yml
Normal file
45
.drone.yml
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
kind: pipeline
|
||||||
|
name: default
|
||||||
|
trigger:
|
||||||
|
branch:
|
||||||
|
- main
|
||||||
|
event:
|
||||||
|
- push
|
||||||
|
workspace:
|
||||||
|
path: /drone/src
|
||||||
|
|
||||||
|
environment:
|
||||||
|
REPO_NAME: framework-scheduler
|
||||||
|
IMAGE_NAME: framework-scheduler
|
||||||
|
SERVICE_NAME: service-demo
|
||||||
|
APP_NAME: frameworkscheduler-app
|
||||||
|
DOCKER_REGISTRY_URL: registry.format.hu
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: create framework-scheduler image
|
||||||
|
image: plugins/docker
|
||||||
|
commands:
|
||||||
|
- export DOCKER_CLI_EXPERIMENTAL=enabled
|
||||||
|
- docker build --platform linux/amd64 --tag $${DOCKER_REGISTRY_URL}/$${IMAGE_NAME}/linux/amd64:latest --build-arg BUILDPLATFORM=amd64 -f Dockerfile .
|
||||||
|
- docker build --platform linux/arm64/v8 --tag $${DOCKER_REGISTRY_URL}/$${IMAGE_NAME}/linux/arm64:latest --build-arg BUILDPLATFORM=arm64 -f Dockerfile .
|
||||||
|
- docker push $${DOCKER_REGISTRY_URL}/$${IMAGE_NAME}/linux/amd64:latest
|
||||||
|
- docker push $${DOCKER_REGISTRY_URL}/$${IMAGE_NAME}/linux/arm64:latest
|
||||||
|
- |
|
||||||
|
docker manifest create $${DOCKER_REGISTRY_URL}/$${IMAGE_NAME}:latest \
|
||||||
|
$${DOCKER_REGISTRY_URL}/$${IMAGE_NAME}/linux/amd64:latest \
|
||||||
|
$${DOCKER_REGISTRY_URL}/$${IMAGE_NAME}/linux/arm64:latest
|
||||||
|
- docker manifest annotate --arch arm64 --variant v8 $${DOCKER_REGISTRY_URL}/$${IMAGE_NAME}:latest $${DOCKER_REGISTRY_URL}/$${IMAGE_NAME}/linux/arm64:latest
|
||||||
|
- docker manifest annotate --arch amd64 $${DOCKER_REGISTRY_URL}/$${IMAGE_NAME}:latest $${DOCKER_REGISTRY_URL}/$${IMAGE_NAME}/linux/amd64:latest
|
||||||
|
- docker manifest push $${DOCKER_REGISTRY_URL}/$${IMAGE_NAME}:latest
|
||||||
|
|
||||||
|
when:
|
||||||
|
branch:
|
||||||
|
- master
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
- name: cache
|
||||||
|
temp: {}
|
||||||
|
|
||||||
|
- name: docker
|
||||||
|
host:
|
||||||
|
path: /var/run/docker.sock
|
@@ -1,5 +1,5 @@
|
|||||||
ARG BUILDPLATFORM
|
ARG BUILDPLATFORM
|
||||||
FROM --platform $BUILDPLATFORM alpine:latest AS redis-source
|
FROM --platform=$BUILDPLATFORM alpine:latest AS redis-source
|
||||||
|
|
||||||
ARG REDIS_VERSION="7.2.4"
|
ARG REDIS_VERSION="7.2.4"
|
||||||
ARG REDIS_DOWNLOAD_URL="http://download.redis.io/releases/redis-${REDIS_VERSION}.tar.gz"
|
ARG REDIS_DOWNLOAD_URL="http://download.redis.io/releases/redis-${REDIS_VERSION}.tar.gz"
|
||||||
@@ -11,7 +11,7 @@ RUN wget -O redis.tar.gz "$REDIS_DOWNLOAD_URL" && \
|
|||||||
make BUILD_TLS=yes MALLOC=libc redis-cli
|
make BUILD_TLS=yes MALLOC=libc redis-cli
|
||||||
|
|
||||||
ARG BUILDPLATFORM
|
ARG BUILDPLATFORM
|
||||||
FROM --platform $BUILDPLATFORM alpine:latest
|
FROM --platform=$BUILDPLATFORM alpine:latest
|
||||||
|
|
||||||
COPY --from=redis-source /usr/src/redis/src/redis-cli /usr/bin/redis-cli
|
COPY --from=redis-source /usr/src/redis/src/redis-cli /usr/bin/redis-cli
|
||||||
RUN chmod +x /usr/bin/redis-cli
|
RUN chmod +x /usr/bin/redis-cli
|
||||||
|
13
config/image-version-tags
Normal file
13
config/image-version-tags
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"POSTGRES_VERSION": "16-alpine",
|
||||||
|
"METADATA_SERVER_VERSION": "0.0.0",
|
||||||
|
"UTILITY_TRAIT_CENTER": "0.0.0",
|
||||||
|
"UTC_SCHEDULER_VERSION": "0.0.0",
|
||||||
|
"MARKETPLACE_VERSION": "0.0.0",
|
||||||
|
"STICKERBOOK_VERSION": "0.0.0",
|
||||||
|
"SPECS_UPLOADER_VERSION": "0.0.0",
|
||||||
|
"VAULT_VERSION": "0.0.0",
|
||||||
|
"LEADERBOARD_VERSION": "0.0.0",
|
||||||
|
"FIREWALL_VERSION": "latest",
|
||||||
|
"REDIS_VERSION": "latest"
|
||||||
|
}
|
123
scripts/scheduler/entrypoint.sh
Normal file
123
scripts/scheduler/entrypoint.sh
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
cd /scripts
|
||||||
|
|
||||||
|
DOCKER_REGISTRY_URL=$DOCKER_REGISTRY_URL
|
||||||
|
USER_INIT_PATH=$USER_INIT_PATH
|
||||||
|
REDIS_SERVER=$REDIS_SERVER
|
||||||
|
REDIS_PORT=$REDIS_PORT
|
||||||
|
|
||||||
|
SOURCE=$SOURCE
|
||||||
|
SMARTHOST_PROXY_PATH=$SMARTHOST_PROXY_PATH
|
||||||
|
|
||||||
|
GIT_URL=$GIT_URL
|
||||||
|
TOKEN=$TOKEN
|
||||||
|
REPO=$REPO
|
||||||
|
|
||||||
|
MAIN_DOMAIN=$MAIN_DOMAIN
|
||||||
|
VERSIONS_CONFIG_FILE=$VERSIONS_CONFIG_FILE
|
||||||
|
PROXY_DELAY=$PROXY_DELAY
|
||||||
|
|
||||||
|
|
||||||
|
VERSIONS_CONFIG_FILE=$VERSIONS_CONFIG_FILE
|
||||||
|
|
||||||
|
if [ -z "$CURL_SLEEP_SHORT" ]; then
|
||||||
|
CURL_SLEEP_SHORT=10
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$CURL_RETRIES" ]; then
|
||||||
|
CURL_RETRIES=360
|
||||||
|
fi
|
||||||
|
|
||||||
|
check_redis_availability() {
|
||||||
|
REDIS_SERVER="$1"
|
||||||
|
REDIS_PORT="$2"
|
||||||
|
CURL_RETRIES="$3"
|
||||||
|
CURL_SLEEP_SHORT="$4"
|
||||||
|
|
||||||
|
for retries in $(seq 0 "$((CURL_RETRIES + 1))"); do
|
||||||
|
if [ "$retries" -le "$CURL_RETRIES" ]; then
|
||||||
|
CHECK_REDIS_SERVER="redis-cli -h '$REDIS_SERVER' -p '$REDIS_PORT' PING"
|
||||||
|
REDIS_RESPONSE="$(eval "$CHECK_REDIS_SERVER")"
|
||||||
|
|
||||||
|
# echo "$REDIS_SERVER server's reply to PING: $REDIS_RESPONSE"
|
||||||
|
|
||||||
|
if [ "$REDIS_RESPONSE" = "PONG" ]; then
|
||||||
|
echo "Connected to $REDIS_SERVER:$REDIS_PORT"
|
||||||
|
break
|
||||||
|
else
|
||||||
|
sleep "$CURL_SLEEP_SHORT"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Couldn't reach server at $REDIS_SERVER:$REDIS_PORT after [$CURL_RETRIES] retries, exiting."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
###
|
||||||
|
|
||||||
|
# CHECKING SYSTEM ENVIRONMENTS
|
||||||
|
## DOCKER VARIABLES
|
||||||
|
## VERSION CHECK
|
||||||
|
## FILESYSTEM VARIABLES
|
||||||
|
## PORTS VARIABLES
|
||||||
|
|
||||||
|
# REDIS_SERVER EXISTENCE
|
||||||
|
## REDIS_PORT EXISTENCE
|
||||||
|
## VERSION CHECK
|
||||||
|
|
||||||
|
# WEBSERVER EXISTENCE
|
||||||
|
## WEBSERVER_PORT EXISTENCE
|
||||||
|
## VERSION CHECK
|
||||||
|
|
||||||
|
# SUMMARY
|
||||||
|
|
||||||
|
|
||||||
|
# poll redis infinitely for scheduler jobs
|
||||||
|
check_redis_availability $REDIS_SERVER $REDIS_PORT $CURL_RETRIES $CURL_SLEEP_SHORT
|
||||||
|
echo "Scheduler initialized, starting listening for deploy events"
|
||||||
|
while true; do
|
||||||
|
|
||||||
|
IDS=""
|
||||||
|
|
||||||
|
# GET DEPLOYMENT IDs FROM generate key
|
||||||
|
IDS=$(redis-cli -h $REDIS_SERVER -p $REDIS_PORT SMEMBERS generate)
|
||||||
|
if [[ "$IDS" != "0" && "$IDS" != "" ]]; then
|
||||||
|
|
||||||
|
# PROCESSING IDS
|
||||||
|
for I in $(echo $IDS); do
|
||||||
|
|
||||||
|
### READ DATA FROM REDIS
|
||||||
|
JSON=$(redis-cli -h $REDIS_SERVER -p $REDIS_PORT GET $I | base64 -d)
|
||||||
|
DOMAIN=$(echo "$JSON" | jq -r '.DOMAIN')
|
||||||
|
TYPE=$(echo "$JSON" | jq -r '.TYPE')
|
||||||
|
ACTION=$(echo "$JSON" | jq -r '.ACTION')
|
||||||
|
PAYLOAD=$(echo "$JSON" | jq -r '.PAYLOAD')
|
||||||
|
|
||||||
|
JSON_TARGET=$(echo $JSON | jq -rc .'STATUS="0"' | base64 -w0);
|
||||||
|
redis-cli -h $REDIS_SERVER -p $REDIS_PORT SET $I "$JSON_TARGET";
|
||||||
|
|
||||||
|
if [ "$TYPE" == "DOMAIN" ]; then
|
||||||
|
/scripts/zone2git.sh "$I" "$DOMAIN" "$ACTION" "$PAYLOAD" "$GIT_URL" "$TOKEN" "$REPO";
|
||||||
|
|
||||||
|
elif [ "$TYPE" == "VPN" ]; then
|
||||||
|
/scripts/create_vpn.sh "$I" "$DOMAIN" "$ACTION" "$PAYLOAD" "$REDIS_SERVER" "$REDIS_PORT" "$NAMESPACE" "$KUBERNETES" "$KUBERNETES_ENVIRONMENT" "$USER_INIT_PATH" "$VERSIONS_CONFIG_FILE" "$DOCKER_REGISTRY_URL" "$SMARTHOST_PROXY_PATH" "$MAIN_DOMAIN" "$SOURCE" "$PROXY_DELAY";
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$?" == "0" ]; then
|
||||||
|
JSON_TARGET=$(echo $JSON | jq -rc .'STATUS="1"' | base64 -w0);
|
||||||
|
else
|
||||||
|
JSON_TARGET=$(echo $JSON | jq -rc .'STATUS="2"' | base64 -w0);
|
||||||
|
fi
|
||||||
|
|
||||||
|
redis-cli -h $REDIS_SERVER -p $REDIS_PORT SET $I "$JSON_TARGET";
|
||||||
|
|
||||||
|
# MOVE ID from generate into generated
|
||||||
|
redis-cli -h $REDIS_SERVER -p $REDIS_PORT SREM generate $I
|
||||||
|
redis-cli -h $REDIS_SERVER -p $REDIS_PORT SADD generated $I
|
||||||
|
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep 1
|
||||||
|
done
|
Reference in New Issue
Block a user