Construye tu Pipeline de JS de forma incremental con GitLab

Rate this content
Bookmark

Introducir CI/CD en tu proyecto puede ser un proceso desafiante. En GitLab valoramos la iteración como uno de nuestros valores clave, y en espíritu de la iteración estaremos encantados de compartir cómo GitLab puede ayudarte a trabajar gradualmente en llevar tu proyecto al paraíso del CI/CD.

FAQ

En GitLab, utilizamos YesLint y Jest para el linting y ejecución de pruebas en JavaScript.

Docker es la forma estándar utilizada en GitLab para empaquetar código, lo cual ayuda a estandarizar y simplificar el proceso de entrega a producción.

Auto DevOps es una herramienta en GitLab que automatiza el pipeline de CI/CD al detectar automáticamente cómo construir aplicaciones, realizar pruebas de calidad de código y más, ofreciendo una configuración predeterminada que se puede personalizar según las necesidades.

GitLab utiliza un gráfico acíclico dirigido (DAG) para optimizar los tiempos de ejecución de los pipelines al permitir la ejecución paralela de tareas que no tienen dependencias entre sí, acelerando así el proceso completo.

Las pruebas inestables en GitLab suelen ser un desafío debido a la naturaleza asíncrona del frontend. GitLab maneja estas pruebas intentando asegurar que la configuración de CI no influya negativamente, aunque no existe una solución perfecta para asegurar la estabilidad total de las pruebas.

Kubernetes es utilizado en GitLab para ejecutar contenedores Docker en los pipelines, proporcionando una manera estándar y escalable de manejar la ejecución y despliegue de aplicaciones.

GitLab permite la personalización del pipeline de CI/CD mediante la configuración de variables de entorno y la posibilidad de habilitar o deshabilitar ciertos pasos del pipeline, facilitando la integración con requerimientos específicos de proyectos o empresas.

Illya Klymov
Illya Klymov
32 min
01 Jul, 2021

Comments

Sign in or register to post your comment.

Video Summary and Transcription

GitLab soporta todo el ciclo de DevOps y utiliza herramientas como YesLint, Jest, Docker y Kubernetes. La caché y la validación son desafíos importantes en DevOps. La función de auto DevOps de GitLab simplifica Docker, Kubernetes y Helm. Hay opciones de personalización y opciones avanzadas disponibles en GitLab. El pipeline de GitLab permite optimizar las dependencias de los trabajos y la mejora continua. La duración promedio de los pipelines de construcción de front-end es inferior a 10 minutos para la mayoría de las personas. Ejecutar un proceso de construcción y pipeline en GitLab implica cálculos de trabajos, configuración de runners y lógica oculta. GitLab puede ayudar con la ejecución de front-end en Kubernetes y tiene un visualizador DAG. Lidiar con pruebas inestables en el front-end es un desafío en los pipelines de GitLab.

1. Introducción al ciclo y herramientas de DevOps

Short description:

Soy Ilya Klimov de GitLab, un ingeniero senior de frontend. GitLab soporta todo el ciclo de DevOps, enfocándose en verificar, empaquetar y lanzar. En la etapa de Verificación, utilizamos herramientas como YesLint y Jest para la calidad del código y las pruebas. El empaquetado ahora se estandariza con Docker. Por último, hablaré sobre Kubernetes para el lanzamiento.

Hola a todos. Mi nombre es Ilya Klimov. Soy de GitLab, del equipo de importación gestionada. Soy un ingeniero senior de frontend, y me encantan las cosas rápidas. Así que conduzco mucho en mi auto Celes, intento utilizar mi conexión a Internet de un gigabit cuando es posible, y también me encanta GitLab por los tiempos de construcción rápidos. Y aunque los primeros dos obviamente están fuera de contexto de nuestra conferencia, estaré encantado de compartir mi conocimiento con el tercero. Así que en GitLab estamos tratando de apoyarte durante todo el ciclo de DevOps, comenzando desde la creación, donde creas tu código fuente, gestionando problemas, planificando ética, y así sucesivamente. Y terminando con protegerte de diferentes actividades maliciosas y monitoreando la salud de todos tus entornos de producción, puesta en escena, y así sucesivamente. Pero obviamente, hablar sobre todo el ciclo de DevOps llevaría una eternidad para completarse. Así que centrémonos solo en estas tres cosas. Es verificar, empaquetar y lanzar, que básicamente es de lo que se trata la integración continua y la entrega continua será justo después de eso. Entregar las cosas al lugar correcto después del lanzamiento en algún lugar de tu entorno de ejecución real.

Entonces, ¿cuál es el problema aquí? Por lo general, comienza de manera bastante simple. En la etapa de Verificación, en algún lugar, generalmente en el entorno de Node.js, ya que estamos en una conferencia de JavaScript y estamos hablando sobre el entorno de Node.js, incluso si eres un ingeniero de frontend, generalmente ejecutas algunas de tus herramientas favoritas para verificar la calidad del código, ejecutar tus pruebas. Por ejemplo, en GitLab, utilizamos YesLint y Jest para el linting. También mantenemos nuestras propias reglas de linting y para ejecutar pruebas. Hace mucho tiempo, solíamos usar Karma para hacer estas cosas, pero sinceramente, estoy muy feliz de que esos tiempos hayan pasado. Y probablemente introduzcamos más herramientas más adelante. En este paso, la idea principal es asegurarse de que todo vaya bien y que tu código se comporte como se espera. Después de eso, obviamente, necesitamos empaquetar tu código para entregarlo a producción. Y estoy bastante contento de que, bueno, llevo mucho tiempo en el desarrollo de software, más de 10 años. Y recuerdo cuando necesitabas inventar tus propias herramientas de entrega durante mucho, mucho tiempo. Así que ahora, Docker es la forma estándar de hacer las cosas. Y estoy bastante contento de tener eso. Estandarizar las cosas es genial. Y hoy hablaremos mucho sobre cómo hacer las cosas estándar, ya sea para toda la comunidad de JavaScript o solo para tu empresa. Porque cada empresa obviamente tiene su propio enfoque. Así que el último es el lanzamiento. Y aquí, las cosas no son tan estables como en la etapa de empaquetado. Para esta charla, me enfocaré un poco en Kubernetes.

2. Desafíos con las herramientas en el pipeline de DevOps

Short description:

Incluso las herramientas son difíciles. Construir una buena prueba es complejo. Asegurarse de que el código se ejecute correctamente con diferentes versiones de Node.js puede llevar a errores impredecibles. La complejidad del pipeline crece rápidamente a medida que se agregan más herramientas.

que es bastante estándar para ejecutar contenedores Docker. Me doy cuenta de que probablemente tu pipeline o tu futuro pipeline no lo utilice. Probablemente elijas otra forma de ejecutar código o ejecutar contenedores Docker en el metal desnudo, lo que sea. Pero por ahora, empecemos con este. Y el problema aquí es que incluso las herramientas son difíciles. Construir una buena prueba es algo muy complejo, que probablemente valga la pena otra charla. Asegurarse de que tu código se ejecute correctamente cuando tu entorno de desarrollo y tu entorno de integración continua tienen diferentes versiones de Node.js puede ser complicado y puede llevar a errores impredecibles. Un día pasé medio día depurando un bloqueo desconocido, literalmente seis veces, que fue un cambio menor en la tercera parte de la versión, diferente a Node.js. Nunca quiero volver a hacer eso. Pero como puedes ver, estamos agregando cada vez más herramientas en nuestro pipeline, incluso solo para estos tres pasos.

QnA

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

¿Por qué es tan lento el CI?
DevOps.js Conf 2022DevOps.js Conf 2022
27 min
¿Por qué es tan lento el CI?
Todos nos hemos preguntado esto mientras esperamos una eternidad a que termine nuestro trabajo de CI. Un CI lento no solo arruina la productividad del desarrollador, rompiendo nuestra concentración, sino que también cuesta dinero en tarifas de computación en la nube y desperdicia enormes cantidades de electricidad. Vamos a adentrarnos en por qué ocurre esto y cómo podemos solucionarlo con herramientas mejores y más rápidas.
Poner fin al dolor: Repensando CI para Monorepos Grandes
DevOps.js Conf 2024DevOps.js Conf 2024
25 min
Poner fin al dolor: Repensando CI para Monorepos Grandes
Escalar bases de código grandes, especialmente monorepos, puede ser una pesadilla en los sistemas de Integración Continua (CI). El panorama actual de las herramientas de CI tiende a ser orientado a máquinas, de bajo nivel y exigente en términos de mantenimiento. Lo peor es que a menudo están desconectadas de las necesidades y el flujo de trabajo real del desarrollador.¿Por qué es un obstáculo el CI? Porque los sistemas de CI actuales son comodines, sin una comprensión específica de tu base de código. No pueden aprovechar el contexto en el que operan para ofrecer optimizaciones.En esta charla, exploraremos el futuro del CI, diseñado específicamente para bases de código grandes y monorepos. Imagina un sistema de CI que comprenda la estructura de tu espacio de trabajo, paralelice dinámicamente las tareas en máquinas utilizando datos históricos, y haga todo esto con una configuración mínima y de alto nivel. Repensemos el CI, haciéndolo más inteligente, eficiente y alineado con las necesidades del desarrollador.
Despliegue Atómico para Hipsters de JavaScript
DevOps.js Conf 2024DevOps.js Conf 2024
25 min
Despliegue Atómico para Hipsters de JavaScript
Desplegar una aplicación no es un proceso fácil. Te encontrarás con muchos problemas y puntos de dolor que resolver para que funcione correctamente. Lo peor es: ahora que puedes desplegar tu aplicación en producción, ¿cómo no vas a poder desplegar también todas las ramas del proyecto para tener acceso a vistas previas en vivo? ¿Y poder hacer un revert rápido a pedido?Afortunadamente, el clásico conjunto de herramientas de DevOps tiene todo lo que necesitas para lograrlo sin comprometer tu salud mental. Al mezclar expertamente Git, herramientas de Unix y llamadas a API, y orquestar todo ello con JavaScript, dominarás el secreto de los despliegues atómicos seguros.No necesitarás depender de servicios comerciales: ¡conviértete en el maestro perfecto de las herramientas y netlifica tu aplicación desde casa!
Cómo construir tuberías de CI/CD para una aplicación de microservicios
DevOps.js Conf 2021DevOps.js Conf 2021
33 min
Cómo construir tuberías de CI/CD para una aplicación de microservicios
Top Content
Los microservicios presentan muchas ventajas para ejecutar software moderno, pero también traen nuevos desafíos tanto para las tareas de despliegue como operativas. Esta sesión discutirá las ventajas y desafíos de los microservicios y revisará las mejores prácticas para desarrollar una arquitectura basada en microservicios.Discutiremos cómo la orquestación de contenedores usando Kubernetes o Red Hat OpenShift puede ayudarnos y lo uniremos todo con un ejemplo de tuberías de Integración Continua y Entrega Continua (CI/CD) en OpenShift.
Pruebas automatizadas de regresión de rendimiento con Reassure
React Advanced Conference 2022React Advanced Conference 2022
16 min
Pruebas automatizadas de regresión de rendimiento con Reassure
Como desarrolladores, nos encanta sumergirnos en métricas de rendimiento, comparar soluciones y realizar pruebas de rendimiento. Aunque no siempre nos guste, a menudo nos vemos obligados a solucionar problemas de rendimiento en nuestras aplicaciones de React y React Native. Pero este proceso no es sostenible y propenso a regresiones, especialmente a medida que la aplicación y el equipo crecen. Lo peor de todo es que estos problemas a menudo son descubiertos por los usuarios, lo que hace que su experiencia sea miserable. En mi charla te presentaré Reassure, una biblioteca de pruebas de regresión de rendimiento para React y React Native, que resulta ser una pieza faltante en nuestras suites de pruebas automatizadas y rendimiento. Detectando problemas antes de que lleguen a producción.
Cómo hacer CI/CD correctamente en 2021: Una guía para CI y CD
DevOps.js Conf 2021DevOps.js Conf 2021
9 min
Cómo hacer CI/CD correctamente en 2021: Una guía para CI y CD
La entrega de software es una prioridad para las organizaciones que poseen software, sin embargo, sigue siendo uno de los problemas más desafiantes a los que se enfrentan las empresas hoy en día. La integración continua (CI) y la entrega continua (CD) son prácticas de software que permiten a las organizaciones y equipos entregar código a los clientes de manera rápida, segura y repetida. Ya sea para mejorar el desarrollo, las operaciones o la seguridad, los pipelines de CI/CD brindan a los ingenieros y equipos más tiempo para trabajar en cosas que importan y menos tiempo luchando con el riesgo, los estándares y la velocidad de las implementaciones. Únete a esta sesión para aprender sobre los componentes de CI/CD y cómo construir y escalar pipelines para el futuro.

Workshops on related topic

Aporta Calidad y Seguridad al pipeline de CI/CD
DevOps.js Conf 2022DevOps.js Conf 2022
76 min
Aporta Calidad y Seguridad al pipeline de CI/CD
WorkshopFree
Elena Vilchik
Elena Vilchik
En esta masterclass repasaremos todos los aspectos y etapas al integrar tu proyecto en el ecosistema de Calidad y Seguridad del Código. Tomaremos una aplicación web simple como punto de partida y crearemos un pipeline de CI que active el monitoreo de calidad del código. Realizaremos un ciclo completo de desarrollo, comenzando desde la codificación en el IDE y abriendo una Pull Request, y te mostraré cómo puedes controlar la calidad en esas etapas. Al final de la masterclass, estarás listo para habilitar esta integración en tus propios proyectos.
Despliega una aplicación de componentes web y configura un flujo de integración continua
DevOps.js Conf 2022DevOps.js Conf 2022
111 min
Despliega una aplicación de componentes web y configura un flujo de integración continua
Workshop
Philippe Ozil
Philippe Ozil
Únete a nosotros en un masterclass en el que desplegarás una aplicación Node.js simple construida con componentes web y configurarás un flujo de integración continua (CI). Aprenderás sobre el poder del Lightning Web Runtime (LWR) y las GitHub Actions.
Potenciando tu CI/CD con GitHub Actions
DevOps.js Conf 2022DevOps.js Conf 2022
155 min
Potenciando tu CI/CD con GitHub Actions
Workshop
David Rubio Vidal
David Rubio Vidal
Obtendrás conocimiento sobre los conceptos de GitHub Actions, como:- El concepto de secretos de repositorio.- Cómo agrupar pasos en trabajos con un propósito determinado.- Dependencias y orden de ejecución de trabajos: ejecutar trabajos en secuencia y en paralelo, y el concepto de matriz.- Cómo dividir la lógica de los eventos de Git en diferentes archivos de flujo de trabajo (en empuje de rama, en empuje a master/principal, en etiqueta, en implementación).- Para respetar el concepto de DRY (No te repitas), también exploraremos el uso de acciones comunes, tanto dentro del mismo repositorio como desde un repositorio externo.
Depuración de aplicaciones JavaScript en CI/CD
DevOps.js Conf 2022DevOps.js Conf 2022
124 min
Depuración de aplicaciones JavaScript en CI/CD
Workshop
Cecelia Martinez
Cecelia Martinez
- Causas de compilaciones fallidas en pipelines de CI/CD- Enfoques para la depuración (revisión de registros, acceso a entornos, reproducción de problemas)- Depuración de causas relacionadas con la aplicación (pruebas fallidas, compilaciones de la aplicación fallidas)- Depuración de causas relacionadas con el pipeline (configuración del pipeline, problemas de entorno, problemas de contenedor)
CI/CD 101 con CircleCI
DevOps.js Conf 2021DevOps.js Conf 2021
149 min
CI/CD 101 con CircleCI
Workshop
Angel Rivera
Zan Markan
2 authors
Los conceptos de Integración Continua y Entrega/Despliegue Continuo (CI/CD) son cada vez más adoptados por muchas organizaciones y equipos tecnológicos. CI/CD permite a los equipos establecer procesos que aumentan la velocidad, colaboración y calidad de su código. CI/CD permite a los equipos de desarrollo y operaciones romper silos innecesarios y obtener un conocimiento más profundo de sus respectivas áreas.
En este masterclass, los participantes serán introducidos a los fundamentos básicos de la Integración Continua y Entrega/Despliegue Continuo. Los participantes aprenderán los principios fundamentales de CI/CD y tendrán la oportunidad de reforzar lo que han aprendido en un taller práctico con la plataforma CircleCI. El taller demostrará la configuración de construcción de CI/CD, confirmaciones de código, construcción de confirmaciones, pruebas de código y empaquetado. Los participantes se irán con una experiencia práctica y comprensión de lo que implica CI/CD.
Tabla de contenidos- Introducción al tema de CI/CD y motivación para ello- Cómo se construyen y despliegan diferentes tipos de proyectos JavaScript (desde sitios estáticos hasta APIs)- Resumen de los pasos manuales comunes y cómo podríamos automatizarlos- Implementación de un pipeline de CI/CD desde cero- Resumen de los orbs de CircleCI- Pruebas en múltiples versiones de Node- Depuración de construcciones con SSH- Caché de dependencias- Seguridad / escaneo de vulnerabilidades- Despliegue en diferentes salidas
Requisitos previos- Código y git instalados- Cuenta de GitHub
github.com/CircleCI-Public/cicd-workshop-js