Pendant très longtemps, nous avions une question: à quel point est-il facile et rapide de déployer un projet frontal?
Nous avons pensé à un outil comme Jenkins. Beaucoup de ceux qui l'ont configuré savent que cela prend beaucoup de temps à configurer et, plus important encore, cela prend beaucoup de ressources système. L'augmenter sur le serveur signifie allouer un gigaoctet et demi de mémoire. C'est un vrai plaisir quand on a 500 mégaoctets pour tout, par exemple.
Une alternative est Mina. C'est une excellente solution, et nous l'utilisons dans les projets Ruby. Mais que faire si vous n'avez qu'un front-end? Mettez Ruby et faites un paquet? Non, c'est trop compliqué. Mina, bien sûr, a de grandes fonctionnalités, mais nous voulons le faire sur NodeJS sans gestes inutiles.
Au final, nous avons écrit des scripts Bash, mais cela nous a dérangés. Et nous avons eu l'idée d'écrire notre propre petit service de déploiement d'applications frontales, qui sera:
- paquet npm
- avoir une petite et simple configuration
- 10 minutes pour le configurer et 5 minutes pour le déployer
- avoir un système de libération (si, après tout, quelque chose ne va pas et que quelqu'un dit "c'est
cassé, vous pouvez revenir en toute sécurité et rapidement à la version précédente)
Et nous avons créé
Runy - un outil pratique et pratique pour déployer le front-end.
Tout ce dont vous avez besoin pour le configurer et le premier déploiement après l'installation du package sont trois commandes:
init - créez une configuration et entrez vos données dedans
configuration - créer une structure de projet
deploy - déployez votre projet
Et c'est tout!
Ce module a simplifié nos vies! Maintenant, le déploiement se déroule en une seule équipe. Rapide et facile. Lorsque de nouveaux développeurs viennent à nous, vous pouvez leur donner accès au serveur de développement / étape afin que les gars puissent se déployer. Les développeurs juniors le trouveront également utile, ils n'ont pas besoin d'un seuil d'entrée pour être utilisés et à l'avenir, ils pourront comprendre le module et acquérir de nouvelles connaissances.
Un peu sur la partie technique (un manuel plus détaillé est sur
github ). Runy possède actuellement les commandes suivantes: init, setup, deploy, unlock, rollback.
Init
Crée un fichier de configuration à l'emplacement d'appel de la commande. Vous devez y entrer vos données. Comme vous pouvez le voir, nous utilisons la connexion ssh-agent, donc aucun mot de passe ne sera dans la configuration.
// runy.js module.exports = { host: '0.0.0.0', // username: 'username', // port: 22, // remotePath: '/your/project/path', // git: 'link-to-your-git-repository', // ( ssh) agent: process.env.SSH_AUTH_SOCK, // commands: [ // 'npm install', 'npm run build', ], };
Configuration
Au chemin spécifié dans la configuration, il crée le dossier des versions (il stocke les versions aux numéros 1, 2, 3, etc.) et le fichier .current.release (le numéro de version actuel y est stocké).
Déployer
Cette équipe bénéficie d'une certaine protection, en même temps, une seule personne peut effectuer un déploiement.
L'équipe fait ce qui suit. Crée un dossier temporaire, installe un projet, exécute une liste de vos commandes à partir du fichier de configuration (commandes) pour extraire les dépendances et crée l'application, crée un nouveau dossier de version, y transfère le projet qui vient d'être construit, vérifie le nombre de versions et supprime les anciennes (3 versions sont maintenant stockées), crée un lien symbolique vers la version actuelle (la version actuelle sera toujours disponible sur ce chemin your-remote-path / current), met à jour le fichier avec le chiffre de la version, nettoie les dossiers.
Débloquer
Supprime le fichier de protection créé lors de l'exécution de la commande deploy. En général, le fichier est supprimé automatiquement et même lors du traitement des erreurs, mais pour toutes les occasions, cette commande existe.
Rollback
Renvoie un lien symbolique vers la version précédente et supprime la version actuelle.
PS Nous avons encore des idées pour développer cet outil, vous pouvez également participer au développement du projet en créant / réalisant des tâches
ici .
Laissez le déploiement de chaque développeur devenir plus pratique et plus rapide.