p.xil.no

Static pages for g.xil.no repositories — push to a repo, get a website.

How it works

Every repository on g.xil.no can publish a static site here. A small CI workflow uploads your files to the pages server on every push; about a minute later the site is live. No build step is required — plain HTML works as-is, and anything that produces HTML works too.

Addresses

Sites live under <[branch.]repo.]user>.p.xil.no:

AddressServes
alice.p.xil.no repo pages of user alice, branch main — the owner's index site
blog.alice.p.xil.no repo blog, branch main
draft.blog.alice.p.xil.no repo blog, branch draft

The same content also answers path-style: alice.p.xil.no/blog/ is blog.alice.p.xil.no. Ship a 404.html at your site root to control the not-found page.

Deploy

Put this in .forgejo/workflows/pages.yml in your repo (Actions must be enabled in the repo settings), adjust the site: address and file list, and push to main:

name: Deploy to Pages

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: docker
    steps:
      - uses: actions/checkout@v4
      - name: Collect site
        run: |
          mkdir -p _site
          cp index.html 404.html _site/
      - name: Deploy
        uses: https://g.xil.no/git-pages/action@v2
        with:
          site: http://alice.p.xil.no/blog/
          server: git-pages.git-pages.svc.cluster.local:3000
          token: ${{ forge.token }}
          source: _site/

The values are g.xil.no-specific: the runners reach the pages server over its in-cluster address, so site: uses plain http and server: names the internal host. The automatic Actions token authorizes sites whose address matches the pushing repository — user.p.xil.no/repo/ from user/repo, or user.p.xil.no/ from user/pages. Fresh deploys can take about a minute to appear.