Skip to content

Railway deploy della wiki

Questa configurazione pubblica solo la documentazione MkDocs, non l'estensione browser.

Architettura

  • Service Railway: wiki.
  • Build: Dockerfile dedicato Dockerfile.railway-wiki.
  • Output pubblicato: sito statico generato da mkdocs build.
  • Runtime: server statico Python scripts/serve_static_wiki.py su 0.0.0.0:$PORT.
  • Healthcheck Railway: /.
  • Endpoint versione estensione: /api/extension-version.json.
  • Variabili applicative: nessuna richiesta.
  • Database, volumi, worker o private network: non necessari.

Istanza Railway creata

  • Project: sf-inspector-wiki
  • Environment: production
  • Service: wiki
  • Dominio Railway: https://wiki-production-4d32.up.railway.app
  • Feature wiki: https://wiki-production-4d32.up.railway.app/features/

Il file Dockerfile.railway-wiki.dockerignore limita il contesto Docker a:

  • docs/**
  • mkdocs.yml
  • README.md
  • PRIVACY.md
  • CHANGES.md
  • package.json
  • addon/manifest.json
  • addon/manifest-firefox.json
  • scripts/generate_extension_version_endpoint.py
  • scripts/serve_static_wiki.py
  • file Railway/Docker dedicati

In questo modo il deploy non include src, build dell'estensione o altri asset applicativi. Include solo i manifest dell'estensione per generare l'endpoint JSON della versione pubblica.

Endpoint versione estensione

Il deploy espone una GET pubblica:

https://sf-inspector-wiki.codestorm.tools/api/extension-version.json

La risposta e un JSON statico generato durante la build da package.json, addon/manifest.json e addon/manifest-firefox.json. La build fallisce se le versioni non sono allineate.

Esempio:

{
  "schemaVersion": 1,
  "name": "Salesforce Inspector Advanced",
  "version": "3.0.20",
  "versionName": "3.0.20",
  "releaseNotesUrl": "https://sf-inspector-wiki.codestorm.tools/release-note/",
  "downloadUrl": "https://github.com/CodeStormLab/cs-salesforce-inspector-advanced/releases/latest",
  "platforms": {
    "chrome": {
      "manifestVersion": 3,
      "minimumChromeVersion": "88"
    },
    "firefox": {
      "manifestVersion": 2,
      "strictMinVersion": "60.0"
    }
  }
}

Il server aggiunge header CORS sui path /api/, cosi l'estensione puo leggere l'endpoint per mostrare un suggerimento di aggiornamento quando la versione installata e precedente a version.

Prerequisiti

La Railway CLI deve essere installata e autenticata.

railway --version
railway login
railway whoami

Versione verificata localmente durante la preparazione: railway 4.11.2.

Creare il progetto Railway

Dal root del repository:

railway init --name sf-inspector-wiki

Il comando crea un nuovo progetto e collega la directory corrente. Se lavori in un workspace specifico:

railway init --name sf-inspector-wiki --workspace "<workspace-name-or-id>"

Poi crea e collega il service web:

railway add --service wiki
railway status

Se il progetto esiste gia, collega progetto, ambiente e service:

railway link --project "<project-id-or-name>" --environment production --service wiki

Primo deploy

railway up --service wiki

Per avviare il deploy senza restare attaccato ai log:

railway up --service wiki --detach

Il file .railwayignore fa si che railway up carichi solo i file necessari alla wiki. Non rimuoverlo se l'obiettivo e pubblicare solo la documentazione.

Collegare direttamente il repository GitHub

Puoi collegare il service wiki direttamente al repository GitHub CodeStormLab/cs-salesforce-inspector-advanced invece di usare solo railway up.

Nel dashboard Railway:

  1. Apri project sf-inspector-wiki.
  2. Apri service wiki.
  3. In Settings -> Source, collega il repository CodeStormLab/cs-salesforce-inspector-advanced.
  4. Seleziona branch master.
  5. Lascia Root Directory vuota o impostata alla root del repository.
  6. Se Railway mostra un campo per il config file, usa /railway.json.
  7. Lascia vuoti build command, start command e variabili custom: sono gia definiti da railway.json e dal Dockerfile.

Non impostare Root Directory a docs/: il Dockerfile, mkdocs.yml, README.md, PRIVACY.md, CHANGES.md e railway.json sono alla root del repository e servono alla build.

Con il collegamento GitHub attivo:

  • railway.json forza il builder Dockerfile e usa Dockerfile.railway-wiki.
  • watchPatterns limita gli autodeploy a modifiche documentali e file di deploy della wiki.
  • Dockerfile.railway-wiki.dockerignore limita il contesto Docker ai file necessari alla wiki.
  • Railway continua a iniettare PORT; non serve configurarlo manualmente.
  • Non servono database, volumi, secrets o private network.

Prima di attivare il deploy da GitHub, assicurati che questi file siano committati e pushati:

  • .railwayignore
  • Dockerfile.railway-wiki
  • Dockerfile.railway-wiki.dockerignore
  • railway.json
  • mkdocs.yml
  • docs/**
  • README.md
  • PRIVACY.md
  • CHANGES.md
  • package.json
  • addon/manifest.json
  • addon/manifest-firefox.json
  • scripts/generate_extension_version_endpoint.py
  • scripts/serve_static_wiki.py

Se vuoi che ogni push documentale pubblichi automaticamente la wiki, abilita gli autodeploy sul service wiki. Se preferisci deploy controllati, tieni gli autodeploy disabilitati e usa:

railway up --service wiki --detach

Dominio pubblico

Genera un dominio Railway:

railway domain --service wiki

Per un dominio custom:

railway domain docs.example.com --service wiki

La CLI restituira i record DNS richiesti.

Verifica

Dopo il deploy:

railway status
railway logs --service wiki

Apri il dominio generato e verifica:

  • home docs raggiungibile;
  • /features/ raggiungibile;
  • /api/extension-version.json restituisce JSON con version;
  • screenshot feature caricati;
  • ricerca MkDocs inizializzata.

Verifica rapida dell'endpoint:

curl -fsSL https://sf-inspector-wiki.codestorm.tools/api/extension-version.json

Operazioni ricorrenti

Nuovo deploy manuale:

railway up --service wiki

Log:

railway logs --service wiki

Redeploy dell'ultima build:

railway redeploy --service wiki

Aprire dashboard:

railway open

Note operative

  • railway.json forza il builder Dockerfile e usa Dockerfile.railway-wiki.
  • watchPatterns limita gli autodeploy alle modifiche documentali e ai file deploy della wiki.
  • Railway inietta PORT; il container ascolta su 0.0.0.0:$PORT.
  • L'endpoint /api/extension-version.json viene rigenerato a ogni build Railway; aggiornarlo richiede il bump dei manifest/package e un nuovo deploy.