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
|
||||
FROM --platform $BUILDPLATFORM alpine:latest AS redis-source
|
||||
FROM --platform=$BUILDPLATFORM alpine:latest AS redis-source
|
||||
|
||||
ARG REDIS_VERSION="7.2.4"
|
||||
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
|
||||
|
||||
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
|
||||
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