Deploy+ : scripts Bash complets et variables pour chaque déploiement
Jusqu'ici, le script de Deploy+ était une liste de commandes : une ligne pour installer les dépendances, une autre pour compiler les fichiers du site, une autre pour préparer le cache. Cela fonctionne bien tant que chaque étape est indépendante. Mais si vous deviez vérifier comment le déploiement avait démarré, charger un outil une seule fois ou conserver une variable d'une commande à l'autre, vous finissiez par mettre toute la logique sur une seule ligne ou dans un fichier à part dans le dépôt.
Désormais, l'éditeur vous permet de choisir comment le script est exécuté et quelles informations il reçoit. Ce choix se fait pour chaque dépôt.

Un vrai script, du début à la fin
Le nouveau mode Script Bash complet exécute tout le texte dans un seul shell. Vous pouvez utiliser des conditions, des boucles et des fonctions, changer de dossier ou charger NVM une fois et continuer à utiliser Node.js dans les lignes suivantes. Par exemple :
composer install --no-dev --no-interaction
if [[ "$HOSTSUAR_DEPLOY_TRIGGER" == "webhook" ]]; then
php artisan migrate --force
fi
export NVM_DIR="$HOME/.nvm"
. "$NVM_DIR/nvm.sh"
npm ci --include=dev
npm run build
Le script s'exécute dans la version qui vient d'être clonée, avant sa publication. Si une commande que Bash considère comme une erreur échoue, le déploiement s'arrête et la version précédente reste publiée. Comme dans tout script avec set -e, un échec à l'intérieur d'un pipeline n'arrête pas l'exécution si la dernière commande se termine correctement ; vous pouvez ajouter set -o pipefail au début si votre projet en a besoin. Les commandes interactives ne reçoivent pas non plus de réponses au clavier : utilisez des options comme --no-interaction.
Le mode Une commande par ligne reste disponible. Chaque ligne démarre dans le dossier de la nouvelle version et s'exécute séparément, comme toujours. Les dépôts que vous aviez déjà connectés conservent ce mode et leurs réglages, sans changement dans leurs déploiements jusqu'à ce que vous en choisissiez d'autres.
Le script sait ce qu'il déploie
L'interrupteur Informations du déploiement ajoute des variables comme $HOSTSUAR_DEPLOY_TRIGGER, $HOSTSUAR_DEPLOY_BRANCH, $HOSTSUAR_DEPLOY_COMMIT et $HOSTSUAR_DEPLOY_RELEASE_PATH. Vous pouvez ainsi décider, par exemple, si une tâche doit s'exécuter lors d'un déploiement déclenché par un push, ou utiliser le hash du commit réellement cloné. Il y a aussi des chemins pour la version précédente, les fichiers partagés et le dossier publié.
Ces variables n'incluent ni le jeton du dépôt ni le secret du webhook. Elles sont activées sur les nouveaux dépôts ; sur les dépôts existants, vous pouvez les activer depuis l'éditeur quand vous en avez besoin. Elles fonctionnent dans les deux modes de script. Lorsqu'un retour en arrière doit reconstruire une version qui n'est plus sur le serveur, le script reçoit HOSTSUAR_DEPLOY_TRIGGER=rollback.
Le .env, seulement si vous en avez besoin pendant le build
Le second interrupteur, Variables du .env, transmet au script les clés du .env partagé sous forme de variables d'environnement. Les processus qu'il lance, comme Composer, npm ou Artisan, en héritent aussi. C'est utile si une compilation ou une commande indépendante doit lire $APP_NAME ou un identifiant et ne charge pas le fichier d'elle-même. Deploy+ lit le .env selon les règles de Laravel ; il ne l'exécute pas comme un script Bash et ne modifie pas le fichier.
L'option est désactivée par défaut. La sortie du script est enregistrée dans l'historique, évitez donc d'afficher des mots de passe ou d'activer set -x. Deploy+ masque les valeurs qu'il reconnaît comme secrètes, mais cette protection ne remplace pas l'attention portée à ce qu'écrit le script. Dans les projets Laravel avec des fichiers comme .env.production, vérifiez aussi quelles valeurs auront la priorité : les variables que le script a déjà reçues ne sont pas remplacées lors du chargement de cet autre fichier.
Vous trouverez les deux modes et les interrupteurs dans Hébergement → votre service → Deploy+ → Script de déploiement. Le guide de Deploy+ comprend la liste complète des variables, des exemples et le détail de chaque mode.