| | |
| | | build: |
| | | runs-on: ubuntu-22.04 |
| | | steps: |
| | | - uses: actions/checkout@v3 |
| | | - uses: actions/checkout@v4 |
| | | with: |
| | | fetch-depth: 0 # Fetch all history for git info |
| | | - uses: actions/setup-node@v3 |
| | | - uses: actions/setup-node@v4 |
| | | with: |
| | | node-version: 18.14 |
| | | node-version: 22 |
| | | - name: Install Dependencies |
| | | run: npm ci |
| | | - name: Build Quartz |
| | | run: npx quartz build |
| | | - name: Upload artifact |
| | | uses: actions/upload-pages-artifact@v2 |
| | | uses: actions/upload-pages-artifact@v3 |
| | | with: |
| | | path: public |
| | | |
| | |
| | | steps: |
| | | - name: Deploy to GitHub Pages |
| | | id: deployment |
| | | uses: actions/deploy-pages@v2 |
| | | uses: actions/deploy-pages@v4 |
| | | ``` |
| | | |
| | | Then: |
| | |
| | | |
| | | ## GitLab Pages |
| | | |
| | | In your local Quartz, create a new file `.gitlab-ci.yaml`. |
| | | In your local Quartz, create a new file `.gitlab-ci.yml`. |
| | | |
| | | ```yaml title=".gitlab-ci.yaml" |
| | | ```yaml title=".gitlab-ci.yml" |
| | | stages: |
| | | - build |
| | | - deploy |
| | | |
| | | variables: |
| | | NODE_VERSION: "18.14" |
| | | image: node:22 |
| | | cache: # Cache modules in between jobs |
| | | key: $CI_COMMIT_REF_SLUG |
| | | paths: |
| | | - .npm/ |
| | | |
| | | build: |
| | | stage: build |
| | | rules: |
| | | - if: '$CI_COMMIT_REF_NAME == "v4"' |
| | | before_script: |
| | | - apt-get update -q && apt-get install -y nodejs npm |
| | | - npm install -g n |
| | | - n $NODE_VERSION |
| | | - hash -r |
| | | - npm ci |
| | | - npm ci --cache .npm --prefer-offline |
| | | script: |
| | | - npx quartz build |
| | | artifacts: |
| | | paths: |
| | | - public |
| | | cache: |
| | | paths: |
| | | - ~/.npm/ |
| | | key: "${CI_COMMIT_REF_SLUG}-node-${CI_COMMIT_REF_NAME}" |
| | | tags: |
| | | - docker |
| | | - gitlab-org-docker |
| | | |
| | | pages: |
| | | stage: deploy |
| | |
| | | } |
| | | } |
| | | ``` |
| | | |
| | | ### Using Apache |
| | | |
| | | Here's an example of how to do this with Apache: |
| | | |
| | | ```apache title=".htaccess" |
| | | RewriteEngine On |
| | | |
| | | ErrorDocument 404 /404.html |
| | | |
| | | # Rewrite rule for .html extension removal (with directory check) |
| | | RewriteCond %{REQUEST_FILENAME} !-f |
| | | RewriteCond %{REQUEST_FILENAME} !-d |
| | | RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI}.html -f |
| | | RewriteRule ^(.*)$ $1.html [L] |
| | | |
| | | # Handle directory requests explicitly |
| | | RewriteCond %{REQUEST_FILENAME} -d |
| | | RewriteRule ^(.*)/$ $1/index.html [L] |
| | | ``` |
| | | |
| | | Don't forget to activate brotli / gzip compression. |
| | | |
| | | ### Using Caddy |
| | | |
| | | Here's and example of how to do this with Caddy: |
| | | |
| | | ```caddy title="Caddyfile" |
| | | example.com { |
| | | root * /path/to/quartz/public |
| | | try_files {path} {path}.html {path}/ =404 |
| | | file_server |
| | | encode gzip |
| | | |
| | | handle_errors { |
| | | rewrite * /{err.status_code}.html |
| | | file_server |
| | | } |
| | | } |
| | | ``` |