62 lines
1.7 KiB
Bash
Executable File
62 lines
1.7 KiB
Bash
Executable File
#!/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
|
|
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
|
|
}
|
|
|
|
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
|
|
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 ""
|