Workflows natifs
Workflows de déploiement intégrés.
deploy
Déploiement standard basé sur rsync.
dvs deploy prod --workflow deploy
Étapes :
- Synchronisation des fichiers via rsync (sans suppression)
- Vidage du cache applicatif
Utiliser quand : Déploiements simples, sync directe de fichiers
deploy-atomic
Déploiement atomique avec répertoires de release et switch de symlink.
dvs deploy prod --workflow deploy-atomic
Étapes :
- Créer un nouveau répertoire de release
- Synchroniser les fichiers vers la release
- Exécuter les commandes post-deploy
- Basculer le symlink vers la nouvelle release
- Nettoyer les anciennes releases
Utiliser quand : Déploiements zero-downtime, rollback facile
Structure de répertoire :
/var/www/myapp/
├── current -> releases/20250108-143052
├── releases/
│ ├── 20250108-143052/
│ ├── 20250107-091500/
│ └── ...
└── shared/
├── uploads/
└── .env
deploy-git-pull
Déploiement basé sur Git via pull distant.
dvs deploy prod --workflow deploy-git-pull
Étapes :
- SSH vers le remote
git fetch origingit reset --hard origin/main- Exécuter les commandes post-deploy
Utiliser quand : Workflow basé sur Git, le remote a accès au repo
Référence
deploy.yml
name: deploy
description: Standard deployment with file sync
requires:
components: [files]
parameters:
include_database:
default: false
description: Also deploy database (disabled for e-commerce by default)
steps:
- action: component.files.push
- action: component.database.push
when: $include_database || component.database.empty
deploy-atomic.yml
name: deploy-atomic
description: Zero-downtime deployment with symlinks and rollback
requires:
transport: ssh
components: [files]
parameters:
releases_keep:
default: 5
description: Number of releases to keep
shared_folders:
default: ""
description: Comma-separated list of shared folders (relative to webroot)
current_link:
default: current
description: Name of the symlink pointing to current release
steps:
- action: ssh.create_release_dir
- action: component.files.push
target: $RELEASE_DIR
- action: ssh.link_shared_folders
folders: $shared_folders
when: $shared_folders
- action: ssh.switch_symlink
link: $current_link
target: $RELEASE_DIR
- action: ssh.cleanup_releases
keep: $releases_keep
deploy-git-pull.yml
name: deploy-git-pull
description: Deploy by pulling latest code from git repository on remote
requires:
transport: ssh
components: [files]
parameters:
branch:
default: main
description: Git branch to pull
include_database:
default: false
description: Also deploy database (disabled for e-commerce by default)
composer_install:
default: true
description: Run composer install after git pull
cache_clear:
default: true
description: Clear application cache after deployment
steps:
- action: ssh.run
command: "cd $REMOTE_PATH && git fetch origin && git pull origin $branch"
description: Pull latest code from git repository
- action: ssh.run
command: "cd $REMOTE_PATH && composer install --no-dev --optimize-autoloader"
when: $composer_install
description: Install PHP dependencies with composer
- action: ssh.run
command: "cd $REMOTE_PATH && php artisan cache:clear 2>/dev/null || rm -rf var/cache/* app/cache/* cache/* 2>/dev/null || true"
when: $cache_clear
description: Clear application cache
- action: component.database.push
when: $include_database || component.database.empty
description: Push database to remote