Développeurs · Recettes pour votre CI

Votre CI, déployant sur SWPanel

Copiez la recette de votre outil, enregistrez votre jeton comme secret et faites un push. SWPanel reçoit le paquet, le valide, l'analyse et le publie sur votre hébergement ou votre Cloud, avec une copie de l'existant.

  • GitHub Actions, GitLab CI, Bitbucket et Jenkins
  • Mode test pour les pull requests
  • Retour en arrière en un appel
Terminal · un déploiement 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 reçu en entier ok SHA-256Validé ok chemins, taille et fichiersAnalysé ok sans erreur graveCopie de l'existant, enregistrée okPublié sur votre site ok

Avant de commencer

Trois choses et vous pouvez déployer

  1. Créez un jeton dans SWPanel

    Idéalement un jeton de déploiement uniquement, limité au service où vous publierez, avec expiration et vos IP.

  2. Enregistrez-le comme secret

    Dans votre CI, sous le nom SWPANEL_TOKEN. Jamais dans le dépôt.

  3. Désignez le service

    L'identifiant de l'hébergement ou du Cloud où vit votre site, dans la variable SERVICIO.

Recettes

Choisissez votre outil, copiez-collez

Toutes font la même chose : elles construisent le site comme d'habitude, l'empaquettent et le téléversent avec un appel à 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'exécute à chaque push vers 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'exécute à chaque push vers 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'exécute à chaque push vers 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]"'
      }
    }
  }
}
// Le jeton, enregistré comme identifiant 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]"
# Depuis votre terminal ou n'importe quel 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]"
# Votre thème, depuis le dépôt, sans toucher à wp-config.php ni aux téléversements

Recettes d'exemple. Toutes les options de l'appel (mode test, branche, commit et fichiers protégés) se trouvent dans la documentation de l'API.

Pull requests

Testez-le avant de fusionner

Avec le mode test, SWPanel valide et analyse le paquet de chaque pull request et vous dit ce qui se passerait, sans rien publier. Ainsi, ce qui arrive sur main a déjà passé le filtre.

  • La même analyse qu'en production : erreurs, sécurité et dépendances
  • Vos règles s'appliquent aussi : un Flux peut bloquer le déploiement
  • Pas une seule ligne du site ne change
.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"
# À chaque pull request : valide et analyse, sans publier

Ce qui se passe ensuite

De l'appel au site

Ce que fait SWPanel avec chaque paquet, avant de toucher à votre site.

  1. Le reçoit

    En entier : tant qu'il n'est pas arrivé complet et que son empreinte (SHA-256) ne correspond pas, il n'est pas utilisé.

  2. Le valide

    Chemins, taille (jusqu'à 50 Mo par défaut) et fichiers interdits.

  3. L'analyse

    Erreurs, vulnérabilités et dépendances présentant des failles connues.

  4. Applique vos règles

    Vos Flux peuvent arrêter un déploiement, et la production peut demander une approbation depuis SWPanel ou Telegram.

  5. Le publie

    Avec une copie de la version précédente et sans toucher à vos fichiers protégés. Vous et votre équipe recevez l'avis.

Sans secrets

Déployez sans stocker aucune clé

Avec OIDC, GitHub Actions et GitLab CI prouvent à SWPanel quel dépôt et quelle branche ils déploient. Il n'y a aucune clé dans le CI qui puisse fuiter.

Retour en arrière

Si quelque chose tourne mal, un clic

Chaque déploiement est enregistré dans l'historique : qui, quand, quel commit et ce qui a changé. Vous revenez à la version précédente en un clic dans SWPanel ou avec un appel à l'API, et les déploiements atomiques font basculer le site d'un coup, sans états intermédiaires.

Questions fréquentes

Questions sur les déploiements

N'importe lequel capable de faire un appel HTTP : GitHub Actions, GitLab CI, Bitbucket Pipelines, Jenkins, ou un simple curl depuis votre terminal ou un script.

Comme secret de votre CI : sur GitHub, dans les secrets du dépôt ; sur GitLab et Bitbucket, dans les variables protégées ; sur Jenkins, comme identifiant. Jamais dans le code. Et si vous utilisez GitHub Actions ou GitLab CI, vous pouvez déployer sans secrets, avec OIDC.

Oui, avec le mode test (dry_run) : SWPanel valide et analyse le paquet et vous dit ce qui se passerait, sans toucher au site. C'est ce qu'il faut sur chaque pull request.

Jusqu'à 50 Mo compressés par défaut, ajustable par service.

Rien de grave : le paquet n'est publié qu'une fois arrivé entier et son empreinte (SHA-256) vérifiée.

Non. Les fichiers protégés, comme wp-config.php ou .env, ou les fichiers téléversés par les utilisateurs, ne sont jamais écrasés.

Chaque déploiement conserve une copie de ce qu'il remplace. Vous revenez en arrière en un clic dans SWPanel ou avec un appel à l'API.

Votre prochain push, déjà sur le site

Créez votre jeton, copiez la recette et faites un push.