# Deployment URL: /docs/building/deployment/ Section: deployment Tags: deployment, hosting, ci-cd -------------------------------------------------------------------------------- Deploy Your Site Bengal generates static HTML, CSS, and JavaScript files. This means you can host your site anywhere that serves static files (e.g., GitHub Pages, Netlify, Vercel, AWS S3, Nginx). The Production Build When you are ready to ship, run the build command: bengal build --environment production This command: Loads configuration from config/environments/production.yaml (if it exists) Minifies assets (if enabled) 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 warnings (e.g., broken links). Highly Recommended for CI/CD. --clean-output Cleans the public/ directory before building. Recommended to avoid stale files. --verbose Shows detailed logs. Useful for debugging CI failures. Example full command for CI: bengal build --environment production --strict --clean-output GitHub Pages Deploy using GitHub Actions. Create .github/workflows/deploy.yml: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43name: 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 - 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: 1 2 3 4 5 6[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. Environment Variables Bengal allows you to inject environment variables into your configuration using {{ env.VAR_NAME }} syntax in your YAML/TOML config files. config/environments/production.yaml: 1 2 3params: api_key: "{{ env.API_KEY }}" analytics_id: "{{ env.ANALYTICS_ID }}" Then set API_KEY and ANALYTICS_ID in your hosting provider's dashboard. 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 broken links or missing templates. Check config/environments/production.yaml: Ensure your baseurl is set to your production domain. 1 2 3# config/environments/production.yaml site: baseurl: "https://example.com" Info Seealso Automate with GitHub Actions — Full CI/CD tutorial Configuration — Environment-specific settings Performance — Optimize build times -------------------------------------------------------------------------------- Metadata: - Author: lbliii - Word Count: 421 - Reading Time: 2 minutes