Site is under maintenance mode. Please wait few min!
Saltar al contenido

Cómo indexar, dividir y manipular cadenas en JavaScript

marzo 4, 2020

 

Introducción

continua integración, entrega y despliegue, conocidos colectivamente como CI / CD, es una parte integral del desarrollo moderno destinado a reducir los errores durante la integración y despliegue al tiempo que aumenta la velocidad de proyecto. CI / CD es una filosofía y una serie de prácticas a menudo aumentados por las herramientas robustas que hacen hincapié en pruebas automatizadas en cada etapa de la tubería de software. Al incorporar estas ideas en su práctica, se puede reducir el tiempo necesario para integrar los cambios para una liberación y probar a fondo cada cambio antes de llevarla a la producción.

CI / CD tiene muchos beneficios potenciales, pero la implementación exitosa requiere a menudo una gran cantidad de consideración. Decidir exactamente cómo utilizar las herramientas y los cambios que pueda necesitar en sus entornos o procesos puede ser difícil sin un amplio ensayo y error. Sin embargo, mientras que todas las implementaciones serán diferentes, la adhesión a las mejores prácticas puede ayudar a evitar problemas comunes y alcanzar mejoras más rápido.

En esta guía, vamos a introducir una guía básica sobre cómo implementar y mantener un sistema CI / CD para servir mejor a las necesidades de su organización. Vamos a cubrir una serie de prácticas que le ayudarán a mejorar la eficacia de su servicio CI / CD. No dude en leer a través de lo escrito o vaya directamente a las áreas que le interesan.

Mantenga sus Tuberías Fast

CI / CD tuberías de ayuda cambios pastor a través de ciclos de pruebas automatizadas, a entornos de ensayo, y finalmente a la producción. Los más completos sus tuberías de prueba son, la seguridad mayor que tiene que los cambios no introducirá efectos secundarios no previstos en la implementación de producción. Sin embargo, ya que cada cambio debe pasar por este proceso, manteniendo las tuberías rápido y fiable es muy importante para el desarrollo de la velocidad no inhibe.

La tensión entre estos dos requisitos puede ser difícil mantener el equilibrio. Hay algunos pasos sencillos que puede tomar para mejorar la velocidad, como escalar a cabo su infraestructura CI / CD y la optimización de las pruebas. Sin embargo, con el paso del tiempo, se verá forzado a tomar decisiones críticas sobre el valor relativo de las diferentes pruebas y la etapa o el orden en que se ejecutan. A veces, pelado abajo de su banco de pruebas mediante la eliminación de las pruebas de bajo valor o con conclusiones indeterminados es la forma más inteligente para mantener la velocidad requerida por unas tuberías de uso intensivo.

al tomar estas decisiones importantes, asegúrese de entender y documentar las compensaciones que están haciendo. Consultar con los miembros del equipo y las partes interesadas para alinear los supuestos del equipo acerca de lo que el conjunto de pruebas es responsable y cuáles deben ser las principales áreas de atención.

Aislar y asegure su CI / CD Ambiente

Desde el punto de vista de seguridad operacional, su CI / CD sistema representa parte de la infraestructura más crítica de proteger. Dado que el sistema CI / CD tiene un acceso completo al código base y las credenciales para desplegar en diversos entornos, es esencial para asegurar que para salvaguardar los datos internos y garantizar la integridad de su sitio o producto. Debido a su alto valor como un objetivo, es importante aislar y bloquear su CI / CD tanto como sea posible. sistemas

CI / CD deben desplegarse a las redes internas, protegido, no expuestas a terceros. Se recomienda la creación de redes VPN u otra tecnología de control de acceso a la red para asegurar que los operadores sólo autenticados pueden tener acceso a su sistema. Dependiendo de la complejidad de la topología de la red, el sistema de CI / CD puede tener acceso a varias redes diferentes de implementar código para diferentes entornos. Si no se fija o se aíslan adecuadamente, los atacantes que obtienen acceso a un medio ambiente pueden ser capaces de salto de la isla , una técnica usada para expandir el acceso mediante el aprovechamiento de las reglas de redes internas más indulgentes, para obtener acceso a otros entornos a través de puntos débiles en su CI / servidores de CD. El

requiere estrategias de aislamiento y de seguridad dependerán en gran medida de la topología de la red, la infraestructura y los requisitos de gestión y de desarrollo. El punto importante a tener en cuenta es que sus sistemas de CI / CD son objetivos de gran valor y, en muchos casos, tienen un amplio grado de acceso a sus otros sistemas vitales. Blindaje todo el acceso externo a los servidores y el control estricto de los tipos de acceso interno permitido ayudará a reducir el riesgo de que su CI / siendo comprometida sistema de CD.

Hacer que el CI / CD Pipeline la única manera de desplegar a la Producción

Parte de lo que hace posible que los CI / CD para mejorar sus prácticas de desarrollo y la calidad del código es que los útiles a menudo ayuda a hacer cumplir las mejores prácticas para la prueba y despliegue. La promoción de código a través de sus tuberías CI / CD requiere cada cambio de demostrar que se adhiere a las normas y procedimientos codificados de su organización. Los fallos en un oleoducto CI / CD son inmediatamente visibles y detener el avance de la liberación afectada para etapas posteriores del ciclo. Este es un mecanismo gatekeeping que salvaguarde los entornos más importantes de código no es de confianza.

Para darse cuenta de estas ventajas, sin embargo, tiene que ser disciplinado para asegurar que cada cambio en su entorno de producción pasa por la tubería. El oleoducto CI / CD debe ser el único mecanismo por el cual el código entra en el entorno de producción. Esto puede suceder de forma automática al final de la prueba con éxito con las prácticas de implementación continuos, o por medio de una promoción de cambios manual de probados y aprobados puestos a disposición por el sistema CI / CD.

Con frecuencia, los equipos de empezar a utilizar sus tuberías para el despliegue, pero empezar a hacer excepciones cuando se producen problemas y no hay presión para resolverlos rápidamente. Si bien el tiempo de inactividad y otros problemas deben ser mitigados tan pronto como sea posible, es importante entender que el sistema CI / CD es una buena herramienta para asegurar que los cambios no son la introducción de otros insectos o romper aún más el sistema. Poner su solución a través de la tubería (o simplemente utilizando el CI / CD sistema de rollback) también evitará la próxima implementación de borrar un anuncio de revisiones hoc que se aplicó directamente a la producción. La tubería protege la validez de sus despliegues independientemente de que este era un lanzamiento previsto regular, o una solución rápida para resolver un problema permanente. Este uso del sistema de CI / CD es otra razón para el trabajo para mantener su tubería rápido.

mantener la paridad con la producción siempre que sea posible tuberías

CI / CD promueven cambios a través de una serie de conjuntos de pruebas y entornos de despliegue. Los cambios que pasan los requisitos de una etapa o bien se despliegan o en cola para el despliegue manual en los entornos más restrictivas automáticamente. Las etapas tempranas tienen el propósito de demostrar que vale la pena seguir probando y empujando los cambios más cerca de la producción.

Para etapas posteriores en especial, que reproduce el entorno de producción lo más cerca posible de los entornos de prueba ayuda a asegurar que los ensayos reflejen con precisión cómo el cambio se comportaría en la producción. Las diferencias significativas entre la producción y puesta en escena se permiten cambios problemáticos para ser liberados que nunca se observa que es defectuoso en la prueba. Los más diferencias entre el entorno en vivo y el ambiente de prueba, menos sus pruebas medirán cómo el código llevará a cabo cuando se suelta.

se espera Algunas diferencias entre la producción y la puesta en escena, pero mantenerlos manejable y asegurándose de que están bien entendidos es esencial. Algunas organizaciones utilizan implementaciones de azul-verde a tráfico de producción de intercambio entre dos ambientes casi idénticas que se alternan entre ser designado producción y puesta en escena. Las estrategias menos extremas involucrados despliegue de la misma configuración y la infraestructura desde la producción hasta el entorno de ensayo, pero a una escala reducida. Artículos como terminales de red pueden diferir entre sus entornos, pero parametrización de este tipo de datos variables pueden ayudar a asegurarse de que el código es consistente y que las diferencias ambientales están bien definidos.

Construir una sola vez y Promover el resultado a través de la Tubería

Un objetivo principal de una tubería CI / CD es la confianza construcción en los cambios y minimizar la posibilidad de impacto inesperado. Discutimos la importancia de mantener la paridad entre los ambientes, pero uno de los componentes de este es lo suficientemente importante como para merecer una atención adicional. Si el software requiere un edificio, el envasado o empaquetado paso, que paso debe ser ejecutado sólo una vez y la salida resultante debe ser reutilizado lo largo de toda la tubería.

Esta guía ayuda a evitar los problemas que surgen cuando el software se compila o empaquetado varias veces, lo que permite ligeras inconsistencias que se inyecta en los artefactos resultantes. La construcción del software por separado en cada nueva etapa puede significar las pruebas en entornos anteriores no fueron dirigidos al mismo software que se desplegará más tarde, invalidar los resultados.

Para evitar este problema, los sistemas de instalación deben incluir un proceso de construcción como el primer paso en la tubería que crea y paquetes de software en un entorno limpio. El artefacto resultante debe ser versionado y subido a un sistema de almacenamiento de artefactos que ser derribado por etapas posteriores de la tubería, asegurando que la construcción no cambia a medida que avanza a través del sistema.

ejecutar las pruebas rápidas temprana

Mientras se mantiene toda su tubería rápida es un gran objetivo general, las partes de su conjunto de pruebas serán inevitablemente más rápido que otros. Debido a que el sistema de CI / CD sirve como un conducto para todos los cambios entren en su sistema, el descubrimiento de fallos tan pronto como sea posible es importante reducir al mínimo los recursos dedicados a la problemática construye. Para lograr esto, priorizar y ejecutar las pruebas rápidas en primer lugar. Guardar compleja, pruebas hasta después de que haya validado la acumulación con las pruebas más pequeños, rápidos de marcha larga duración.

Esta estrategia tiene una serie de beneficios que pueden ayudar a mantener su proceso de CI / CD saludable. Se le anima a entender el impacto en el rendimiento de las pruebas individuales, le permite completar la mayor parte de sus primeras pruebas, y aumenta la probabilidad de fallos rápidos, lo que significa que los cambios problemáticos pueden ser revertidos o fijo antes de bloquear el trabajo de otros miembros. priorización

prueba

generalmente significa la ejecución de pruebas unitarias de su proyecto por primera vez desde aquellos que tienden a ser rápida, aislado, y el componente enfocado. Después, las pruebas de integración típicamente representan el siguiente nivel de complejidad y la velocidad, seguido por pruebas de todo el sistema y, finalmente, las pruebas de aceptación, que a menudo requieren un cierto nivel de interacción humana.

Minimizar ramificación en su versión de control del sistema

Uno de los principales principios de la CI / CD es la integración de los cambios en el repositorio compartido principal temprano y con frecuencia. Esto ayuda a evitar costosos problemas de integración en la línea cuando varios desarrolladores intentan fusionar grande, divergentes y contradictorios cambios en la rama principal del repositorio en preparación para el lanzamiento. Por lo general, los sistemas de CI / CD se establecen para vigilar y comprobar los cambios comprometidos con sólo una o unas pocas ramas.

Para tomar ventaja de los beneficios que ofrece CI, lo mejor es limitar el número y el alcance de las ramas en su repositorio. La mayoría de las implementaciones sugieren que los desarrolladores se comprometen directamente a las sucursales o fusionar principales cambios respecto de sus ramas locales en por lo menos una vez al día.

Esencialmente, las ramas que no están siendo rastreados por el sistema CI / CD contiene código no probado que debe ser considerado como un pasivo para el éxito y el impulso de su proyecto. La minimización de ramificación para fomentar la integración de los principios de código de diferentes desarrolladores ayuda a aprovechar los puntos fuertes del sistema, y ​​los desarrolladores previene de negar las ventajas que proporciona.

ejecutar las pruebas localmente antes de comprometerse con el CD Pipeline

relacionada CI / hasta el punto anterior sobre el descubrimiento de fallos prematuros, se debería alentar a los desarrolladores ejecutar tantas pruebas a nivel local antes de comprometerse con el repositorio compartido. Esto hace que sea posible detectar ciertos cambios problemáticos antes de que bloquean otros miembros del equipo. Mientras que el entorno de desarrollo local poco probable ser capaz de ejecutar todo el conjunto de pruebas en una producción-como el medio ambiente, este paso adicional da a los individuos más confianza en que los cambios que se están haciendo pruebas básicas de paso y vale la pena probar para integrarse con el código base más grande.

Para asegurar que los desarrolladores pueden probar con eficacia por su propia cuenta, su banco de pruebas debe ser ejecutable con un único comando que se puede ejecutar desde cualquier entorno. El mismo comando utilizado por los desarrolladores en sus máquinas locales debe ser utilizado por el sistema CI / CD para dar comienzo a las pruebas de código se fusionó con el repositorio. A menudo, esto se coordina al proporcionar una secuencia de comandos shell o Makefile para automatizar de ejecutar las herramientas de prueba de una manera repetible y predecible.

ejecutar pruebas en entornos efímero cuando sea posible ayuda

Para asegurarse de que sus pruebas se ejecutan el mismo en varias etapas, a menudo es una buena idea utilizar entornos de prueba limpias, efímeras cuando sea posible. Por lo general, esto significa la ejecución de pruebas en recipientes a diferencias abstractas entre los sistemas host y proporcionar una API estándar para conectar juntos los componentes en diversas escalas. Dado que los envases se ejecutan con estado mínimo, los efectos secundarios residuales de la prueba no se heredan por carreras posteriores de la serie de pruebas, lo que podría manchar los resultados.

Otro beneficio de entornos de prueba en contenedores es la portabilidad de su infraestructura de pruebas. Con los contenedores, los desarrolladores tienen un tiempo más fácil replicar la configuración que se utilizará más adelante en la tubería sin tener que configurar de forma manual y mantener la infraestructura o sacrificar la fidelidad del medio ambiente. Dado que los envases se pueden girar fácilmente cuando sea necesario y luego destruidos, los usuarios pueden hacer menos concesiones con respecto a la exactitud de su entorno de prueba cuando se ejecutan pruebas locales. En general, el uso de contenedores bloquea en algunos aspectos del entorno de tiempo de ejecución para ayudar a minimizar las diferencias entre las etapas de canalización.

Conclusión

Aunque cada aplicación CI / CD será diferente, siguiendo algunos de estos principios básicos le ayudará a evitar algunos errores comunes y fortalecer sus prácticas de prueba y desarrollo. Al igual que con la mayoría de los aspectos de la integración continua, una mezcla de procesos, herramientas, y el hábito le ayudará a cambios de desarrollo hacer más exitosa e impactante.

Para obtener más información acerca General de CI / CD y prácticas de cómo configurar varios servicios CI / CD, echa un vistazo a otros artículos con la etiqueta CI / CD.