{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "Cecil - Deploy",
  "home_page_url": "https://cecil-945.pages.dev/documentation/deploy/",
  "feed_url": "https://cecil-945.pages.dev/documentation/deploy/feed.json",
  "description": "Deploy your static website to Jamstack platforms, through continuous deployment or to a static hosting.",
  "icon": "https://cecil-945.pages.dev/favicon.7ff4b89eec6dad139a7d2d6561543285.png",
  "favicon": "https://cecil-945.pages.dev/thumbnails/64x/favicon.7ff4b89eec6dad139a7d2d6561543285.png",
  "language": "en",
  "items": [
    {
      "id": "https://cecil-945.pages.dev/documentation/deploy/jamstack-platforms/",
      "url": "https://cecil-945.pages.dev/documentation/deploy/jamstack-platforms/",
      "title": "Jamstack platforms",
      "summary": "Netlify, Vercel, statichost, Cloudflare Pages, Render.",
      "date_published": "2020-12-19T00:00:00+00:00",
      "date_modified": "2026-10-14T00:00:00+00:00","content_text": "Jamstack platforms\nJamstack platforms can build and deploy your Cecil site automatically on each push to your Git repository.\nNetlify\n\nA powerful serverless platform with an intuitive git-based workflow. Automated deployments, shareable previews, and much more.\n\n➡️ https:\/\/www.netlify.com\nnetlify.toml:\n[build]\n  publish = \"_site\"\n  command = \"curl -sSOL https:\/\/cecil.app\/build.sh &amp;&amp; bash .\/build.sh\"\n[context.production.environment]\n  CECIL_ENV = \"production\"\n[context.deploy-preview.environment]\n  CECIL_ENV = \"preview\"\nOfficial documentation\nVercel\n\nVercel combines the best developer experience with an obsessive focus on end-user performance.\n\n➡️ https:\/\/vercel.com\nvercel.json:\n{\n  \"buildCommand\": \"curl -sSOL https:\/\/cecil.app\/build.sh &amp;&amp; bash .\/build.sh\",\n  \"outputDirectory\": \"_site\"\n}\nOfficial documentation\nstatichost\n\nModern static site hosting with European servers and absolutely no personal data collection!\n\n➡️ https:\/\/statichost.eu\nstatichost.yml:\nimage: wordpress:cli-php8.4\ncommand: curl -sSOL https:\/\/cecil.app\/build.sh &amp;&amp; bash .\/build.sh\npublic: _site\nOfficial documentation\nCloudflare Pages\nCloudflare Pages doesn’t provide PHP: the build script uses the Cecil standalone binary instead, and installs themes from composer.lock.\n\nCloudflare Pages is a JAMstack platform for frontend developers to collaborate and deploy websites.\n\n➡️ https:\/\/pages.cloudflare.com\nBuild configurations:\n\nFramework preset: None\nBuild command: curl -sSOL https:\/\/cecil.app\/build.sh &amp;&amp; bash .\/build.sh\nBuild output directory: _site\n\nOfficial documentation\nRender\nRender only provides PHP 7.3: the build script uses the Cecil standalone binary instead, and installs themes from composer.lock.\n\nRender is a unified cloud to build and run all your apps and websites with free TLS certificates, global CDN, private networks and auto deploys from Git.\n\n➡️ https:\/\/render.com\nrender.yaml:\npreviewsEnabled: true\nservices:\n  - type: web\n    name: Cecil\n    env: static\n    buildCommand: curl -sSOL https:\/\/cecil.app\/build.sh &amp;&amp; bash .\/build.sh\n    staticPublishPath: _site\n    pullRequestPreviewsEnabled: true\nOfficial documentation",
      "content_html": "<h1>Jamstack platforms</h1>\n<p>Jamstack platforms can build and deploy your Cecil site automatically on each push to your Git repository.</p>\n<h2 id=\"netlify\">Netlify</h2>\n<blockquote>\n<p>A powerful serverless platform with an intuitive git-based workflow. Automated deployments, shareable previews, and much more.</p>\n</blockquote>\n<p>➡️ <a href=\"https://www.netlify.com\" target=\"_blank\" rel=\"noopener noreferrer\">https://www.netlify.com</a></p>\n<p><em>netlify.toml</em>:</p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">[build]\n  publish = <span class=\"hljs-string\">\"_site\"</span>\n  <span class=\"hljs-built_in\">command</span> = <span class=\"hljs-string\">\"curl -sSOL https://cecil.app/build.sh &amp;&amp; bash ./build.sh\"</span>\n[context.production.environment]\n  CECIL_ENV = <span class=\"hljs-string\">\"production\"</span>\n[context.deploy-preview.environment]\n  CECIL_ENV = <span class=\"hljs-string\">\"preview\"</span></code></pre>\n<p><a href=\"https://www.netlify.com/docs/continuous-deployment/\" target=\"_blank\" rel=\"noopener noreferrer\">Official documentation</a></p>\n<h2 id=\"vercel\">Vercel</h2>\n<blockquote>\n<p>Vercel combines the best developer experience with an obsessive focus on end-user performance.</p>\n</blockquote>\n<p>➡️ <a href=\"https://vercel.com\" target=\"_blank\" rel=\"noopener noreferrer\">https://vercel.com</a></p>\n<p><em>vercel.json</em>:</p>\n<pre><code class=\"language-json hljs json\" translate=\"no\">{\n  <span class=\"hljs-attr\">\"buildCommand\"</span>: <span class=\"hljs-string\">\"curl -sSOL https://cecil.app/build.sh &amp;&amp; bash ./build.sh\"</span>,\n  <span class=\"hljs-attr\">\"outputDirectory\"</span>: <span class=\"hljs-string\">\"_site\"</span>\n}</code></pre>\n<p><a href=\"https://vercel.com/docs/concepts/deployments/build-step#build-command\" target=\"_blank\" rel=\"noopener noreferrer\">Official documentation</a></p>\n<h2 id=\"statichost\">statichost</h2>\n<blockquote>\n<p>Modern static site hosting with European servers and absolutely no personal data collection!</p>\n</blockquote>\n<p>➡️ <a href=\"https://statichost.eu\" target=\"_blank\" rel=\"noopener noreferrer\">https://statichost.eu</a></p>\n<p><em>statichost.yml</em>:</p>\n<pre><code class=\"language-yml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">image:</span> <span class=\"hljs-string\">wordpress:cli-php8.4</span>\n<span class=\"hljs-attr\">command:</span> <span class=\"hljs-string\">curl</span> <span class=\"hljs-string\">-sSOL</span> <span class=\"hljs-string\">https://cecil.app/build.sh</span> <span class=\"hljs-string\">&amp;&amp;</span> <span class=\"hljs-string\">bash</span> <span class=\"hljs-string\">./build.sh</span>\n<span class=\"hljs-attr\">public:</span> <span class=\"hljs-string\">_site</span></code></pre>\n<p><a href=\"https://www.statichost.eu/docs/\" target=\"_blank\" rel=\"noopener noreferrer\">Official documentation</a></p>\n<h2 id=\"cloudflare-pages\">Cloudflare Pages</h2>\n<aside class=\"note note-info\"><p>Cloudflare Pages doesn’t provide PHP: the build script uses the Cecil <a href=\"../getting-started/2-installation.md#standalone-binary\">standalone binary</a> instead, and installs themes from <code translate=\"no\">composer.lock</code>.</p></aside>\n<blockquote>\n<p>Cloudflare Pages is a JAMstack platform for frontend developers to collaborate and deploy websites.</p>\n</blockquote>\n<p>➡️ <a href=\"https://pages.cloudflare.com\" target=\"_blank\" rel=\"noopener noreferrer\">https://pages.cloudflare.com</a></p>\n<p>Build configurations:</p>\n<ul>\n<li>Framework preset: <code translate=\"no\">None</code></li>\n<li>Build command: <code translate=\"no\">curl -sSOL https://cecil.app/build.sh &amp;&amp; bash ./build.sh</code></li>\n<li>Build output directory: <code translate=\"no\">_site</code></li>\n</ul>\n<p><a href=\"https://developers.cloudflare.com/pages/\" target=\"_blank\" rel=\"noopener noreferrer\">Official documentation</a></p>\n<h2 id=\"render\">Render</h2>\n<aside class=\"note note-info\"><p>Render only provides PHP 7.3: the build script uses the Cecil <a href=\"../getting-started/2-installation.md#standalone-binary\">standalone binary</a> instead, and installs themes from <code translate=\"no\">composer.lock</code>.</p></aside>\n<blockquote>\n<p>Render is a unified cloud to build and run all your apps and websites with free TLS certificates, global CDN, private networks and auto deploys from Git.</p>\n</blockquote>\n<p>➡️ <a href=\"https://render.com\" target=\"_blank\" rel=\"noopener noreferrer\">https://render.com</a></p>\n<p><em>render.yaml</em>:</p>\n<pre><code class=\"language-yml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">previewsEnabled:</span> <span class=\"hljs-literal\">true</span>\n<span class=\"hljs-attr\">services:</span>\n  <span class=\"hljs-bullet\">-</span> <span class=\"hljs-attr\">type:</span> <span class=\"hljs-string\">web</span>\n    <span class=\"hljs-attr\">name:</span> <span class=\"hljs-string\">Cecil</span>\n    <span class=\"hljs-attr\">env:</span> <span class=\"hljs-string\">static</span>\n    <span class=\"hljs-attr\">buildCommand:</span> <span class=\"hljs-string\">curl</span> <span class=\"hljs-string\">-sSOL</span> <span class=\"hljs-string\">https://cecil.app/build.sh</span> <span class=\"hljs-string\">&amp;&amp;</span> <span class=\"hljs-string\">bash</span> <span class=\"hljs-string\">./build.sh</span>\n    <span class=\"hljs-attr\">staticPublishPath:</span> <span class=\"hljs-string\">_site</span>\n    <span class=\"hljs-attr\">pullRequestPreviewsEnabled:</span> <span class=\"hljs-literal\">true</span></code></pre>\n<p><a href=\"https://render.com/docs/static-sites\" target=\"_blank\" rel=\"noopener noreferrer\">Official documentation</a></p>",
      "language": "en"
    },
    {
      "id": "https://cecil-945.pages.dev/documentation/deploy/continuous-deployment/",
      "url": "https://cecil-945.pages.dev/documentation/deploy/continuous-deployment/",
      "title": "Continuous build & deploy",
      "summary": "GitHub Pages and GitLab CI.",
      "date_published": "2020-12-19T00:00:00+00:00",
      "date_modified": "2026-10-10T00:00:00+00:00","content_text": "Continuous build &amp; deploy\nContinuous integration services can build your site with Cecil and deploy it on each change to your repository.\nGitHub Pages\n\nWebsites for you and your projects, hosted directly from your GitHub repository. Just edit, push, and your changes are live.\n\n➡️ https:\/\/pages.github.com\n.github\/workflows\/build-and-deploy.yml:\nname: Build and deploy to GitHub Pages\non:\n  push:\n    branches: [master, main]\n  workflow_dispatch:\nconcurrency:\n  group: pages\n  cancel-in-progress: true\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout source\n        uses: actions\/checkout@v6\n      - name: Restore Cecil cache\n        uses: actions\/cache\/restore@v5\n        with:\n          path: .\/.cache\n          key: cecil-cache-\n          restore-keys: |\n            cecil-cache-\n      - name: Build site\n        uses: Cecilapp\/Cecil-Action@v4\n      - name: Save Cecil cache\n        uses: actions\/cache\/save@v5\n        with:\n          path: .\/.cache\n          key: cecil-cache-${{ hashFiles('.\/.cache\/**\/*') }}\n  deploy:\n    needs: build\n    permissions:\n      pages: write\n      id-token: write\n    environment:\n      name: github-pages\n      url: ${{ steps.deployment.outputs.page_url }}\n    runs-on: ubuntu-latest\n    steps:\n      - name: Deploy to GitHub Pages\n        id: deployment\n        uses: actions\/deploy-pages@v5\nOfficial documentation\nGitLab CI\n\nWith GitLab Pages, you can publish static websites directly from a repository in GitLab.\n\n➡️ https:\/\/about.gitlab.com\/solutions\/continuous-integration\/\n.gitlab-ci.yml:\nimage: wordpress:cli-php8.4\ntest:\n  stage: test\n  variables:\n    CECIL_OUTPUT_DIR: test\n  script:\n    - curl -sSOL https:\/\/cecil.app\/build.sh &amp;&amp; bash .\/build.sh\n  artifacts:\n    paths:\n     - test\n  except:\n   - master\npages:\n  stage: deploy\n  variables:\n    CECIL_ENV: production\n    CECIL_OUTPUT_DIR: public\n  script:\n    - curl -sSOL https:\/\/cecil.app\/build.sh &amp;&amp; bash .\/build.sh\n  artifacts:\n    paths:\n      - public\n  only:\n    - master\ncache:\n  paths:\n    - composer-cache\/\n    - vendor\/\n    - .cache\/\nOfficial documentation",
      "content_html": "<h1>Continuous build &amp; deploy</h1>\n<p>Continuous integration services can build your site with Cecil and deploy it on each change to your repository.</p>\n<h2 id=\"github-pages\">GitHub Pages</h2>\n<blockquote>\n<p>Websites for you and your projects, hosted directly from your GitHub repository. Just edit, push, and your changes are live.</p>\n</blockquote>\n<p>➡️ <a href=\"https://pages.github.com\" target=\"_blank\" rel=\"noopener noreferrer\">https://pages.github.com</a></p>\n<p><em>.github/workflows/build-and-deploy.yml</em>:</p>\n<pre><code class=\"language-yml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">name:</span> <span class=\"hljs-string\">Build</span> <span class=\"hljs-string\">and</span> <span class=\"hljs-string\">deploy</span> <span class=\"hljs-string\">to</span> <span class=\"hljs-string\">GitHub</span> <span class=\"hljs-string\">Pages</span>\n<span class=\"hljs-attr\">on:</span>\n  <span class=\"hljs-attr\">push:</span>\n    <span class=\"hljs-attr\">branches:</span> <span class=\"hljs-string\">[master,</span> <span class=\"hljs-string\">main]</span>\n  <span class=\"hljs-attr\">workflow_dispatch:</span>\n<span class=\"hljs-attr\">concurrency:</span>\n  <span class=\"hljs-attr\">group:</span> <span class=\"hljs-string\">pages</span>\n  <span class=\"hljs-attr\">cancel-in-progress:</span> <span class=\"hljs-literal\">true</span>\n<span class=\"hljs-attr\">jobs:</span>\n  <span class=\"hljs-attr\">build:</span>\n    <span class=\"hljs-attr\">runs-on:</span> <span class=\"hljs-string\">ubuntu-latest</span>\n    <span class=\"hljs-attr\">steps:</span>\n      <span class=\"hljs-bullet\">-</span> <span class=\"hljs-attr\">name:</span> <span class=\"hljs-string\">Checkout</span> <span class=\"hljs-string\">source</span>\n        <span class=\"hljs-attr\">uses:</span> <span class=\"hljs-string\">actions/checkout@v6</span>\n      <span class=\"hljs-bullet\">-</span> <span class=\"hljs-attr\">name:</span> <span class=\"hljs-string\">Restore</span> <span class=\"hljs-string\">Cecil</span> <span class=\"hljs-string\">cache</span>\n        <span class=\"hljs-attr\">uses:</span> <span class=\"hljs-string\">actions/cache/restore@v5</span>\n        <span class=\"hljs-attr\">with:</span>\n          <span class=\"hljs-attr\">path:</span> <span class=\"hljs-string\">./.cache</span>\n          <span class=\"hljs-attr\">key:</span> <span class=\"hljs-string\">cecil-cache-</span>\n          <span class=\"hljs-attr\">restore-keys:</span> <span class=\"hljs-string\">|\n            cecil-cache-\n</span>      <span class=\"hljs-bullet\">-</span> <span class=\"hljs-attr\">name:</span> <span class=\"hljs-string\">Build</span> <span class=\"hljs-string\">site</span>\n        <span class=\"hljs-attr\">uses:</span> <span class=\"hljs-string\">Cecilapp/Cecil-Action@v4</span>\n      <span class=\"hljs-bullet\">-</span> <span class=\"hljs-attr\">name:</span> <span class=\"hljs-string\">Save</span> <span class=\"hljs-string\">Cecil</span> <span class=\"hljs-string\">cache</span>\n        <span class=\"hljs-attr\">uses:</span> <span class=\"hljs-string\">actions/cache/save@v5</span>\n        <span class=\"hljs-attr\">with:</span>\n          <span class=\"hljs-attr\">path:</span> <span class=\"hljs-string\">./.cache</span>\n          <span class=\"hljs-attr\">key:</span> <span class=\"hljs-string\">cecil-cache-${{</span> <span class=\"hljs-string\">hashFiles('./.cache/**/*')</span> <span class=\"hljs-string\">}}</span>\n  <span class=\"hljs-attr\">deploy:</span>\n    <span class=\"hljs-attr\">needs:</span> <span class=\"hljs-string\">build</span>\n    <span class=\"hljs-attr\">permissions:</span>\n      <span class=\"hljs-attr\">pages:</span> <span class=\"hljs-string\">write</span>\n      <span class=\"hljs-attr\">id-token:</span> <span class=\"hljs-string\">write</span>\n    <span class=\"hljs-attr\">environment:</span>\n      <span class=\"hljs-attr\">name:</span> <span class=\"hljs-string\">github-pages</span>\n      <span class=\"hljs-attr\">url:</span> <span class=\"hljs-string\">${{</span> <span class=\"hljs-string\">steps.deployment.outputs.page_url</span> <span class=\"hljs-string\">}}</span>\n    <span class=\"hljs-attr\">runs-on:</span> <span class=\"hljs-string\">ubuntu-latest</span>\n    <span class=\"hljs-attr\">steps:</span>\n      <span class=\"hljs-bullet\">-</span> <span class=\"hljs-attr\">name:</span> <span class=\"hljs-string\">Deploy</span> <span class=\"hljs-string\">to</span> <span class=\"hljs-string\">GitHub</span> <span class=\"hljs-string\">Pages</span>\n        <span class=\"hljs-attr\">id:</span> <span class=\"hljs-string\">deployment</span>\n        <span class=\"hljs-attr\">uses:</span> <span class=\"hljs-string\">actions/deploy-pages@v5</span></code></pre>\n<p><a href=\"https://docs.github.com/en/pages\" target=\"_blank\" rel=\"noopener noreferrer\">Official documentation</a></p>\n<h2 id=\"gitlab-ci\">GitLab CI</h2>\n<blockquote>\n<p>With GitLab Pages, you can publish static websites directly from a repository in GitLab.</p>\n</blockquote>\n<p>➡️ <a href=\"https://about.gitlab.com/solutions/continuous-integration/\" target=\"_blank\" rel=\"noopener noreferrer\">https://about.gitlab.com/solutions/continuous-integration/</a></p>\n<p><em>.gitlab-ci.yml</em>:</p>\n<pre><code class=\"language-yml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">image:</span> <span class=\"hljs-string\">wordpress:cli-php8.4</span>\n<span class=\"hljs-attr\">test:</span>\n  <span class=\"hljs-attr\">stage:</span> <span class=\"hljs-string\">test</span>\n  <span class=\"hljs-attr\">variables:</span>\n    <span class=\"hljs-attr\">CECIL_OUTPUT_DIR:</span> <span class=\"hljs-string\">test</span>\n  <span class=\"hljs-attr\">script:</span>\n    <span class=\"hljs-bullet\">-</span> <span class=\"hljs-string\">curl</span> <span class=\"hljs-string\">-sSOL</span> <span class=\"hljs-string\">https://cecil.app/build.sh</span> <span class=\"hljs-string\">&amp;&amp;</span> <span class=\"hljs-string\">bash</span> <span class=\"hljs-string\">./build.sh</span>\n  <span class=\"hljs-attr\">artifacts:</span>\n    <span class=\"hljs-attr\">paths:</span>\n     <span class=\"hljs-bullet\">-</span> <span class=\"hljs-string\">test</span>\n  <span class=\"hljs-attr\">except:</span>\n   <span class=\"hljs-bullet\">-</span> <span class=\"hljs-string\">master</span>\n<span class=\"hljs-attr\">pages:</span>\n  <span class=\"hljs-attr\">stage:</span> <span class=\"hljs-string\">deploy</span>\n  <span class=\"hljs-attr\">variables:</span>\n    <span class=\"hljs-attr\">CECIL_ENV:</span> <span class=\"hljs-string\">production</span>\n    <span class=\"hljs-attr\">CECIL_OUTPUT_DIR:</span> <span class=\"hljs-string\">public</span>\n  <span class=\"hljs-attr\">script:</span>\n    <span class=\"hljs-bullet\">-</span> <span class=\"hljs-string\">curl</span> <span class=\"hljs-string\">-sSOL</span> <span class=\"hljs-string\">https://cecil.app/build.sh</span> <span class=\"hljs-string\">&amp;&amp;</span> <span class=\"hljs-string\">bash</span> <span class=\"hljs-string\">./build.sh</span>\n  <span class=\"hljs-attr\">artifacts:</span>\n    <span class=\"hljs-attr\">paths:</span>\n      <span class=\"hljs-bullet\">-</span> <span class=\"hljs-string\">public</span>\n  <span class=\"hljs-attr\">only:</span>\n    <span class=\"hljs-bullet\">-</span> <span class=\"hljs-string\">master</span>\n<span class=\"hljs-attr\">cache:</span>\n  <span class=\"hljs-attr\">paths:</span>\n    <span class=\"hljs-bullet\">-</span> <span class=\"hljs-string\">composer-cache/</span>\n    <span class=\"hljs-bullet\">-</span> <span class=\"hljs-string\">vendor/</span>\n    <span class=\"hljs-bullet\">-</span> <span class=\"hljs-string\">.cache/</span></code></pre>\n<p><a href=\"https://about.gitlab.com/stages-devops-lifecycle/continuous-integration/\" target=\"_blank\" rel=\"noopener noreferrer\">Official documentation</a></p>",
      "language": "en"
    },
    {
      "id": "https://cecil-945.pages.dev/documentation/deploy/static-hosting/",
      "url": "https://cecil-945.pages.dev/documentation/deploy/static-hosting/",
      "title": "Static hosting",
      "summary": "Deploy to a static hosting (Surge).",
      "date_published": "2020-12-19T00:00:00+00:00",
      "date_modified": "2026-10-10T00:00:00+00:00","content_text": "Static hosting\nThe built site can be uploaded as is to any static hosting service.\nSurge\n\nShipping web projects should be fast, easy, and low risk. Surge is static web publishing for Front-End Developers, right from the CLI.\n\n➡️ https:\/\/surge.sh\nTerminal:\nnpm install -g surge\nsurge _site\/\nOfficial documentation",
      "content_html": "<h1>Static hosting</h1>\n<p>The built site can be uploaded as is to any static hosting service.</p>\n<h2 id=\"surge\">Surge</h2>\n<blockquote>\n<p>Shipping web projects should be fast, easy, and low risk. Surge is static web publishing for Front-End Developers, right from the CLI.</p>\n</blockquote>\n<p>➡️ <a href=\"https://surge.sh\" target=\"_blank\" rel=\"noopener noreferrer\">https://surge.sh</a></p>\n<p>Terminal:</p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">npm install -g surge\nsurge _site/</code></pre>\n<p><a href=\"https://surge.sh/help/\" target=\"_blank\" rel=\"noopener noreferrer\">Official documentation</a></p>",
      "language": "en"
    }
  ]
}
