Developers · Recetas para tu CI

Tu CI, desplegando en SWPanel

Copia la receta de tu herramienta, guarda tu token como secreto y haz push. SWPanel recibe el paquete, lo valida, lo analiza y lo publica en tu hosting o en tu Cloud, con una copia de lo que había.

  • GitHub Actions, GitLab CI, Bitbucket y Jenkins
  • Modo prueba para las pull requests
  • Vuelta atrás en una llamada
Terminal · un despliegue de ejemplo
~/mi-web npm run build && tar -czf web.tgz -C dist .~/mi-web curl -X POST …/services/$SERVICIO/deployment/ \    -H "Authorization: Bearer $SWPANEL_TOKEN" -F "[email protected]"Paquete recibido entero ok SHA-256Validado ok rutas, tamaño y ficherosAnalizado ok sin errores gravesCopia de lo que había, guardada okPublicado en tu web ok

Antes de empezar

Tres cosas y ya puedes desplegar

  1. Crea un token en SWPanel

    Mejor uno solo de despliegue, limitado al servicio donde vas a publicar, con caducidad y tus IPs.

  2. Guárdalo como secreto

    En tu CI, con el nombre SWPANEL_TOKEN. Nunca en el repositorio.

  3. Apunta el servicio

    El identificador del hosting o del Cloud donde vive tu web, en la variable SERVICIO.

Recetas

Elige tu herramienta, copia y pega

Todas hacen lo mismo: construyen la web como siempre, la empaquetan y la suben con una llamada a la API.

.github/workflows/swpanel.yml
on:
  push:
    branches: [main]
jobs:
  desplegar:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm ci && npm run build && tar -czf web.tgz -C dist .
      - run: |
          curl -X POST \
            https://api.swpanel.com/public/services/$SERVICIO/deployment/ \
            -H "Authorization: Bearer ${{ secrets.SWPANEL_TOKEN }}" \
            -F "[email protected]"
# Se ejecuta en cada push a main
.gitlab-ci.yml
desplegar:
  stage: deploy
  image: node:20
  rules:
    - if: $CI_COMMIT_BRANCH == "main"
  script:
    - npm ci && npm run build && tar -czf web.tgz -C dist .
    - >
      curl -X POST
      "https://api.swpanel.com/public/services/$SERVICIO/deployment/"
      -H "Authorization: Bearer $SWPANEL_TOKEN"
      -F "[email protected]"
# Se ejecuta en cada push a main
bitbucket-pipelines.yml
image: node:20
pipelines:
  branches:
    main:
      - step:
          name: Desplegar en SWPanel
          script:
            - npm ci && npm run build && tar -czf web.tgz -C dist .
            - curl -X POST "https://api.swpanel.com/public/services/$SERVICIO/deployment/"
              -H "Authorization: Bearer $SWPANEL_TOKEN"
              -F "[email protected]"
# Se ejecuta en cada push a main
Jenkinsfile
pipeline {
  agent any
  environment { SWPANEL_TOKEN = credentials('swpanel-token') }
  stages {
    stage('Construir') {
      steps { sh 'npm ci && npm run build && tar -czf web.tgz -C dist .' }
    }
    stage('Desplegar') {
      when { branch 'main' }
      steps {
        sh 'curl -X POST "https://api.swpanel.com/public/services/$SERVICIO/deployment/" -H "Authorization: Bearer $SWPANEL_TOKEN" -F "[email protected]"'
      }
    }
  }
}
// El token, guardado como credencial de Jenkins
terminal
tar -czf web.tgz -C dist .
curl -X POST "https://api.swpanel.com/public/services/$SERVICIO/deployment/" \
  -H "Authorization: Bearer $SWPANEL_TOKEN" \
  -F "[email protected]"
# Desde tu terminal o desde cualquier script
terminal
composer install --no-dev
tar -czf tema.tgz -C wp-content/themes/mi-tema .
curl -X POST "https://api.swpanel.com/public/services/$SERVICIO/deployment/" \
  -H "Authorization: Bearer $SWPANEL_TOKEN" \
  -F "[email protected]"
# Tu tema, desde el repositorio, sin tocar wp-config.php ni las subidas

Recetas de ejemplo. Todas las opciones de la llamada (modo prueba, rama, commit y ficheros protegidos) están en la documentación de la API.

Pull requests

Pruébalo antes de fusionar

Con el modo prueba, SWPanel valida y analiza el paquete de cada pull request y te dice qué pasaría, sin publicar nada. Así, lo que llega a main ya ha pasado el filtro.

  • El mismo análisis que en producción: errores, seguridad y dependencias
  • Tus reglas también se aplican: un Flujo puede vetar el despliegue
  • Ni una línea de la web cambia
.github/workflows/swpanel-pr.yml
on: pull_request
jobs:
  probar:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm ci && npm run build && tar -czf web.tgz -C dist .
      - run: |
          curl -X POST \
            https://api.swpanel.com/public/services/$SERVICIO/deployment/ \
            -H "Authorization: Bearer ${{ secrets.SWPANEL_TOKEN }}" \
            -F "[email protected]" \
            -F "dry_run=true"
# En cada pull request: valida y analiza, sin publicar

Qué pasa después

De la llamada a la web

Lo que hace SWPanel con cada paquete, antes de tocar tu web.

  1. Lo recibe

    Entero: hasta que no llega completo y cuadra su huella (SHA-256), no se usa.

  2. Lo valida

    Rutas, tamaño (hasta 50 MB por defecto) y ficheros prohibidos.

  3. Lo analiza

    Errores, vulnerabilidades y dependencias con fallos conocidos.

  4. Aplica tus reglas

    Tus Flujos pueden parar un despliegue, y producción puede pedir aprobación desde SWPanel o Telegram.

  5. Lo publica

    Con una copia de lo anterior y sin tocar tus ficheros protegidos. Tú y tu equipo recibís el aviso.

Sin secretos

Despliega sin guardar ninguna clave

Con OIDC, GitHub Actions y GitLab CI demuestran a SWPanel qué repositorio y qué rama están desplegando. No hay ninguna clave en el CI que se pueda filtrar.

Vuelta atrás

Si algo sale mal, un clic

Cada despliegue queda en el historial: quién, cuándo, qué commit y qué cambió. Vuelves a la versión anterior con un clic en SWPanel o con una llamada a la API, y los despliegues atómicos cambian la web de golpe, sin estados a medias.

Preguntas frecuentes

Dudas sobre despliegues

Cualquiera que pueda hacer una llamada HTTP: GitHub Actions, GitLab CI, Bitbucket Pipelines, Jenkins, o un simple curl desde tu terminal o un script.

Como secreto de tu CI: en GitHub, en los secretos del repositorio; en GitLab y Bitbucket, en las variables protegidas; en Jenkins, como credencial. Nunca en el código. Y si usas GitHub Actions o GitLab CI, puedes desplegar sin secretos, con OIDC.

Sí, con el modo prueba (dry_run): SWPanel valida y analiza el paquete y te dice qué pasaría, sin tocar la web. Es lo que conviene en cada pull request.

Hasta 50 MB comprimido por defecto, ajustable por servicio.

No pasa nada: el paquete no se publica hasta que llega entero y se comprueba su huella (SHA-256).

No. Los ficheros protegidos, como wp-config.php o .env, o las subidas de los usuarios, no se sobrescriben nunca.

Cada despliegue guarda una copia de lo que sustituye. Vuelves atrás con un clic en SWPanel o con una llamada a la API.

Tu próximo push, ya en la web

Crea tu token, copia la receta y haz push.