# Deployment URL: /bengal/docs/ship/deployment/ Section: deployment Tags: deployment, hosting, ci-cd, persona-operator -------------------------------------------------------------------------------- Deploy Your Site Ship static HTML from Bengal to GitHub Pages, Netlify, Vercel, or any host that serves files from a directory. Note Note Do I need this? Yes when you are ready to publish beyond bengal serve. Skip until you have content to ship — local preview does not need deployment config. For CI wiring, also see GitHub Actions tutorial. Bengal generates static HTML, CSS, and JavaScript. Run a production build, upload the public/ directory, and point your host at it. The Production Build When you are ready to ship, run the production build: bengal build --environment production --strict --clean-output Output goes to public/. Use --fast for CI builds when you do not need verbose timing output. This command: Loads configuration from config/environments/production.yaml (if it exists) Minifies HTML output (enabled by default) Generates the public/ directory with your complete site Common Build Flags Flag Description Use Case --environment production Loads production config overrides. Always use for shipping. --strict Fails the build on template errors. Highly Recommended for CI/CD. --clean-output Cleans the public/ directory before building. Recommended to avoid stale files. --fast Maximum performance (quiet output, full parallelism). Fast CI builds. --verbose Shows detailed build output (phase timing, stats). Useful for debugging CI failures. Example full command for CI matches the snippet above — add --fast when you want maximum CI throughput with quiet output. GitHub Pages Deploy using GitHub Actions. Create .github/workflows/deploy.yml: name: Deploy to GitHub Pages on: push: branches: [main] permissions: contents: read pages: write id-token: write jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.14' - name: Install Bengal run: pip install bengal - name: Build Site run: bengal build --environment production --strict --clean-output - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: path: './public' deploy: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest needs: build steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4 Netlify Create a netlify.toml in your repository root: [build] publish = "public" command = "bengal build --environment production" [build.environment] PYTHON_VERSION = "3.14" Vercel Configure your project: Build Command: bengal build --environment production Output Directory: public Ensure your requirements.txt includes bengal. Automatic Platform Detection Bengal auto-detects your deployment platform and configures baseurl automatically: Platform Detection Baseurl Source GitHub Pages GITHUB_ACTIONS=true Inferred from GITHUB_REPOSITORY Netlify NETLIFY=true URL or DEPLOY_PRIME_URL Vercel VERCEL=true VERCEL_URL You can override auto-detection with the BENGAL_BASEURL environment variable: BENGAL_BASEURL="https://custom-domain.com" bengal build --environment production Pre-Deployment Checklist Before you merge to main or deploy: Run bengal config doctor: Checks for common configuration issues. Run bengal build --strict locally: Ensures no template errors. Run bengal check: Runs health checks on your site content. Check config/environments/production.yaml: Ensure your baseurl is set to your production domain. # config/environments/production.yaml site: baseurl: "https://example.com" Info Seealso Configuration — environment-specific settings Multi-Variant Builds — OSS vs Enterprise, brand variants Performance — optimize build times Validation — health checks before you ship -------------------------------------------------------------------------------- Metadata: - Author: lbliii - Word Count: 481 - Reading Time: 2 minutes