From fd2c44c3eb9e465ad3dd08b6cdbd119cb331f3e6 Mon Sep 17 00:00:00 2001 From: Fede654 Date: Wed, 22 Apr 2026 21:27:39 -0300 Subject: [PATCH] feat: deploy to yupanki CT 127 + repoint Conectividad card - Replace GH Pages workflow with self-hosted runner deploy on yupanki (runs-on: [self-hosted, yupanki]). Streams `out/` into CT 127 via `sudo pct exec` tar-pipe, then calls /usr/local/bin/promote for the atomic release swap. No secrets; the runner's scoped sudoers on the yupanki host is the trust boundary. - Add SITE.yml declaring slug/domain for the Alter-infra registry. - Update "Conectividad" project card URL from libremesh.org to https://conectividad.altermundi.net/, which is the legacy WordPress re-exposed at a subdomain during the altermundi.net cutover. Infra spec: Alter-infra docs/superpowers/specs/2026-04-22-altermundi-static-sites-platform-design.md Infra plan: Alter-infra docs/superpowers/plans/2026-04-22-altermundi-static-sites-phase-1.md Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/deploy.yml | 63 ++++++++++++++++-------------------- SITE.yml | 14 ++++++++ components/projects.tsx | 2 +- 3 files changed, 43 insertions(+), 36 deletions(-) create mode 100644 SITE.yml 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/", }, {