Add Docker setup with PG and MCP servers #3
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Docker | |
| on: | |
| push: | |
| branches: [main] | |
| paths: | |
| - 'Dockerfile' | |
| - 'docker-entrypoint.sh' | |
| - '.dockerignore' | |
| - 'sidemantic/**' | |
| - 'pyproject.toml' | |
| pull_request: | |
| paths: | |
| - 'Dockerfile' | |
| - 'docker-entrypoint.sh' | |
| - '.dockerignore' | |
| - 'sidemantic/**' | |
| - 'pyproject.toml' | |
| jobs: | |
| docker: | |
| name: Docker build and test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build image | |
| run: docker build -t sidemantic . | |
| - name: Start server (demo mode) | |
| run: | | |
| docker run -d --name sidemantic-test -p 5433:5433 sidemantic --demo | |
| for i in $(seq 1 30); do | |
| if docker logs sidemantic-test 2>&1 | grep -q "Listening on"; then | |
| echo "Server ready" | |
| break | |
| fi | |
| echo "Waiting for server... ($i/30)" | |
| sleep 1 | |
| done | |
| - name: Verify server logs | |
| run: docker logs sidemantic-test 2>&1 | |
| - name: Install psql | |
| run: sudo apt-get update && sudo apt-get install -y postgresql-client | |
| - name: Test connection | |
| run: PGPASSWORD=any psql -h localhost -p 5433 -U any -d sidemantic -c "SELECT 1 AS test" | |
| - name: Test metric aggregation (products) | |
| run: | | |
| PGPASSWORD=any psql -h localhost -p 5433 -U any -d sidemantic -c \ | |
| "SELECT category, product_count, avg_price, total_catalog_value FROM semantic_layer.products GROUP BY category ORDER BY category" | |
| - name: Test metric aggregation (customers) | |
| run: | | |
| PGPASSWORD=any psql -h localhost -p 5433 -U any -d sidemantic -c \ | |
| "SELECT region, customer_count FROM semantic_layer.customers GROUP BY region ORDER BY region" | |
| - name: Stop server | |
| if: always() | |
| run: docker stop sidemantic-test || true |