Lanzamiento de GitLab 10.8: duplicaci贸n de inserci贸n de c贸digo abierto e implementaci贸n incremental

Una imagen para llamar la atenci贸n.


隆Nos complace presentarle la nueva versi贸n de GitLab con muchas innovaciones y mejoras! En esta versi贸n, mejoramos la automatizaci贸n de la versi贸n, compartimos la funcionalidad previamente pagada, aceleramos la reparaci贸n de las vulnerabilidades de seguridad y mucho m谩s.


M谩s confianza en la implementaci贸n


El lanzamiento de una nueva funcionalidad siempre est谩 asociado con la emoci贸n, porque incluso con las pruebas m谩s rigurosas existe el riesgo de complicaciones imprevistas. Nuestra nueva funci贸n de Despliegue incremental permite la implementaci贸n de c贸digo solo para un subconjunto espec铆fico de usuarios. Ahora, en lugar de implementar actualizaciones para todos los usuarios a la vez, puede aumentar gradualmente el n煤mero de pods de Kubernetes que se est谩n implementando. En caso de complicaciones, puede revertir los cambios antes de que afecten a toda la base de usuarios. Esta innovaci贸n proporciona una capa adicional de protecci贸n para los usuarios contra errores imprevistos, lo que idealmente le permite implementar con m谩s frecuencia.


Empujar reflejo ahora es de dominio p煤blico


Inicialmente, la duplicaci贸n autom谩tica solo estaba disponible para una suscripci贸n paga, sin embargo, desde el momento en que se lanz贸, esta funcionalidad fue una de las m谩s solicitadas por los usuarios; muchos solicitaron transferirla al p煤blico. Nos tomamos en serio estos problemas y creemos que encontrar el equilibrio perfecto entre la funcionalidad paga y la disponible p煤blicamente es una de las 谩reas clave de la pol铆tica de gesti贸n de proyectos . Por lo tanto, a partir de esta versi贸n, los espejos de empuje estar谩n disponibles p煤blicamente .


Gracias a esto, los usuarios de GitLab Core tienen nuevas oportunidades relacionadas, entre otras cosas, con el desarrollo independiente y la migraci贸n. Los freelancers ahora podr谩n duplicar cualquier repositorio de clientes, y los usuarios que cambien a GitLab desde otros repositorios de git podr谩n aprovechar las capacidades de duplicaci贸n para simplificar el proceso de migraci贸n.


Siempre que sea posible, nos esforzamos por llevar la funcionalidad al dominio p煤blico, tanto para atraer nuevos usuarios de GitLab como para aumentar el n煤mero de personas involucradas en el desarrollo de software de c贸digo abierto .


Aceleraci贸n de vulnerabilidad


Es casi imposible rastrear vulnerabilidades en el c贸digo sin ninguna automatizaci贸n, por lo que GitLab incluye varios sistemas de seguridad integrados, como SAST , DAST , as铆 como escanear contenedores y dependencias . En esta versi贸n, seguimos trabajando en esta direcci贸n.


Si se encuentra una vulnerabilidad, debe corregirla o ignorarla en caso de un falso positivo. Nuestros nuevos informes de seguridad interactivos le permitir谩n realizar la acci贸n correspondiente directamente desde el informe: puede rechazar la vulnerabilidad o crear una tarea para solucionarlo. Esta funcionalidad simplifica el proceso de trabajar con vulnerabilidades y, como resultado, acelera la liberaci贸n de c贸digo seguro.


Esperando tu respuesta!


Esperamos su reacci贸n a las innovaciones de este lanzamiento. 驴Qu茅 le gust贸? 驴Qu茅 deber铆amos mejorar? Leeremos sus comentarios sobre el art铆culo original con inter茅s y continuaremos trabajando para mejorar GitLab.


隆Gracias por tu participaci贸n!


Insignia MVP de GitLab


MVP de este mes - Alexis Reigel


Alexis agreg贸 una caracter铆stica muy 煤til para crear Runners CI comunes para grupos . Esta funcionalidad ha sido solicitada por los usuarios durante m谩s de un a帽o, y la contribuci贸n de Alexis finalmente ha permitido implementarla. Ahora es mucho m谩s f谩cil administrar corredores de proyectos para un grupo espec铆fico.


Gracias, Alexis En agradecimiento, le enviamos un su茅ter caracter铆stico, calcetines y tanuki hechos a mano con s铆mbolos GitLab.


Despliegue incremental (PREMIUM, ULTIMATE, PLATA, ORO)


Al realizar cambios a gran escala en su aplicaci贸n, es aconsejable implementar la versi贸n en un peque帽o subconjunto de usuarios para obtener comentarios e identificar posibles problemas. Despu茅s de eso, puede aumentar constantemente el porcentaje de usuarios para los que se realiza la implementaci贸n hasta que la nueva versi贸n reemplace por completo a la anterior. Por lo tanto, si se detectan problemas en alg煤n momento, la reversi贸n del producto afectar谩 a menos usuarios.


En GitLab 10.8, agregamos la capacidad de implementar c贸digo de forma incremental en 10, 25, 50 y 100 por ciento de sus hogares. Tambi茅n puede aplicar este enfoque en Auto DevOps utilizando la INCREMENTAL_ROLLOUT_ENABLED entorno INCREMENTAL_ROLLOUT_ENABLED .


Despliegues incrementales de despliegue


Documentaci贸n de implementaci贸n incremental


Los espejos retrovisores ahora est谩n disponibles al p煤blico (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)


Duplicar repositorios le permite copiar repositorios Git de una ubicaci贸n a otra. Esto facilita el trabajo con varias instancias de GitLab: por ejemplo, puede reflejar los resultados del trabajo de su equipo en la instancia personal de GitLab de sus clientes. La duplicaci贸n autom谩tica tambi茅n facilita mover un proyecto a GitLab desde otros repositorios, mientras que el repositorio original desde el que se realiza el movimiento sigue siendo relevante.


Anteriormente, la duplicaci贸n de inserci贸n estaba disponible en GitLab Starter, y ahora tambi茅n en Core.


Documentaci贸n de duplicaci贸n de empuje


Push Mirroring ahora de c贸digo abierto


Comentarios interactivos en informes de seguridad (versi贸n alfa) (ULTIMATE, GOLD)


Los informes de seguridad lo ayudan a identificar posibles vulnerabilidades en su software, y luego puede tomar medidas para solucionarlos.


A partir de GitLab 10.8, puede crear tareas de reparaci贸n de vulnerabilidades directamente desde la ventana del informe de seguridad. Tambi茅n puede rechazar una vulnerabilidad espec铆fica en caso de un falso positivo. Sus comentarios se muestran directamente en el informe.


Documentaci贸n de informes de seguridad


Comentarios interactivos en informes de seguridad (alfa)


B煤squeda de archivos difusos para Web IDE (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)


Hemos agregado una b煤squeda de archivos difusos en el IDE web para simplificar la navegaci贸n para proyectos grandes. La b煤squeda difusa est谩 disponible usando la combinaci贸n de teclas Cmd + p / Ctrl + p .


Anteriormente, ten铆a que mirar directamente el 谩rbol de archivos del proyecto para encontrar un archivo espec铆fico.


Documentaci贸n web IDE


Buscador de archivos difusos en el IDE web


Confirmaci贸n de archivos individuales en el IDE web (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)


Hemos agregado la capacidad de agregar (organizar) archivos individuales a una confirmaci贸n en el IDE web, lo que permite confirmaciones a peque帽a escala. Los cambios introducidos se agregan a la lista correspondiente de cambios no escalonados, despu茅s de lo cual puede seleccionar los archivos necesarios de esta lista y agregarlos a la lista de cambios escalonados; estos archivos formar谩n parte de la pr贸xima confirmaci贸n.


Documentaci贸n web IDE


Etapa y confirmaci贸n por archivo en el IDE web


Horarios para completar tareas para grupos (PREMIUM, ULTIMATE, SILVER, GOLD)


Los cronogramas de tareas se utilizan en muchos proyectos para rastrear el progreso de un hito en particular. A medida que m谩s y m谩s equipos usan la divisi贸n en grupos y subgrupos, recibimos muchas solicitudes para agregar dichos cronogramas a nivel grupal.


En esta versi贸n, agregamos cronogramas de ejecuci贸n de tareas para hitos grupales. Estos gr谩ficos funcionan exactamente de la misma manera que los gr谩ficos del proyecto: muestran el progreso de todas las tareas asociadas con el hito, lo que proporciona una demostraci贸n clara del flujo de trabajo. Usando estos horarios, puede evaluar la probabilidad de completar el trabajo a tiempo y hacer los cambios necesarios en el trabajo.


Por analog铆a con los cronogramas de proyectos para completar tareas, los cronogramas para grupos tienen en cuenta tanto el n煤mero de tareas como su peso. Adem谩s, los gr谩ficos de grupo tienen en cuenta las tareas asociadas con el hito para todos los subgrupos del grupo correspondiente.


Documentaci贸n del cronograma de tareas


Cuadro de quemado de hitos grupales


Las m茅tricas de Prometheus son compartidas, habilitadas por defecto (CORE, STARTER, PREMIUM, ULTIMATE)


GitLab es a menudo un elemento clave del ciclo de entrega de software, por lo que es importante asegurarse de su funcionamiento estable y correcto. En versiones anteriores, agregamos m茅tricas de Prometheus para las dependencias de Redis y Postgres, as铆 como varias m茅tricas experimentales en la versi贸n 9.3 . Desde entonces, hemos cubierto las m茅tricas con algunas partes m谩s de nuestra base de c贸digo, y tambi茅n hemos reducido el impacto negativo de la recopilaci贸n de m茅tricas en el rendimiento. Ahora usamos estas m茅tricas para monitorear el servicio GitLab.com.


Como resultado de las innovaciones pasadas, hemos lanzado el monitoreo de Prometheus en accesibilidad general (GA, disponibilidad general) desde la versi贸n 10.8. Para todas las nuevas instalaciones de GitLab, la supervisi贸n estar谩 habilitada de forma predeterminada. Tambi茅n lanzamos una versi贸n de prueba del panel de Grafana para la visualizaci贸n de m茅tricas.


Documentaci贸n de monitoreo de Prometheus en GitLab


Las m茅tricas del servicio GitLab Prometheus ahora son GA, activadas de forma predeterminada para nuevas instalaciones


Otras mejoras a GitLab 10.8


Confirmaci贸n de actualizaciones de la pol铆tica de uso (CORE, STARTER, PREMIUM, ULTIMATE)


GitLab se est谩 preparando para implementar el GDPR y, como parte de este proceso, les pedimos a nuestros usuarios que revisen y confirmen los T茅rminos de uso actualizados. En lugar de usar esta funcionalidad una vez y olvidarnos de ella, decidimos agregarla a GitLab para que los usuarios puedan usar esta funci贸n en el futuro.


Cuando el administrador de la instancia habilita esta funci贸n, los usuarios deber谩n revisar los T茅rminos de uso y aceptarlos antes de continuar con GitLab. Hasta que el usuario confirme este mensaje, se bloquear谩 su acceso a GitLab a trav茅s de la web, API y Git.


El mensaje con los T茅rminos de uso se puede cambiar por completo en la configuraci贸n del administrador. Adem谩s, dado que esta publicaci贸n se basa en el Markdown con sabor a GitLab , incluso puede contener enlaces a otras p谩ginas.


Todas las confirmaciones de los usuarios se almacenan en una base de datos, por lo que puede utilizar esta informaci贸n en el futuro.


Documentaci贸n de confirmaci贸n para actualizaciones de pol铆ticas de uso


Buscar y filtrar men煤s por 茅picas de mapas de ruta (ULTIMATE, GOLD)


Los men煤s de b煤squeda y filtro son una parte muy 煤til de la interfaz, familiar para los usuarios y utilizados en GitLab. Decidimos usar esta funcionalidad para buscar y filtrar las epopeyas de la hoja de ruta al visualizarla.


En esta versi贸n, puede filtrar las epopeyas por autor y etiqueta en el modo de vista de hoja de ruta. Adem谩s, puede buscar epopeyas por nombre y descripci贸n. Esto permitir谩 a los usuarios encontrar epopeyas relevantes para ellos y sus equipos y marcar enlaces para guardar la configuraci贸n de b煤squeda.


Barra de b煤squeda y filtro de hoja de ruta 茅pica


Documentaci贸n de hoja de ruta


Discusiones de API (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)


Las discusiones (ramas de comentarios) aparecen en muchas partes de la interfaz web de GitLab: en tareas, solicitudes de fusi贸n, epopeyas, fragmentos y confirmaciones. En esta versi贸n, hemos ampliado las capacidades de la API para que pueda acceder y administrar discusiones directamente a trav茅s de la API de GitLab, lo que har谩 que sus flujos de trabajo sean a煤n m谩s flexibles.


Documentaci贸n de discusi贸n API


SAST para PHP y Java Gradle (ULTIMATE, GOLD)


Las pruebas de seguridad de aplicaciones est谩ticas (SAST) solo son efectivas cuando su proyecto utiliza un lenguaje de programaci贸n compatible con una de las herramientas de GitLab. Es por eso que estamos aumentando la cantidad de estos idiomas con cada lanzamiento, agregando el m谩s popular de ellos.


En GitLab 10.8, los proyectos escritos en PHP y Java con Gradle se pueden verificar autom谩ticamente para detectar vulnerabilidades de seguridad. Para hacer esto, ni siquiera necesita determinar el idioma: se determina autom谩ticamente en tiempo de ejecuci贸n.


SAST para PHP y Java Gradle


Documentaci贸n SAST


Definici贸n de variables para transportadores manuales (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)


A menudo es necesario ejecutar una 煤nica ejecuci贸n de CI con configuraciones 煤nicas para probar un caso de uso espec铆fico. Por ejemplo, podemos aplicar temporalmente una estrategia de implementaci贸n espec铆fica o excluir un paso espec铆fico del proceso de compilaci贸n de la aplicaci贸n.


GitLab 10.8 ofrece la capacidad de definir variables especiales de una sola vez al iniciar la canalizaci贸n manualmente. No necesitar谩 cambiar las variables para todo el proyecto para realizar una sola ejecuci贸n espec铆fica, lo que hace que sea mucho m谩s f谩cil ejecutar pruebas personalizadas con su propia configuraci贸n.


Especificar variables para tuber铆as manuales


Documentaci贸n de lanzamiento de tuber铆a


La fusi贸n se confirma en el widget de solicitud de fusi贸n (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)


Continuamos trabajando en peque帽as caracter铆sticas de GitLab que son de gran importancia cuando lo usamos. Este cambio es un buen ejemplo. Si utiliza confirmaciones de fusi贸n en su proyecto, aparecer谩 un enlace a la confirmaci贸n de fusi贸n en el widget de solicitud de fusi贸n inmediatamente despu茅s de la fusi贸n. Mediante este enlace, puede ir directamente a la confirmaci贸n de fusi贸n.


Para muchos flujos de trabajo, ser谩 煤til poder ir directamente al commit de fusi贸n. Por ejemplo, algunos equipos transfieren estos compromisos de fusi贸n para liberar sucursales o etiquetarlos para probarlos o implementarlos en producci贸n. Con este cambio, le resultar谩 m谩s f谩cil averiguar si la solicitud de fusi贸n es parte de la rama que est谩 a punto de implementar.


Fusionar confirmaci贸n en widget de solicitud de fusi贸n


Documentaci贸n de solicitud de fusi贸n


Notas del sistema para agregar peso de tarea (ARRANQUE, PREMIUM, ULTIMATE, BRONCE, PLATA, ORO)


El peso de la tarea le permite asignar un valor num茅rico espec铆fico a la tarea GitLab, indicando su tama帽o. En particular, los equipos usan pesos de tareas para planificar el desarrollo cuando trabajan en Agile u otras metodolog铆as de desarrollo 谩gil. En esta versi贸n, hemos agregado notas del sistema que aparecen cada vez que agrega o cambia el peso de una tarea. Esto ayudar谩 a los miembros del equipo a realizar un seguimiento de los cambios para evaluar el trabajo, as铆 como simplemente saber cu谩ndo se realiz贸 la primera evaluaci贸n.


Nota del sistema para agregar peso al problema


Documentaci贸n de pesos de tareas


Peso de la tarea y estado de bloqueo en la exportaci贸n CSV (STARTER, PREMIUM, ULTIMATE, BRONZE, SILVER, GOLD)


En esta versi贸n, agregamos el peso de la tarea y su estado de bloqueo a la exportaci贸n CSV. Esto le brinda a煤n m谩s informaci贸n sobre las tareas para que pueda hacer cualquier tipo de an谩lisis y flujo de trabajo fuera de GitLab.


Documentaci贸n de exportaci贸n CSV


Solicitudes de fusi贸n de GitLab en Jira Development Panel (PREMIUM, ULTIMATE, SILVER, GOLD)


En esta versi贸n, hemos mejorado la integraci贸n con el Panel de desarrollo de Jira: ahora incluye solicitudes de fusi贸n de GitLab. Esto significa que si usa una integraci贸n especial, las solicitudes de fusi贸n tambi茅n se mostrar谩n en la barra lateral de la tarea Jira relacionada, adem谩s de las confirmaciones y ramas de Gitlab.


Tenga en cuenta que en la interfaz de Jira, las solicitudes de fusi贸n se denominan "solicitudes de extracci贸n".


Solicitudes de fusi贸n de GitLab en Jira Development Panel


Documentaci贸n de integraci贸n del panel de desarrollo de GitLab Jira


Notificaciones por correo electr贸nico para comentarios sobre epopeyas (ULTIMATE, GOLD)


En el lanzamiento anterior, presentamos hilos de comentarios para 茅picas. En esta versi贸n, trabajamos juntos en 茅picas a煤n m谩s similar al resto de GitLab, agregando notificaciones por correo electr贸nico. Como anteriormente en tareas y solicitudes de fusi贸n, recibir谩 notificaciones por correo electr贸nico (especificado por usted en la configuraci贸n de GitLab) despu茅s de la actividad correspondiente en la epopeya. Por ejemplo, cuando un miembro del equipo te menciona en una descripci贸n de una epopeya o comenta sobre ella, recibir谩s una notificaci贸n si configuras tus notificaciones para un grupo de esta epopeya en el nivel Participar o superior.


Notificaciones de correo electr贸nico 茅picas


Documentaci贸n 茅pica


Visualizaci贸n mejorada de descripciones de confirmaci贸n largas (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)


Una buena descripci贸n de confirmaci贸n que explica por qu茅 era necesario el cambio ayuda a realizar peque帽as confirmaciones at贸micas y simplifica la lectura de los registros de confirmaci贸n para el resto del equipo. 隆Mejoramos la visualizaci贸n de descripciones largas, por lo que se hizo a煤n m谩s f谩cil leerlas!


Visualizaci贸n mejorada de mensajes de confirmaci贸n largos


Soporte para fragmentos incorporados (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)


Los fragmentos son 煤tiles para discutir parte del c贸digo. Ahora puede insertar fragmentos p煤blicos en su sitio web. Esto ayuda mucho en la documentaci贸n, complementando una publicaci贸n de blog con ejemplos de c贸digo o en un sitio web personal. Gracias por esta oportunidad Haseeb .


Documentaci贸n de soporte de fragmentos incorporada


API para los idiomas del proyecto (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)


Con la nueva API para idiomas, puede recopilar estad铆sticas sobre los idiomas del proyecto. Esto puede ser 煤til para informes o estudios; por ejemplo, para comprender qu茅 lenguajes de programaci贸n se usan con mayor frecuencia en su organizaci贸n o en un proyecto de c贸digo abierto en GitLab.com. 隆Gracias Roger por tu aporte!


Documentaci贸n API para los idiomas del proyecto.


GitLab Runner para grupos (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)


Los corredores de GitLab tienen dos tipos de configuraciones: para toda la instancia (compartida) o en el nivel de proyecto (espec铆fico). Sin embargo, a veces es necesario proporcionar un conjunto de Runners a un grupo completo de proyectos sin dar acceso a nadie desde el exterior. En GitLab.com, por ejemplo, esto funciona bien debido al v铆nculo directo entre grupos y organizaciones.


Comenzando con GitLab 10.8, puede conectar su GitLab Runner a un grupo espec铆fico, y cada proyecto de este grupo recibir谩 capacidades de CI / CD sin ninguna configuraci贸n adicional. Y los nuevos proyectos recibir谩n todos los beneficios de los corredores grupales inmediatamente despu茅s de su creaci贸n. Gracias Alexis por esta caracter铆stica.


Corredores de Gitlab para grupos


Documentaci贸n de configuraci贸n de corredores de GitLab


Prueba de compatibilidad de pol铆ticas de entorno para Auto DevOps (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)


Antes de esta versi贸n, Auto DevOps usaba un modelo de implementaci贸n continua de manera predeterminada: un aumento en la production produc铆a autom谩ticamente cada vez que se iniciaba una canalizaci贸n en la rama master . Esto es muy 煤til, pero a veces por la integridad de la aplicaci贸n o la disponibilidad del entorno de producci贸n, debe utilizar un entorno de prueba adicional. Solo despu茅s de pasar todas las comprobaciones, puede iniciar manualmente la implementaci贸n en producci贸n.


La plantilla de DevOps autom谩tico anteriormente admit铆a esta funci贸n, pero no estaba habilitada de manera predeterminada. Si alguien quer铆a usar la ejecuci贸n a trav茅s de un entorno de prueba, necesitaba crear un .gitlab-ci.yml separado.


Comenzando con GitLab 10.8, las plantillas de Auto DevOps permitir谩n a los usuarios habilitar la staging utilizando una variable de entorno. Puede especificar STAGING_ENABLED para todo el grupo, para un proyecto o incluso para un lanzamiento espec铆fico. El despliegue en production deber谩 iniciarse manualmente, y puede hacerlo en el momento adecuado.


Soporte de pol铆ticas de entorno provisional para Auto DevOps


Documentaci贸n de la pol铆tica de implementaci贸n de DevOps autom谩tico


Las plantillas de proyecto ahora funcionan con Auto DevOps (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)


En GitLab, puede comenzar f谩cilmente un proyecto con un idioma espec铆fico: solo use plantillas. Esto le permitir谩 iniciar r谩pidamente una nueva aplicaci贸n y luego personalizarla seg煤n sus necesidades.


GitLab 10.8 incluye versiones avanzadas de las plantillas Rails, Spring y Express, para que pueda aprovechar al m谩ximo Auto DevOps al crear nuevos proyectos. Con estas plantillas avanzadas, puede pasar de la idea a la producci贸n en minutos.


Las plantillas de proyecto ahora funcionan con Auto DevOps


Documentaci贸n de plantilla basada en proyectos


Mejoras geogr谩ficas (PREMIUM, ULTIMATE, SILVER, GOLD)


  • Geo viene con Git 2.16.3, que reducir谩 significativamente el tiempo de sincronizaci贸n de los repositorios con una gran cantidad de enlaces.
  • Despu茅s de la clonaci贸n inicial del repositorio, el nodo Geo secundario realizar谩 git pack-objects para liberar espacio en disco. Tambi茅n realizar谩 regularmente la recolecci贸n de basura ( git gc ).
  • Con las comprobaciones de repositorio activadas, Geo ejecutar谩 peri贸dicamente git fsck en cada repositorio de nodo secundario.
  • Se han mejorado las m茅tricas de Geo Prometheus: se ha vuelto m谩s f谩cil encontrar repositorios con sumas de verificaci贸n incompatibles.

Documentaci贸n Geo




Las notas de lanzamiento detalladas y las instrucciones de actualizaci贸n / instalaci贸n se pueden encontrar en la publicaci贸n original en ingl茅s: GitLab 10.8 lanzado con despliegues incrementales, adem谩s de espejo de inserci贸n de c贸digo abierto .


La traducci贸n del ingl茅s fue realizada por rishavant y sgnl_05 .

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


All Articles