diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 3d22803..c98e8d3 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,53 +1,46 @@ -name: Deploy to GitHub Pages +name: deploy on: push: branches: [main] - workflow_dispatch: - -permissions: - contents: read - pages: write - id-token: write + workflow_dispatch: {} concurrency: - group: "pages" + group: deploy-altermundi-website cancel-in-progress: false jobs: - build: - runs-on: ubuntu-latest + build-deploy: + # Runs on the AlterMundi org self-hosted runner on the yupanki PVE host. + # Provisioned by Alter-infra yupanki/host/github-runner/provision.sh. + runs-on: [self-hosted, yupanki] + env: + SLUG: altermundi-website + CTID: "127" steps: - - name: Checkout - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - - name: Setup Node - uses: actions/setup-node@v4 + - uses: actions/setup-node@v4 with: node-version: 20 cache: npm - - name: Setup Pages - uses: actions/configure-pages@v5 + - run: npm ci - - name: Install dependencies - run: npm ci + - run: npm run build - - name: Build - run: npm run build + - name: Verify static export exists + run: test -d out && test -f out/index.html - - name: Upload artifact - uses: actions/upload-pages-artifact@v3 - with: - path: ./out - - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - needs: build - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 + - name: Ensure staging directory exists on CT 127 + run: | + sudo /usr/sbin/pct exec "$CTID" -- bash -c "rm -rf /srv/www/${SLUG}.new && mkdir -p /srv/www/${SLUG}.new" + + - name: Stream build artifact into CT 127 staging + run: | + tar -C out -cf - . \ + | sudo /usr/sbin/pct exec "$CTID" -- tar -C /srv/www/${SLUG}.new -xf - + + - name: Promote release atomically + run: | + sudo /usr/sbin/pct exec "$CTID" -- /usr/local/bin/promote "$SLUG" diff --git a/SITE.yml b/SITE.yml new file mode 100644 index 0000000..6bb6497 --- /dev/null +++ b/SITE.yml @@ -0,0 +1,14 @@ +domain: altermundi.net +slug: altermundi-website +has_contact_form: false +notes: > + First tenant of the AlterMundi multi-site static hosting platform. + Hosted on yupanki CT 127. Infra-as-code: AlterMundi/Alter-infra + yupanki/static-sites/. Design spec: docs/superpowers/specs/ + 2026-04-22-altermundi-static-sites-platform-design.md. + + Current Contact section is a mailto link + GitHub link; no form. + If a form is reintroduced, add an n8n webhook workflow + (contact-altermundi) and POST JSON to + https://n8n.altermundi.net/webhook/contact-altermundi with + {name, email, message, site: "altermundi-website", website: hp}. diff --git a/components/projects.tsx b/components/projects.tsx index 491f972..acd1ab0 100644 --- a/components/projects.tsx +++ b/components/projects.tsx @@ -20,7 +20,7 @@ const PROJECTS: Project[] = [ "An open-hardware WiFi router and companion mesh networking firmware, purpose-built for community networks. Designed to be affordable, durable, and deployable with low technical barriers, already powering initiatives like QuintanaLibre in rural Cordoba.", tags: ["Networking", "Hardware", "Firmware"], status: "Flagship", - url: "https://libremesh.org/", + url: "https://conectividad.altermundi.net/", repoUrl: "https://gitlab.com/librerouter/", }, {