feature/04-workout-modification #2
+12
-20
@@ -1,29 +1,21 @@
|
||||
# Staging Docker Compose - Traefik version
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
gravl-frontend:
|
||||
container_name: staging-gravl-frontend-BRANCH_NAME
|
||||
container_name: staging-gravl-frontend-PLACEHOLDER
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.staging-gravl-BRANCH_NAME.rule=Host(`BRANCH_NAME.gravl.homelab.local`)
|
||||
- traefik.http.routers.staging-gravl-BRANCH_NAME.entrypoints=websecure
|
||||
- traefik.http.routers.staging-gravl-BRANCH_NAME.tls=true
|
||||
- traefik.http.services.staging-gravl-BRANCH_NAME.loadbalancer.server.port=80
|
||||
environment:
|
||||
- VITE_API_URL=https://BRANCH_NAME.api.gravl.homelab.local
|
||||
- traefik.http.routers.staging-gravl-PLACEHOLDER.rule=Host(`PLACEHOLDER.gravl.homelab.local`)
|
||||
- traefik.http.routers.staging-gravl-PLACEHOLDER.entrypoints=websecure
|
||||
- traefik.http.routers.staging-gravl-PLACEHOLDER.tls=true
|
||||
- traefik.http.routers.staging-gravl-PLACEHOLDER.service=staging-gravl-PLACEHOLDER
|
||||
- traefik.http.services.staging-gravl-PLACEHOLDER.loadbalancer.server.port=80
|
||||
|
||||
gravl-backend:
|
||||
container_name: staging-gravl-backend-BRANCH_NAME
|
||||
container_name: staging-gravl-backend-PLACEHOLDER
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.staging-gravl-BRANCH_NAME-api.rule=Host(`BRANCH_NAME.api.gravl.homelab.local`)
|
||||
- traefik.http.routers.staging-gravl-BRANCH_NAME-api.entrypoints=websecure
|
||||
- traefik.http.routers.staging-gravl-BRANCH_NAME-api.tls=true
|
||||
- traefik.http.services.staging-gravl-BRANCH_NAME-api.loadbalancer.server.port=3001
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
homelab:
|
||||
external: true
|
||||
- traefik.http.routers.staging-gravl-PLACEHOLDER-api.rule=Host(`PLACEHOLDER.api.gravl.homelab.local`)
|
||||
- traefik.http.routers.staging-gravl-PLACEHOLDER-api.entrypoints=websecure
|
||||
- traefik.http.routers.staging-gravl-PLACEHOLDER-api.tls=true
|
||||
- traefik.http.routers.staging-gravl-PLACEHOLDER-api.service=staging-gravl-PLACEHOLDER-api
|
||||
- traefik.http.services.staging-gravl-PLACEHOLDER-api.loadbalancer.server.port=3001
|
||||
|
||||
@@ -1,61 +1,12 @@
|
||||
#!/bin/bash
|
||||
# Create staging environment for a branch
|
||||
|
||||
BRANCH_NAME=${1:-}
|
||||
if [ -z "$BRANCH_NAME" ]; then
|
||||
echo "Usage: $0 <branch-name>"
|
||||
echo "Example: $0 03-design-polish"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Creating staging for branch: $BRANCH_NAME"
|
||||
|
||||
# Create temp directory
|
||||
BRANCH_NAME=$1
|
||||
if [ -z "$BRANCH_NAME" ]; then echo "Usage: $0 <branch-name>"; exit 1; fi
|
||||
STAGING_DIR=/tmp/staging-$BRANCH_NAME-$(date +%s)
|
||||
mkdir -p $STAGING_DIR
|
||||
|
||||
# Clone repo
|
||||
git clone --branch feature/$BRANCH_NAME /workspace/gravl "$STAGING_DIR" 2>/dev/null || {
|
||||
echo "Failed to clone branch feature/$BRANCH_NAME"
|
||||
exit 1
|
||||
}
|
||||
|
||||
git clone --branch feature/$BRANCH_NAME /workspace/gravl "$STAGING_DIR"
|
||||
cd "$STAGING_DIR"
|
||||
|
||||
# Replace placeholder with actual branch name
|
||||
sed -i "s/BRANCH_NAME/$BRANCH_NAME/g" docker-compose.yml
|
||||
cat docker-compose.staging.yml | sed "s/BRANCH_NAME/$BRANCH_NAME/g" > docker-compose.staging-override.yml
|
||||
|
||||
# Create staging DB volume
|
||||
sed -i "s/PLACEHOLDER/$BRANCH_NAME/g" docker-compose.staging.yml
|
||||
mkdir -p .staging
|
||||
|
||||
# Start services
|
||||
echo "Starting staging containers..."
|
||||
docker compose -f docker-compose.yml -f docker-compose.staging-override.yml up -d
|
||||
|
||||
# Register metadata
|
||||
cat > ".staging/$BRANCH_NAME.json" << EOF
|
||||
{
|
||||
"branch": "$BRANCH_NAME",
|
||||
"featureBranch": "feature/$BRANCH_NAME",
|
||||
"stagingUrl": "https://$BRANCH_NAME.gravl.homelab.local",
|
||||
"apiUrl": "https://$BRANCH_NAME.api.gravl.homelab.local",
|
||||
"created": "$(date -Iseconds)",
|
||||
"status": "active",
|
||||
"containers": {
|
||||
"frontend": "staging-gravl-frontend-$BRANCH_NAME",
|
||||
"backend": "staging-gravl-backend-$BRANCH_NAME",
|
||||
"db": "staging-gravl-db-$BRANCH_NAME"
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
echo ""
|
||||
echo "✅ Staging environment ready!"
|
||||
echo ""
|
||||
echo "🌐 URL: https://$BRANCH_NAME.gravl.homelab.local"
|
||||
echo "📡 API: https://$BRANCH_NAME.api.gravl.homelab.local"
|
||||
echo ""
|
||||
echo "Make sure to add to your /etc/hosts:"
|
||||
echo " 192.168.1.XXX $BRANCH_NAME.gravl.homelab.local $BRANCH_NAME.api.gravl.homelab.local"
|
||||
echo ""
|
||||
docker compose -f docker-compose.yml -f docker-compose.staging.yml up -d --build
|
||||
echo "{\"branch\":\"$BRANCH_NAME\",\"url\":\"https://$BRANCH_NAME.gravl.homelab.local\"}" > .staging/$BRANCH_NAME.json
|
||||
echo "✅ Staging: https://$BRANCH_NAME.gravl.homelab.local"
|
||||
|
||||
Reference in New Issue
Block a user