Deployer
Le Deployer gère le déploiement des applications Mastra autonomes en regroupant le code, en gérant les fichiers d’environnement et en servant les applications au moyen du framework Hono. Les implémentations concrètes doivent définir la méthode deploy pour des cibles de déploiement précises.
Exemple d’utilisationLien direct vers Exemple d’utilisation
Pour créer un Deployer personnalisé, étendez la classe abstraite Deployer et implémentez la méthode deploy avec votre propre logique de déploiement. Exemple :
import { Deployer } from '@mastra/deployer'
class CustomDeployer extends Deployer {
constructor() {
super({ name: 'custom-deployer' })
}
async deploy(outputDirectory: string): Promise<void> {
// Prepare the output directory
await this.prepare(outputDirectory)
// Bundle the application
await this._bundle('server.ts', 'mastra.ts', outputDirectory)
// Custom deployment logic
}
}
ParamètresLien direct vers Paramètres
Paramètres du constructeurLien direct vers Paramètres du constructeur
args:
args.name:
Paramètres de deployLien direct vers Paramètres de deploy
outputDirectory:
MéthodesLien direct vers Méthodes
getEnvFiles:
deploy:
Méthodes héritées de BundlerLien direct vers Méthodes héritées de Bundler
La classe Deployer hérite des méthodes principales suivantes de la classe Bundler :
prepare:
writePackageJson:
_bundle:
Concepts fondamentauxLien direct vers Concepts fondamentaux
Cycle de vie du déploiementLien direct vers Cycle de vie du déploiement
La classe abstraite Deployer implémente un cycle de vie de déploiement structuré :
- Initialisation : le Deployer est initialisé avec un nom et crée une instance de Deps pour gérer les dépendances.
- Configuration de l’environnement : la méthode
getEnvFilesidentifie les fichiers d’environnement (.env.production, .env) à utiliser pendant le déploiement. - Préparation : la méthode
prepare, héritée de Bundler, nettoie le répertoire de sortie et crée les sous-répertoires nécessaires. - Regroupement : la méthode
_bundle, héritée de Bundler, regroupe le code de l’application et ses dépendances. - Déploiement : les sous-classes implémentent la méthode abstraite
deployafin de gérer le processus de déploiement réel.
Gestion des fichiers d’environnementLien direct vers Gestion des fichiers d’environnement
La classe Deployer prend nativement en charge la gestion des fichiers d’environnement au moyen de la méthode getEnvFiles. Cette méthode :
- Recherche les fichiers d’environnement dans un ordre prédéfini (.env.production, .env)
- Utilise FileService pour trouver le premier fichier existant
- Renvoie un tableau des fichiers d’environnement trouvés
- Renvoie un tableau vide si aucun fichier d’environnement n’est trouvé
getEnvFiles(): Promise<string[]> {
const possibleFiles = ['.env.production', '.env.local', '.env'];
try {
const fileService = new FileService();
const envFile = fileService.getFirstExistingFile(possibleFiles);
return Promise.resolve([envFile]);
} catch {}
return Promise.resolve([]);
}
Relation entre le regroupement et le déploiementLien direct vers Relation entre le regroupement et le déploiement
La classe Deployer étend la classe Bundler, établissant une relation claire entre le regroupement et le déploiement :
- Regroupement comme prérequis : le regroupement est une étape préalable au déploiement, durant laquelle le code de l’application est conditionné dans un format déployable.
- Infrastructure partagée : le regroupement et le déploiement partagent une infrastructure commune, comme la gestion des dépendances et les opérations sur le système de fichiers.
- Logique de déploiement spécialisée : le regroupement se concentre sur le packaging du code, tandis que le déploiement ajoute une logique propre à l’environnement pour déployer le code regroupé.
- Extensibilité : la méthode abstraite
deploypermet de créer des Deployers spécialisés pour différentes cibles d’environnement.