<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="https://cecil.app/xsl/atom.xsl" media="all"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://cecil.app/documentation/deploy/</id>
  <title>Cecil - Deploy</title>
  <subtitle><![CDATA[Cecil is a command-line PHP application that merges Markdown pages, medias and Twig templates to generate a static website.]]></subtitle>
  <link href="https://cecil.app/documentation/deploy/atom.xml" rel="self" type="application/atom+xml" />
  <link href="https://cecil.app/documentation/deploy/" rel="alternate" type="text/html" />
  <updated>2026-10-07T22:48:52+00:00</updated>
  <author>
    <name>Cecil</name>
    <uri>https://cecil.app</uri>
  </author>
  <entry xml:lang="en">
    <id>https://cecil.app/documentation/deploy/jamstack-platforms/</id>
    <title>Jamstack platforms</title>
    <published>2020-12-19T00:00:00+00:00</published>
    <updated>2026-10-02T00:00:00+00:00</updated>
    <link href="https://cecil.app/documentation/deploy/jamstack-platforms/" rel="alternate" type="text/html" />
    <content type="html">
      <![CDATA[<h1>Jamstack platforms</h1>
<h2 id="netlify">Netlify</h2>
<blockquote>
<p>A powerful serverless platform with an intuitive git-based workflow. Automated deployments, shareable previews, and much more.</p>
</blockquote>
<p>➡️ <a href="https://www.netlify.com" target="_blank" rel="noopener noreferrer">https://www.netlify.com</a></p>
<p><em>netlify.toml</em>:</p>
<pre><code class="language-bash hljs bash" translate="no">[build]
  publish = <span class="hljs-string">"_site"</span>
  <span class="hljs-built_in">command</span> = <span class="hljs-string">"curl -sSOL https://cecil.app/build.sh &amp;&amp; bash ./build.sh"</span>
[context.production.environment]
  CECIL_ENV = <span class="hljs-string">"production"</span>
[context.deploy-preview.environment]
  CECIL_ENV = <span class="hljs-string">"preview"</span></code></pre>
<p><a href="https://www.netlify.com/docs/continuous-deployment/" target="_blank" rel="noopener noreferrer">Official documentation</a></p>
<h2 id="vercel">Vercel</h2>
<blockquote>
<p>Vercel combines the best developer experience with an obsessive focus on end-user performance.</p>
</blockquote>
<p>➡️ <a href="https://vercel.com" target="_blank" rel="noopener noreferrer">https://vercel.com</a></p>
<p><em>vercel.json</em>:</p>
<pre><code class="language-json hljs json" translate="no">{
  <span class="hljs-attr">"buildCommand"</span>: <span class="hljs-string">"curl -sSOL https://cecil.app/build.sh &amp;&amp; bash ./build.sh"</span>,
  <span class="hljs-attr">"outputDirectory"</span>: <span class="hljs-string">"_site"</span>
}</code></pre>
<p><a href="https://vercel.com/docs/concepts/deployments/build-step#build-command" target="_blank" rel="noopener noreferrer">Official documentation</a></p>
<h2 id="statichost">statichost</h2>
<blockquote>
<p>Modern static site hosting with European servers and absolutely no personal data collection!</p>
</blockquote>
<p>➡️ <a href="https://statichost.eu" target="_blank" rel="noopener noreferrer">https://statichost.eu</a></p>
<p><em>statichost.yml</em>:</p>
<pre><code class="language-yml hljs yaml" translate="no"><span class="hljs-attr">image:</span> <span class="hljs-string">wordpress:cli-php8.4</span>
<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>
<span class="hljs-attr">public:</span> <span class="hljs-string">_site</span></code></pre>
<p><a href="https://www.statichost.eu/docs/" target="_blank" rel="noopener noreferrer">Official documentation</a></p>
<h2 id="cloudflare-pages">Cloudflare Pages</h2>
<aside class="note note-caution"><p>Cloudflare Pages no longer supports PHP.</p></aside>
<blockquote>
<p>Cloudflare Pages is a JAMstack platform for frontend developers to collaborate and deploy websites.</p>
</blockquote>
<p>➡️ <a href="https://pages.cloudflare.com" target="_blank" rel="noopener noreferrer">https://pages.cloudflare.com</a></p>
<p>Build configurations:</p>
<ul>
<li>Framework preset: <code translate="no">None</code></li>
<li>Build command: <code translate="no">curl -sSOL https://cecil.app/build.sh &amp;&amp; bash ./build.sh</code></li>
<li>Build output directory: <code translate="no">_site</code></li>
</ul>
<p><a href="https://developers.cloudflare.com/pages/" target="_blank" rel="noopener noreferrer">Official documentation</a></p>
<h2 id="render">Render</h2>
<aside class="note note-caution"><p>Render no longer supports PHP.</p></aside>
<blockquote>
<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>
</blockquote>
<p>➡️ <a href="https://render.com" target="_blank" rel="noopener noreferrer">https://render.com</a></p>
<p><em>render.yaml</em>:</p>
<pre><code class="language-yml hljs yaml" translate="no"><span class="hljs-attr">previewsEnabled:</span> <span class="hljs-literal">true</span>
<span class="hljs-attr">services:</span>
  <span class="hljs-bullet">-</span> <span class="hljs-attr">type:</span> <span class="hljs-string">web</span>
    <span class="hljs-attr">name:</span> <span class="hljs-string">Cecil</span>
    <span class="hljs-attr">env:</span> <span class="hljs-string">static</span>
    <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>
    <span class="hljs-attr">staticPublishPath:</span> <span class="hljs-string">_site</span>
    <span class="hljs-attr">pullRequestPreviewsEnabled:</span> <span class="hljs-literal">true</span></code></pre>
<p><a href="https://render.com/docs/static-sites" target="_blank" rel="noopener noreferrer">Official documentation</a></p>]]>
    </content>
  </entry>
  <entry xml:lang="en">
    <id>https://cecil.app/documentation/deploy/continuous-deployment/</id>
    <title>Continuous build &amp; deploy</title>
    <published>2020-12-19T00:00:00+00:00</published>
    <updated>2026-10-02T00:00:00+00:00</updated>
    <link href="https://cecil.app/documentation/deploy/continuous-deployment/" rel="alternate" type="text/html" />
    <content type="html">
      <![CDATA[<h1>Continuous build &amp; deploy</h1>
<h2 id="github-pages">GitHub Pages</h2>
<blockquote>
<p>Websites for you and your projects, hosted directly from your GitHub repository. Just edit, push, and your changes are live.</p>
</blockquote>
<p>➡️ <a href="https://pages.github.com" target="_blank" rel="noopener noreferrer">https://pages.github.com</a></p>
<p><em>.github/workflows/build-and-deploy.yml</em>:</p>
<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>
<span class="hljs-attr">on:</span>
  <span class="hljs-attr">push:</span>
    <span class="hljs-attr">branches:</span> <span class="hljs-string">[master,</span> <span class="hljs-string">main]</span>
  <span class="hljs-attr">workflow_dispatch:</span>
<span class="hljs-attr">concurrency:</span>
  <span class="hljs-attr">group:</span> <span class="hljs-string">pages</span>
  <span class="hljs-attr">cancel-in-progress:</span> <span class="hljs-literal">true</span>
<span class="hljs-attr">jobs:</span>
  <span class="hljs-attr">build:</span>
    <span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-latest</span>
    <span class="hljs-attr">steps:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Checkout</span> <span class="hljs-string">source</span>
        <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/checkout@v6</span>
      <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>
        <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/cache/restore@v5</span>
        <span class="hljs-attr">with:</span>
          <span class="hljs-attr">path:</span> <span class="hljs-string">./.cache</span>
          <span class="hljs-attr">key:</span> <span class="hljs-string">cecil-cache-</span>
          <span class="hljs-attr">restore-keys:</span> <span class="hljs-string">|
            cecil-cache-
</span>      <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Build</span> <span class="hljs-string">site</span>
        <span class="hljs-attr">uses:</span> <span class="hljs-string">Cecilapp/Cecil-Action@v4</span>
      <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>
        <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/cache/save@v5</span>
        <span class="hljs-attr">with:</span>
          <span class="hljs-attr">path:</span> <span class="hljs-string">./.cache</span>
          <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>
  <span class="hljs-attr">deploy:</span>
    <span class="hljs-attr">needs:</span> <span class="hljs-string">build</span>
    <span class="hljs-attr">permissions:</span>
      <span class="hljs-attr">pages:</span> <span class="hljs-string">write</span>
      <span class="hljs-attr">id-token:</span> <span class="hljs-string">write</span>
    <span class="hljs-attr">environment:</span>
      <span class="hljs-attr">name:</span> <span class="hljs-string">github-pages</span>
      <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>
    <span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-latest</span>
    <span class="hljs-attr">steps:</span>
      <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>
        <span class="hljs-attr">id:</span> <span class="hljs-string">deployment</span>
        <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/deploy-pages@v5</span></code></pre>
<p><a href="https://docs.github.com/en/pages" target="_blank" rel="noopener noreferrer">Official documentation</a></p>
<h2 id="gitlab-ci">GitLab CI</h2>
<blockquote>
<p>With GitLab Pages, you can publish static websites directly from a repository in GitLab.</p>
</blockquote>
<p>➡️ <a href="https://about.gitlab.com/solutions/continuous-integration/" target="_blank" rel="noopener noreferrer">https://about.gitlab.com/solutions/continuous-integration/</a></p>
<p><em>.gitlab-ci.yml</em>:</p>
<pre><code class="language-yml hljs yaml" translate="no"><span class="hljs-attr">image:</span> <span class="hljs-string">wordpress:cli-php8.4</span>
<span class="hljs-attr">test:</span>
  <span class="hljs-attr">stage:</span> <span class="hljs-string">test</span>
  <span class="hljs-attr">variables:</span>
    <span class="hljs-attr">CECIL_OUTPUT_DIR:</span> <span class="hljs-string">test</span>
  <span class="hljs-attr">script:</span>
    <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>
  <span class="hljs-attr">artifacts:</span>
    <span class="hljs-attr">paths:</span>
     <span class="hljs-bullet">-</span> <span class="hljs-string">test</span>
  <span class="hljs-attr">except:</span>
   <span class="hljs-bullet">-</span> <span class="hljs-string">master</span>
<span class="hljs-attr">pages:</span>
  <span class="hljs-attr">stage:</span> <span class="hljs-string">deploy</span>
  <span class="hljs-attr">variables:</span>
    <span class="hljs-attr">CECIL_ENV:</span> <span class="hljs-string">production</span>
    <span class="hljs-attr">CECIL_OUTPUT_DIR:</span> <span class="hljs-string">public</span>
  <span class="hljs-attr">script:</span>
    <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>
  <span class="hljs-attr">artifacts:</span>
    <span class="hljs-attr">paths:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">public</span>
  <span class="hljs-attr">only:</span>
    <span class="hljs-bullet">-</span> <span class="hljs-string">master</span>
<span class="hljs-attr">cache:</span>
  <span class="hljs-attr">paths:</span>
    <span class="hljs-bullet">-</span> <span class="hljs-string">composer-cache/</span>
    <span class="hljs-bullet">-</span> <span class="hljs-string">vendor/</span>
    <span class="hljs-bullet">-</span> <span class="hljs-string">.cache/</span></code></pre>
<p><a href="https://about.gitlab.com/stages-devops-lifecycle/continuous-integration/" target="_blank" rel="noopener noreferrer">Official documentation</a></p>]]>
    </content>
  </entry>
  <entry xml:lang="en">
    <id>https://cecil.app/documentation/deploy/static-hosting/</id>
    <title>Static hosting</title>
    <published>2020-12-19T00:00:00+00:00</published>
    <updated>2026-10-02T00:00:00+00:00</updated>
    <link href="https://cecil.app/documentation/deploy/static-hosting/" rel="alternate" type="text/html" />
    <content type="html">
      <![CDATA[<h1>Static hosting</h1>
<h2 id="surge">Surge</h2>
<blockquote>
<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>
</blockquote>
<p>➡️ <a href="https://surge.sh" target="_blank" rel="noopener noreferrer">https://surge.sh</a></p>
<p>Terminal:</p>
<pre><code class="language-bash hljs bash" translate="no">npm install -g surge
surge _site/</code></pre>
<p><a href="https://surge.sh/help/" target="_blank" rel="noopener noreferrer">Official documentation</a></p>]]>
    </content>
  </entry>
</feed>
