Implementación rápida o cómo implementar front-end en 15 minutos

Durante mucho tiempo tuvimos una pregunta: ¿qué tan fácil y rápido es implementar un proyecto front-end?

Pensamos en una herramienta como Jenkins. Muchos de los que lo han configurado saben que lleva mucho tiempo configurarlo y, lo que es más importante, requiere muchos recursos del sistema. Elevarlo en el servidor significa asignar un gigabyte y medio de memoria. Es un placer cuando tienes 500 megabytes para todo, por ejemplo.

Una alternativa es Mina. Esta es una gran solución, y la usamos en proyectos Ruby. Pero, ¿y si solo tienes un front-end? Poner Ruby y hacer un paquete? No, es muy complicado. Mina, por supuesto, tiene una gran funcionalidad, pero queremos hacer esto en NodeJS sin gestos innecesarios.

Al final, escribimos guiones de Bash, pero nos molestó. Y se nos ocurrió la idea de escribir nuestro propio pequeño servicio para implementar aplicaciones front-end, que será:

  • paquete npm
  • tener una configuración pequeña y simple
  • Tómese 10 minutos para configurarlo y 5 minutos para implementar
  • tener un sistema de lanzamiento (si, después de todo, algo sale mal y alguien dice "es
se rompió, entonces puede volver de forma segura y rápida a la versión anterior)

Y creamos Runy , una herramienta conveniente y práctica para implementar front-end.

Todo lo que necesita para configurarlo y la primera implementación después de instalar el paquete son tres comandos:
init : crea una configuración e ingresa tus datos en ella
configuración : crea una estructura de proyecto
desplegar - desplegar su proyecto

¡Y eso es todo!

¡Este módulo ha simplificado nuestras vidas! Ahora el despliegue se lleva a cabo en un equipo. Rápido y fácil Cuando vengan nuevos desarrolladores, puede darles acceso al servidor de desarrollo / etapa para que los chicos puedan desplegarse ellos mismos. Los desarrolladores junior también lo encontrarán útil, no necesitan un umbral de entrada para su uso, y en el futuro pueden descifrar el módulo y adquirir nuevos conocimientos.

Un poco sobre la parte técnica (hay un manual más detallado en github ). Runy actualmente tiene los siguientes comandos: init, setup, deploy, unlock, rollback.

Init


Crea un archivo de configuración en la ubicación de invocación del comando. Debe ingresar sus datos en él. Como puede ver, estamos utilizando la conexión ssh-agent, por lo que no habrá contraseñas en la configuración.

// 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', ], }; 

Configuración


En la ruta especificada en la configuración, crea la carpeta de lanzamientos (almacena lanzamientos en los números 1, 2, 3, etc.) y el archivo .current.release (el número de lanzamiento actual se almacena en él).

Implementar


Este equipo tiene cierta protección, al mismo tiempo, solo una persona puede hacer un despliegue.

El equipo hace lo siguiente. Crea una carpeta temporal, instala un proyecto, ejecuta una lista de sus comandos desde el archivo de configuración (comandos) para extraer las dependencias y crea la aplicación, crea una nueva carpeta de lanzamiento, transfiere el proyecto recién construido allí, verifica el número de lanzamientos y elimina los antiguos (ahora se almacenan 3 lanzamientos), crea un enlace simbólico a la versión actual (la versión actual siempre estará disponible en esta ruta your-remote-path / current), actualiza el archivo con el dígito de la versión, limpia las carpetas.

Desbloquear


Elimina el archivo de protección que se crea cuando se ejecuta el comando de implementación. En general, el archivo se elimina automáticamente e incluso cuando se procesan errores, pero para todas las ocasiones existe este comando.

Rollback


Devuelve un enlace simbólico a la versión anterior y elimina la actual.

PD: Todavía tenemos ideas para desarrollar esta herramienta, también puede participar en el desarrollo del proyecto creando / haciendo tareas aquí .

Deje que la implementación de cada desarrollador sea más conveniente y más rápida.

Source: https://habr.com/ru/post/es413495/


All Articles