Use catalog as source of truth for app deployment
This commit is contained in:
+13
-68
@@ -10,12 +10,10 @@ if [ -z "$APP_ID" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
BASE_DIR="/opt/appfactory"
|
BASE_DIR="/opt/appfactory"
|
||||||
WORKSPACE_DIR="$HOME/workspace"
|
WORKSPACE_DIR="/home/jiri/workspace"
|
||||||
|
|
||||||
CADDY_FILE="$BASE_DIR/gateway/Caddyfile"
|
|
||||||
CATALOG_FILE="$BASE_DIR/apps/catalog.yml"
|
|
||||||
|
|
||||||
APP_SOURCE_DIR="$WORKSPACE_DIR/$APP_ID"
|
APP_SOURCE_DIR="$WORKSPACE_DIR/$APP_ID"
|
||||||
|
CATALOG_FILE="$BASE_DIR/apps/catalog.yml"
|
||||||
|
|
||||||
if [ ! -d "$APP_SOURCE_DIR" ]; then
|
if [ ! -d "$APP_SOURCE_DIR" ]; then
|
||||||
echo "Missing app source: $APP_SOURCE_DIR"
|
echo "Missing app source: $APP_SOURCE_DIR"
|
||||||
@@ -25,68 +23,12 @@ fi
|
|||||||
echo "Building Docker image..."
|
echo "Building Docker image..."
|
||||||
docker build -t "$APP_ID:latest" "$APP_SOURCE_DIR"
|
docker build -t "$APP_ID:latest" "$APP_SOURCE_DIR"
|
||||||
|
|
||||||
COMPOSE_FILE="$BASE_DIR/deploy/apps-compose.yml"
|
if ! grep -q "^- id: NEVER_MATCH" "$CATALOG_FILE" 2>/dev/null; then
|
||||||
|
true
|
||||||
mkdir -p "$BASE_DIR/deploy/generated"
|
|
||||||
|
|
||||||
if [ ! -f "$COMPOSE_FILE" ]; then
|
|
||||||
cat > "$COMPOSE_FILE" <<EOF
|
|
||||||
services:
|
|
||||||
EOF
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if grep -q "container_name: $APP_ID" "$COMPOSE_FILE"; then
|
|
||||||
echo "App already registered in compose."
|
|
||||||
else
|
|
||||||
|
|
||||||
cat >> "$COMPOSE_FILE" <<EOF
|
|
||||||
|
|
||||||
$APP_ID:
|
|
||||||
image: $APP_ID:latest
|
|
||||||
container_name: $APP_ID
|
|
||||||
restart: unless-stopped
|
|
||||||
environment:
|
|
||||||
- APP_NAME=$APP_ID
|
|
||||||
- ROOT_PATH=/apps/$APP_ID
|
|
||||||
|
|
||||||
networks:
|
|
||||||
- appfactory
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
#if ! grep -q "apps/$APP_ID" "$BASE_DIR/gateway/Caddyfile"; then
|
|
||||||
#
|
|
||||||
#TMP_FILE=$(mktemp)
|
|
||||||
#
|
|
||||||
#sed '$d' "$CADDY_FILE" > "$TMP_FILE"
|
|
||||||
#
|
|
||||||
#cat >> "$TMP_FILE" <<EOF
|
|
||||||
#
|
|
||||||
# handle_path /apps/$APP_ID/* {
|
|
||||||
# reverse_proxy $APP_ID:8000
|
|
||||||
# }
|
|
||||||
#
|
|
||||||
#}
|
|
||||||
#EOF
|
|
||||||
#
|
|
||||||
#mv "$TMP_FILE" "$CADDY_FILE"
|
|
||||||
#
|
|
||||||
#fi
|
|
||||||
|
|
||||||
echo "Restarting stack..."
|
|
||||||
|
|
||||||
cd "$BASE_DIR/deploy"
|
|
||||||
|
|
||||||
docker compose -f docker-compose.yml -f apps-compose.yml up -d
|
|
||||||
|
|
||||||
docker restart appfactory-caddy
|
|
||||||
|
|
||||||
CATALOG_FILE="$BASE_DIR/apps/catalog.yml"
|
|
||||||
|
|
||||||
if ! grep -q "id: $APP_ID" "$CATALOG_FILE"; then
|
if ! grep -q "id: $APP_ID" "$CATALOG_FILE"; then
|
||||||
cat >> "$CATALOG_FILE" <<EOF
|
cat >> "$CATALOG_FILE" <<EOF_APP
|
||||||
|
|
||||||
- id: $APP_ID
|
- id: $APP_ID
|
||||||
name: $APP_ID
|
name: $APP_ID
|
||||||
@@ -96,14 +38,17 @@ cat >> "$CATALOG_FILE" <<EOF
|
|||||||
docs: /apps/$APP_ID/docs
|
docs: /apps/$APP_ID/docs
|
||||||
health: /apps/$APP_ID/health
|
health: /apps/$APP_ID/health
|
||||||
status: deployed
|
status: deployed
|
||||||
EOF
|
EOF_APP
|
||||||
fi
|
fi
|
||||||
|
|
||||||
"$HOME/workspace/appfactory-tools/scripts/generate-caddyfile.sh"
|
/home/jiri/workspace/appfactory-tools/scripts/generate-apps-compose.sh
|
||||||
"$HOME/workspace/appfactory-tools/scripts/generate-apps-page.sh"
|
/home/jiri/workspace/appfactory-tools/scripts/generate-caddyfile.sh
|
||||||
|
/home/jiri/workspace/appfactory-tools/scripts/generate-apps-page.sh
|
||||||
|
|
||||||
|
cd "$BASE_DIR/deploy"
|
||||||
|
docker compose -f docker-compose.yml -f apps-compose.yml up -d --force-recreate "$APP_ID"
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "DONE"
|
echo "DONE"
|
||||||
echo ""
|
|
||||||
echo "Open:"
|
echo "Open:"
|
||||||
echo "http://SERVER_IP/apps/$APP_ID/docs"
|
echo "http://192.168.66.130/apps/$APP_ID/docs"
|
||||||
|
|||||||
Executable
+29
@@ -0,0 +1,29 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
BASE_DIR="/opt/appfactory"
|
||||||
|
CATALOG_FILE="$BASE_DIR/apps/catalog.yml"
|
||||||
|
COMPOSE_FILE="$BASE_DIR/deploy/apps-compose.yml"
|
||||||
|
|
||||||
|
cat > "$COMPOSE_FILE" <<'EOF_COMPOSE'
|
||||||
|
services:
|
||||||
|
EOF_COMPOSE
|
||||||
|
|
||||||
|
awk '
|
||||||
|
/- id:/ { app=$3 }
|
||||||
|
/language:/ { lang=$2 }
|
||||||
|
/status:/ {
|
||||||
|
if (app != "") {
|
||||||
|
print " " app ":"
|
||||||
|
print " image: " app ":latest"
|
||||||
|
print " container_name: " app
|
||||||
|
print " restart: unless-stopped"
|
||||||
|
print " environment:"
|
||||||
|
print " - APP_NAME=" app
|
||||||
|
print " - ROOT_PATH=/apps/" app
|
||||||
|
print " networks:"
|
||||||
|
print " - appfactory"
|
||||||
|
print ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
' "$CATALOG_FILE" >> "$COMPOSE_FILE"
|
||||||
@@ -5,7 +5,7 @@ BASE_DIR="/opt/appfactory"
|
|||||||
CATALOG_FILE="$BASE_DIR/apps/catalog.yml"
|
CATALOG_FILE="$BASE_DIR/apps/catalog.yml"
|
||||||
CADDY_FILE="$BASE_DIR/gateway/Caddyfile"
|
CADDY_FILE="$BASE_DIR/gateway/Caddyfile"
|
||||||
|
|
||||||
cat > "$CADDY_FILE" <<'EOF'
|
cat > "$CADDY_FILE" <<'EOF_CADDY'
|
||||||
:80 {
|
:80 {
|
||||||
handle /health {
|
handle /health {
|
||||||
respond "AppFactory OK" 200
|
respond "AppFactory OK" 200
|
||||||
@@ -22,13 +22,18 @@ cat > "$CADDY_FILE" <<'EOF'
|
|||||||
file_server
|
file_server
|
||||||
}
|
}
|
||||||
|
|
||||||
EOF
|
EOF_CADDY
|
||||||
|
|
||||||
awk '
|
awk '
|
||||||
/- id:/ { print " handle_path /apps/" $3 "/* {\n reverse_proxy " $3 ":8000\n }\n" }
|
/- id:/ {
|
||||||
|
print " handle_path /apps/" $3 "/* {"
|
||||||
|
print " reverse_proxy " $3 ":8000"
|
||||||
|
print " }"
|
||||||
|
print ""
|
||||||
|
}
|
||||||
' "$CATALOG_FILE" >> "$CADDY_FILE"
|
' "$CATALOG_FILE" >> "$CADDY_FILE"
|
||||||
|
|
||||||
cat >> "$CADDY_FILE" <<'EOF'
|
cat >> "$CADDY_FILE" <<'EOF_CADDY'
|
||||||
handle_path /webhook/* {
|
handle_path /webhook/* {
|
||||||
reverse_proxy appfactory-webhook:9000
|
reverse_proxy appfactory-webhook:9000
|
||||||
}
|
}
|
||||||
@@ -41,6 +46,6 @@ cat >> "$CADDY_FILE" <<'EOF'
|
|||||||
respond "AppFactory gateway is running" 200
|
respond "AppFactory gateway is running" 200
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF_CADDY
|
||||||
|
|
||||||
docker exec appfactory-caddy caddy reload --config /etc/caddy/Caddyfile || docker restart appfactory-caddy
|
docker exec appfactory-caddy caddy reload --config /etc/caddy/Caddyfile
|
||||||
|
|||||||
Reference in New Issue
Block a user