{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "Cecil - Deploy",
  "home_page_url": "https://cecil.app/documentation/deploy/",
  "feed_url": "https://cecil.app/documentation/deploy/feed.json",
  "description": "Deploy your static website to Jamstack platforms, through continuous deployment or to a static hosting.",
  "icon": "https://cecil.app/favicon.7ff4b89eec6dad139a7d2d6561543285.png",
  "favicon": "https://cecil.app/thumbnails/64x/favicon.7ff4b89eec6dad139a7d2d6561543285.png",
  "language": "en",
  "items": [
    {
      "id": "https://cecil.app/documentation/deploy/jamstack-platforms/",
      "url": "https://cecil.app/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-02T00:00:00+00:00","content_text": "Jamstack platforms\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 no longer supports PHP.\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 no longer supports PHP.\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<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-caution\"><p>Cloudflare Pages no longer supports PHP.</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-caution\"><p>Render no longer supports PHP.</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.app/documentation/deploy/continuous-deployment/",
      "url": "https://cecil.app/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-02T00:00:00+00:00","content_text": "Continuous build &amp; deploy\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<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.app/documentation/deploy/static-hosting/",
      "url": "https://cecil.app/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-02T00:00:00+00:00","content_text": "Static hosting\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<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"
    }
  ]
}
