Developers · Receptes per al teu CI

El teu CI, desplegant a SWPanel

Copia la recepta de la teva eina, desa el teu token com a secret i fes push. SWPanel rep el paquet, el valida, l'analitza i el publica al teu hosting o al teu Cloud, amb una còpia del que hi havia.

  • GitHub Actions, GitLab CI, Bitbucket i Jenkins
  • Mode de prova per a les pull requests
  • Tornada enrere en una crida
Terminal · un desplegament d'exemple
~/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]"Paquet rebut sencer ok SHA-256Validat ok rutes, mida i fitxersAnalitzat ok sense errors greusCòpia del que hi havia, desada okPublicat a la teva web ok

Abans de començar

Tres coses i ja pots desplegar

  1. Crea un token a SWPanel

    Millor un de només desplegament, limitat al servei on publicaràs, amb caducitat i les teves IP.

  2. Desa'l com a secret

    Al teu CI, amb el nom SWPANEL_TOKEN. Mai al repositori.

  3. Apunta el servei

    L'identificador del hosting o del Cloud on viu la teva web, a la variable SERVICIO.

Receptes

Tria la teva eina, copia i enganxa

Totes fan el mateix: construeixen la web com sempre, l'empaqueten i la pugen amb una crida a l'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]"
# S'executa a 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]"
# S'executa a 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]"
# S'executa a 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, desat com a 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]"
# Des del teu terminal o des de qualsevol 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]"
# El teu tema, des del repositori, sense tocar wp-config.php ni les pujades

Receptes d'exemple. Totes les opcions de la crida (mode de prova, branca, commit i fitxers protegits) són a la documentació de l'API.

Pull requests

Prova-ho abans de fusionar

Amb el mode de prova, SWPanel valida i analitza el paquet de cada pull request i et diu què passaria, sense publicar res. Així, el que arriba a main ja ha passat el filtre.

  • La mateixa anàlisi que en producció: errors, seguretat i dependències
  • Les teves regles també s'apliquen: un Flux pot vetar el desplegament
  • Ni una línia de la web canvia
.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"
# A cada pull request: valida i analitza, sense publicar

Què passa després

De la crida a la web

El que fa SWPanel amb cada paquet, abans de tocar la teva web.

  1. El rep

    Sencer: fins que no arriba complet i quadra la seva empremta (SHA-256), no s'usa.

  2. El valida

    Rutes, mida (fins a 50 MB per defecte) i fitxers prohibits.

  3. L'analitza

    Errors, vulnerabilitats i dependències amb fallades conegudes.

  4. Aplica les teves regles

    Els teus Fluxos poden aturar un desplegament, i producció pot demanar aprovació des de SWPanel o Telegram.

  5. El publica

    Amb una còpia de l'anterior i sense tocar els teus fitxers protegits. Tu i el teu equip rebeu l'avís.

Sense secrets

Desplega sense desar cap clau

Amb OIDC, GitHub Actions i GitLab CI demostren a SWPanel quin repositori i quina branca estan desplegant. No hi ha cap clau al CI que es pugui filtrar.

Tornada enrere

Si alguna cosa surt malament, un clic

Cada desplegament queda a l'historial: qui, quan, quin commit i què ha canviat. Tornes a la versió anterior amb un clic a SWPanel o amb una crida a l'API, i els desplegaments atòmics canvien la web de cop, sense estats a mitges.

Preguntes freqüents

Dubtes sobre desplegaments

Qualsevol que pugui fer una crida HTTP: GitHub Actions, GitLab CI, Bitbucket Pipelines, Jenkins, o un simple curl des del teu terminal o un script.

Com a secret del teu CI: a GitHub, als secrets del repositori; a GitLab i Bitbucket, a les variables protegides; a Jenkins, com a credencial. Mai al codi. I si fas servir GitHub Actions o GitLab CI, pots desplegar sense secrets, amb OIDC.

Sí, amb el mode prova (dry_run): SWPanel valida i analitza el paquet i et diu què passaria, sense tocar la web. És el que convé a cada pull request.

Fins a 50 MB comprimit per defecte, ajustable per servei.

No passa res: el paquet no es publica fins que arriba sencer i es comprova la seva empremta (SHA-256).

No. Els fitxers protegits, com wp-config.php o .env, o les pujades dels usuaris, no se sobreescriuen mai.

Cada desplegament guarda una còpia del que substitueix. Tornes enrere amb un clic a SWPanel o amb una crida a l'API.

El teu proper push, ja a la web

Crea el teu token, copia la recepta i fes push.