[{"data":1,"prerenderedAt":945},["ShallowReactive",2],{"/es/get-started/continuous-integration":3,"navigation-es":205,"banner-es":624,"footer-es":637,"footer-source-/es/get-started/continuous-integration/":845},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":8,"content":11,"_id":198,"_type":199,"title":200,"_source":201,"_file":202,"_stem":203,"_extension":204},"/es/get-started/continuous-integration","get-started",false,"",{"title":9,"ogTitle":9,"description":10,"ogDescription":10},"Inicio rápido para GitLab Continuous Integration","Se le guiará a través del proceso de configurar un proyecto en GitLab y crear una configuración CI simple en código.",[12,21,28,156],{"type":13,"componentName":13,"componentContent":14},"CommonBreadcrumbs",{"crumbs":15},[16,20],{"title":17,"config":18},"Comenzar",{"href":19},"/get-started/",{"title":9},{"type":22,"componentName":22,"componentContent":23},"CommonArticleHero",{"title":9,"readTime":24,"text":25,"config":26},"20 min para completar","Bienvenido a la guía de inicio rápido de GitLab CI, donde se le guiará a través del proceso de configurar un proyecto en GitLab y crear una configuración CI simple en código. Esta guía le permitirá iniciar rápidamente su viaje con GitLab CI.\n\nLas siguientes tareas se describirán en esta guía de inicio rápido:\n\n- Establecer un nuevo proyecto.\n- Crear su configuración CI/CD inicial y ejecutar el pipeline.\n- Acceder y revisar los resultados de la ejecución.\n- Introducir condiciones basadas en reglas para determinar ejecuciones de trabajos.\n- Aprovechar el poder de las plantillas de pipeline para integración perfecta de configuraciones beneficiosas.",{"bodyText":27},true,{"type":29,"componentName":29,"componentContent":30},"CommonSideNavigationWithTree",{"anchors":31,"components":62},{"text":32,"data":33},"En esta página",[34,38,42,46,50,54,58],{"text":35,"config":36},"Paso 1: Crear un nuevo proyecto/repositorio",{"href":37},"#step-1",{"text":39,"config":40},"Paso 2: Configurar la configuración CI",{"href":41},"#step-2",{"text":43,"config":44},"Paso 3 - Confirmar el cambio y ejecutar el pipeline",{"href":45},"#step-3",{"text":47,"config":48},"Paso 4 - Ver ejecución del pipeline y resultados de pruebas",{"href":49},"#step-4",{"text":51,"config":52},"Paso 5 - Fallar el pipeline",{"href":53},"#step-5",{"text":55,"config":56},"Paso 6 - Implementar condiciones de falla en todo el pipeline",{"href":57},"#step-6",{"text":59,"config":60},"Paso 7 - Mejorar su configuración con plantillas de pipeline integradas",{"href":61},"#step-7",[63,73],{"type":64,"componentName":64,"componentContent":65},"CommonCopy",{"config":66,"cards":67},{"noDecoration":27},[68],{"config":69,"title":71,"description":72},{"icon":70},"InfoTip","Antes de comenzar","Asegúrese de tener una cuenta de GitLab. Si no tiene una, [regístrese aquí](https://gitlab.com/users/sign_up).",{"type":74,"componentName":74,"componentContent":75},"GetStartedAccordion",{"groups":76},[77,89,116,124,132,140,148],{"config":78,"header":35,"show":80,"hide":81,"items":82},{"id":79},"step-1","Mostrar todo","Ocultar todo",[83,86],{"header":84,"content":85},"Resumen del paso","Dentro de un proyecto, se gestionan varios componentes como su base de código, configuración CI, planificación, análisis y miembros del equipo. En esta guía, crearemos un nuevo proyecto con una pizarra en blanco, que contiene solo un archivo readme.",{"header":87,"content":88},"Cómo hacerlo","* Cree un nuevo proyecto haciendo clic en el ícono más en el lado derecho de la barra superior, y seleccionando **Nuevo proyecto/repositorio**\n* Seleccione **Crear proyecto en blanco**. Bajo `Nombre del proyecto` escriba **my-project**.\n* Haga clic en **Crear proyecto**.\n* ¡Felicitaciones! ha creado exitosamente su primer proyecto.",{"config":90,"header":39,"show":80,"hide":81,"items":92},{"id":91},"step-2",[93,95,98,101,104,107,110,113],{"header":84,"content":94},"En GitLab, la configuración CI se define en código usando sintaxis YAML. Esta configuración especifica instrucciones a la máquina runner sobre ejecución de trabajos, orden de trabajos, condiciones de trabajos y más. Para definir la configuración CI, necesita crear un archivo llamado **.gitlab-ci.yml**, que debe ubicarse en la raíz de su repositorio. En esta guía, utilizaremos el IDE Web para crear y editar este archivo.",{"header":96,"content":97},"Crear el archivo de configuración","Para acceder al IDE Web, simplemente haga clic en el botón rápido del IDE Web ubicado en su proyecto. Una vez dentro del IDE Web, navegue al explorador de archivos en el lado izquierdo. Haga clic derecho dentro del explorador de archivos y elija la opción **Nuevo archivo**. Nombre el archivo recién creado **.gitlab-ci.yml**.",{"header":99,"content":100},"Definir las etapas del pipeline","El orden de ejecución de trabajos está determinado por las etapas definidas en la configuración. En esta guía, definiremos tres etapas: **build, test y package,** en ese orden específico. Copie y pegue el siguiente código en el archivo **.gitlab-ci.yml**:\n\n```\n  stages:\n    - build\n    - test\n    - package\n```",{"header":102,"content":103},"Definir los trabajos del pipeline","Imagine un escenario donde tiene la tarea de crear dos archivos de texto. Es de suma importancia que la concatenación de estos archivos incluya la frase \"Hello world.\" Nuestro objetivo es construir, **probar** y **empaquetar** este requisito utilizando trabajos de pipeline.",{"header":105,"content":106},"Definir un trabajo de construcción","Especificaremos un trabajo de construcción que logre las siguientes tareas: crear un archivo de texto con la palabra \"Hello\", crear otro archivo de texto con la palabra \"World\", y generar un tercer archivo que almacene el contenido combinado de los dos archivos. Guardaremos el tercer archivo como un artefacto, para que los trabajos posteriores en las etapas de prueba y empaquetado puedan acceder a él. Inserte el código proporcionado debajo del bloque de etapas:\n\n```\n  build-job:\n    stage: build\n    script:\n      - echo \"Hello \" | tr -d \"\\n\" > file1.txt\n      - echo \"world\" > file2.txt\n      - cat file1.txt file2.txt > compiled.txt\n    artifacts:\n    paths:\n      - compiled.txt\n```",{"header":108,"content":109},"Definir un trabajo de prueba","Para validar la integridad de nuestra construcción, incorporaremos un trabajo de prueba. Este trabajo examinará si el archivo **compiled.txt** efectivamente contiene la frase esperada \"Hello world\". Inserte el siguiente código debajo del trabajo de construcción:\n\n```\n  test:\n    stage: test\n    script: cat compiled.txt | grep -q 'Hello world '\n```",{"header":111,"content":112},"Definir un trabajo de empaquetado","Tras la finalización exitosa de la prueba, nuestro siguiente objetivo es generar un paquete para nuestro código. Para lograr esto, incluiremos un trabajo de empaquetado. Es importante notar que si la prueba falla, todo el pipeline será considerado no exitoso y no procederá. Inserte el código proporcionado debajo del trabajo de prueba:\n\n```\n  package:\n    stage: package\n    script: cat compiled.txt | gzip > packaged.gz\n    artifacts:\n      paths:\n        - packaged.gz\n```",{"header":114,"content":115},"Su pipeline completo debería verse así","```\n  stages:          # Lista de etapas para trabajos, y su orden de ejecución\n    - build\n    - test\n    - package\n\n  build-job:\n    stage: build\n    script:\n      - echo \"Hello \" | tr -d \"\\n\" > file1.txt\n      - echo \"world\" > file2.txt\n      - cat file1.txt file2.txt > compiled.txt\n    artifacts:\n      paths:\n        - compiled.txt\n\n  test:\n    stage: test\n    script: cat compiled.txt | grep -q 'Hello world'\n\n  package:\n    stage: package\n    script: cat compiled.txt | gzip > packaged.gz\n    artifacts:\n      paths:\n        - packaged.gz\n```\n\nAquí hay un enlace al [archivo de configuración](https://gitlab.com/tech-marketing/ci-quickstart/-/blob/main/.gitlab-ci.yml) en nuestro proyecto de ejemplo.\n\n¡¡Felicitaciones!! construyó su primer pipeline CI.",{"config":117,"header":43,"show":80,"hide":81,"items":119},{"id":118},"step-3",[120,122],{"header":84,"content":121},"Para activar la integración continua (CI) dentro de nuestro proyecto, debemos enviar el archivo **.gitlab-ci.yml** al repositorio. Una vez que este archivo esté ubicado en la raíz del repositorio, cada commit hecho al proyecto iniciará automáticamente un pipeline CI. El pipeline inicial comenzará inmediatamente después de enviar este archivo al servidor.",{"header":87,"content":123},"* Haga clic en el ícono Merge ubicado a la izquierda del explorador de archivos.\n* Proporcione un mensaje de commit como \"Adding CI configuration.\"\n* Haga clic en **Commit & Push**.\n* Cuando se le pregunte \"¿Commit to a new branch?\" seleccione \"No, Use the current branch main\".\n* Para regresar a su proyecto, haga clic en el botón **Go to project** situado en el lado inferior izquierdo.\n\n**¡Felicitaciones! Su proyecto ahora está configurado exitosamente para iniciar automáticamente un pipeline CI para cada commit de código.**",{"config":125,"header":47,"show":80,"hide":81,"items":127},{"id":126},"step-4",[128,130],{"header":84,"content":129},"Mientras el pipeline está ejecutándose, puede monitorear su estado en la pestaña **CI/CD**. Esta característica le permite rastrear fácilmente el progreso de sus trabajos, incluyendo su estado de ejecución (como si han comenzado, pasado, fallado, etc.), así como cualquier salida generada por sus scripts de trabajo.",{"header":87,"content":131},"* Navegue al proyecto GitLab y localice el menú izquierdo.\n* Haga clic en **CI/CD** en el menú, haga clic en **Pipelines**.\n* En la página **Pipelines**, localice el botón del pipeline en la columna **Status**. Haga clic en él para abrir el gráfico del pipeline.\n* Ahora, puede observar los trabajos y sus respectivos estados dentro del gráfico del pipeline.\n* Para explorar un trabajo específico, haga clic en él para abrir la consola del trabajo. Esta consola muestra todos los pasos ejecutados en la máquina Runner.\n* Abra la consola del trabajo de empaquetado para ver los pasos que fueron procesados por el runner.\n* El trabajo de empaquetado genera un artefacto, puede descargarlo haciendo clic en el botón **download** ubicado en el lado derecho.\n* Siguiendo estos pasos, puede rastrear efectivamente el estado del pipeline, inspeccionar detalles del trabajo y recuperar cualquier artefacto o paquete relevante producido durante la ejecución del pipeline.\n\n**Felicitaciones por ejecutar exitosamente su primer pipeline. ¡El pipeline tuvo éxito! Ahora ha visto los resultados y descargado el artefacto del trabajo.**",{"config":133,"header":51,"show":80,"hide":81,"items":135},{"id":134},"step-5",[136,138],{"header":84,"content":137},"Cambiaremos el valor esperado en el trabajo de prueba, el trabajo de prueba fallará así como todo el pipeline fallará.",{"header":87,"content":139},"* Edite el trabajo **test** modificando la frase \"Hello World\" a \"hello world\" (con letras minúsculas).\n* Confirme los cambios de código y proceda a ver el pipeline, similar al Paso 4.\n* Al inspeccionar el pipeline, observará que el trabajo de prueba ha fallado. Adicionalmente, el trabajo **package** subsecuente no comenzó, y el pipeline mismo falló como se esperaba.",{"config":141,"header":55,"show":80,"hide":81,"items":143},{"id":142},"step-6",[144,146],{"header":84,"content":145},"En el paso 5 vimos que la falla del trabajo falló todo el pipeline. Puede introducir lógica en su pipeline que determine cuándo una falla de trabajo causará que todo el pipeline falle con los siguientes pasos:\n\n* Evalúe las condiciones bajo las cuales quiere que una falla de trabajo resulte en falla del pipeline. Por ejemplo, puede querer forzar la falla del pipeline si un trabajo falla en la rama main o por defecto, mientras permite que las fallas de trabajo en otras ramas procedan con el pipeline.\n* Defina reglas que gobiernen el comportamiento de falla. Puede aprovechar variables como $CI_COMMIT_BRANCH para verificar la rama actual y tomar decisiones basadas en ella.\n* Establezca las condiciones apropiadas y especifique si el trabajo debe marcarse como **allow_failure: false** o **allow_failure: true**.",{"header":87,"content":147},"* Agregue condiciones rules/if a su trabajo de prueba.\n* Use la palabra clave **allow_failure** establecida en **true** o **false** basada en la rama.\n\n```\n  test:\n    stage: test\n    script: cat compiled.txt | grep -q 'Hello world'\n    rules:\n      - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH\n        allow_failure: false\n      - if: $CI_COMMIT_BRANCH\n        allow_failure: true\n```",{"config":149,"header":59,"show":80,"hide":81,"items":151},{"id":150},"step-7",[152,154],{"header":84,"content":153},"Para optimizar la configuración del pipeline, puede aprovechar las plantillas de pipeline integradas proporcionadas por GitLab. Estas plantillas ofrecen configuraciones predefinidas para casos de uso comunes, como escaneos de seguridad, implementaciones de aws, etc.\n\nSiga estos pasos para utilizar las plantillas de pipeline integradas:\n\n* Explore las plantillas de pipeline disponibles ofrecidas por GitLab para varios escenarios como construcción, pruebas, implementación y más. Estas plantillas se pueden encontrar [aquí](https://gitlab.com/gitlab-org/gitlab-foss/tree/master/lib/gitlab/ci/templates).\n* Seleccione la plantilla que se alinee con sus requisitos.\n* Incorpore la plantilla en su configuración de pipeline referenciándola en su archivo **.gitlab-ci.yml**. Típicamente puede hacer esto importando la plantilla usando la palabra clave **include** y especificando la ruta o URL al archivo de plantilla.\n\nEn esta guía agregaremos escaneo de calidad de código a nuestra configuración usando la plantilla de pipeline **Quality**.",{"header":87,"content":155},"Incorpore la plantilla de calidad de código a su **.gitlab-ci.yml** agregando este código debajo del bloque de etapas.\n\n```\n  include:\n    - template: Jobs/Code-Quality.gitlab-ci.yml\n```\n\nConfirma y envía este cambio.\n\nNotará que se agregó un trabajo de calidad de código a su pipeline. El escáner de calidad de código analizará exhaustivamente cualquier cambio de código committed a este repositorio, y proporcionará feedback valioso, resaltando cualquier problema de calidad de código que requiera atención y mejora. Este valioso insight le permite mejorar la calidad general de su base de código y optimizar su rendimiento.\n\n¡Eso es! Con estos pasos, debería poder empezar con GitLab CI y automatizar los procesos de construcción y pruebas de su proyecto.",{"type":157,"componentName":157,"componentContent":158},"CommonCardGrid",{"config":159,"title":162,"cards":163},{"columns":160,"theme":161},3,"purple","Próximos pasos",[164,176,187],{"image":165,"title":168,"description":169,"button":170},{"altText":7,"config":166},{"src":167},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1751663568/tcmwpweaxyr0hsh4m2bf.png?","¿Quieres aprender más sobre GitLab CI?","Obtenga una introducción rápida a GitLab CI en este video informativo. Perfecto para principiantes y aquellos que deseen mejorar su comprensión de GitLab CI.",{"text":171,"config":172},"Demostración de visión general de CI",{"href":173,"dataGaName":174,"dataGaLocation":175},"https://youtu.be/WKR-7clknsA","CI overview demo","body",{"image":177,"title":180,"description":181,"button":182},{"altText":7,"config":178},{"src":179},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1751663863/zgovjo3vv2ik0nbim6db.png?","Utilizar Issues","GitLab Issues se utilizan para rastrear y gestionar tareas, errores o solicitudes de características dentro de un proyecto. Proporcionan un lugar centralizado para la colaboración para discutir, asignar y rastrear el progreso de elementos de trabajo.",{"text":183,"config":184},"Issues",{"href":185,"dataGaName":186,"dataGaLocation":175},"https://docs.gitlab.com/ee/user/project/issues/","issues",{"image":188,"title":191,"description":192,"button":193},{"altText":7,"config":189},{"src":190},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1751663742/ggf3qelfxf5bjjopwagh.png?","Agregar escaneos de seguridad a su pipeline","Con los escaneos de seguridad integrados de GitLab, puede incorporarlos fácilmente en su configuración CI. Esto garantiza que los desarrolladores reciban feedback instantáneo sobre cualquier riesgo potencial en sus cambios de código.",{"text":194,"config":195},"Seguridad de la aplicación",{"href":196,"dataGaName":197,"dataGaLocation":175},"/blog/getting-started-with-gitlab-application-security/","Application security","content:es:get-started:continuous-integration.yml","yaml","Continuous Integration","content","es/get-started/continuous-integration.yml","es/get-started/continuous-integration","yml",{"_path":206,"_dir":207,"_draft":6,"_partial":6,"_locale":7,"data":208,"_id":620,"_type":199,"title":621,"_source":201,"_file":622,"_stem":623,"_extension":204},"/shared/es/main-navigation","es",{"logo":209,"freeTrial":214,"sales":219,"login":224,"items":229,"search":562,"minimal":597,"duo":611},{"config":210},{"href":211,"dataGaName":212,"dataGaLocation":213},"/es/","gitlab logo","header",{"text":215,"config":216},"Obtener una prueba gratuita",{"href":217,"dataGaName":218,"dataGaLocation":213},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":220,"config":221},"Hablar con ventas",{"href":222,"dataGaName":223,"dataGaLocation":213},"/es/sales/","sales",{"text":225,"config":226},"Iniciar sesión",{"href":227,"dataGaName":228,"dataGaLocation":213},"https://gitlab.com/users/sign_in/","sign in",[230,274,372,377,483,543],{"text":231,"config":232,"cards":234,"footer":257},"Plataforma",{"dataNavLevelOne":233},"platform",[235,241,249],{"title":231,"description":236,"link":237},"La plataforma de DevSecOps con tecnología de IA más completa",{"text":238,"config":239},"Explore nuestra plataforma",{"href":240,"dataGaName":233,"dataGaLocation":213},"/es/platform/",{"title":242,"description":243,"link":244},"GitLab Duo (IA)","Cree un software más rápido con IA en cada etapa de desarrollo",{"text":245,"config":246},"Presentamos GitLab Duo",{"href":247,"dataGaName":248,"dataGaLocation":213},"/es/gitlab-duo/","gitlab duo ai",{"title":250,"description":251,"link":252},"¿Por qué elegir GitLab?","10 razones por las que las empresas eligen GitLab",{"text":253,"config":254},"Más información",{"href":255,"dataGaName":256,"dataGaLocation":213},"/es/why-gitlab/","why gitlab",{"title":258,"items":259},"Comenzar con",[260,265,270],{"text":261,"config":262},"Ingeniería de plataformas",{"href":263,"dataGaName":264,"dataGaLocation":213},"/es/solutions/platform-engineering/","platform engineering",{"text":266,"config":267},"Experiencia de desarrollador",{"href":268,"dataGaName":269,"dataGaLocation":213},"/es/developer-experience/","Developer experience",{"text":271,"config":272},"MLOps",{"href":273,"dataGaName":271,"dataGaLocation":213},"/es/topics/devops/the-role-of-ai-in-devops/",{"text":275,"left":27,"config":276,"link":278,"lists":282,"footer":354},"Producto",{"dataNavLevelOne":277},"solutions",{"text":279,"config":280},"Ver todas las soluciones",{"href":281,"dataGaName":277,"dataGaLocation":213},"/es/solutions/",[283,309,332],{"title":284,"description":285,"link":286,"items":291},"Automatización","CI/CD y automatización para acelerar la implementación",{"config":287},{"icon":288,"href":289,"dataGaName":290,"dataGaLocation":213},"AutomatedCodeAlt","/es/solutions/delivery-automation/","automated software delivery",[292,296,300,305],{"text":293,"config":294},"CI/CD",{"href":295,"dataGaLocation":213,"dataGaName":293},"/es/solutions/continuous-integration/",{"text":297,"config":298},"Desarrollo asistido por IA",{"href":247,"dataGaLocation":213,"dataGaName":299},"AI assisted development",{"text":301,"config":302},"Gestión del código fuente",{"href":303,"dataGaLocation":213,"dataGaName":304},"/es/solutions/source-code-management/","Source Code Management",{"text":306,"config":307},"Entrega de software automatizada",{"href":289,"dataGaLocation":213,"dataGaName":308},"Automated software delivery",{"title":310,"description":311,"link":312,"items":317},"Seguridad","Entregue código más rápido sin comprometer la seguridad",{"config":313},{"href":314,"dataGaName":315,"dataGaLocation":213,"icon":316},"/es/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[318,322,327],{"text":319,"config":320},"Application Security Testing",{"href":314,"dataGaName":321,"dataGaLocation":213},"Application security testing",{"text":323,"config":324},"Seguridad en la cadena de suministro de software",{"href":325,"dataGaLocation":213,"dataGaName":326},"/es/solutions/supply-chain/","Software supply chain security",{"text":328,"config":329},"Cumplimiento y gobernanza",{"href":330,"dataGaName":331,"dataGaLocation":213},"/es/solutions/software-compliance/","Software Compliance",{"title":333,"link":334,"items":339},"Medición",{"config":335},{"icon":336,"href":337,"dataGaName":338,"dataGaLocation":213},"DigitalTransformation","/es/solutions/visibility-measurement/","visibility and measurement",[340,344,349],{"text":341,"config":342},"Visibilidad y medición",{"href":337,"dataGaLocation":213,"dataGaName":343},"Visibility and Measurement",{"text":345,"config":346},"Gestión del flujo de valor",{"href":347,"dataGaLocation":213,"dataGaName":348},"/es/solutions/value-stream-management/","Value Stream Management",{"text":350,"config":351},"Análisis e información",{"href":352,"dataGaLocation":213,"dataGaName":353},"/es/solutions/analytics-and-insights/","Analytics and insights",{"title":355,"items":356},"GitLab para",[357,362,367],{"text":358,"config":359},"Empresas",{"href":360,"dataGaLocation":213,"dataGaName":361},"/es/enterprise/","enterprise",{"text":363,"config":364},"Pequeñas empresas",{"href":365,"dataGaLocation":213,"dataGaName":366},"/es/small-business/","small business",{"text":368,"config":369},"Sector público",{"href":370,"dataGaLocation":213,"dataGaName":371},"/es/solutions/public-sector/","public sector",{"text":373,"config":374},"Precios",{"href":375,"dataGaName":376,"dataGaLocation":213,"dataNavLevelOne":376},"/es/pricing/","pricing",{"text":378,"config":379,"link":381,"lists":385,"feature":470},"Recursos",{"dataNavLevelOne":380},"resources",{"text":382,"config":383},"Ver todos los recursos",{"href":384,"dataGaName":380,"dataGaLocation":213},"/es/resources/",[386,419,442],{"title":387,"items":388},"Empezar",[389,394,399,404,409,414],{"text":390,"config":391},"Instalar",{"href":392,"dataGaName":393,"dataGaLocation":213},"/es/install/","install",{"text":395,"config":396},"Guías de inicio rápido",{"href":397,"dataGaName":398,"dataGaLocation":213},"/es/get-started/","quick setup checklists",{"text":400,"config":401},"Aprender",{"href":402,"dataGaLocation":213,"dataGaName":403},"https://university.gitlab.com/","learn",{"text":405,"config":406},"Documentación del producto",{"href":407,"dataGaName":408,"dataGaLocation":213},"https://docs.gitlab.com/","product documentation",{"text":410,"config":411},"Videos de prácticas recomendadas",{"href":412,"dataGaName":413,"dataGaLocation":213},"/es/getting-started-videos/","best practice videos",{"text":415,"config":416},"Integraciones",{"href":417,"dataGaName":418,"dataGaLocation":213},"/es/integrations/","integrations",{"title":420,"items":421},"Descubrir",[422,427,432,437],{"text":423,"config":424},"Historias de éxito del cliente",{"href":425,"dataGaName":426,"dataGaLocation":213},"/es/customers/","customer success stories",{"text":428,"config":429},"Blog",{"href":430,"dataGaName":431,"dataGaLocation":213},"/blog/","blog",{"text":433,"config":434},"Remoto",{"href":435,"dataGaName":436,"dataGaLocation":213},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":438,"config":439},"TeamOps",{"href":440,"dataGaName":441,"dataGaLocation":213},"/es/teamops/","teamops",{"title":443,"items":444},"Conectar",[445,450,455,460,465],{"text":446,"config":447},"Servicios de GitLab",{"href":448,"dataGaName":449,"dataGaLocation":213},"/es/services/","services",{"text":451,"config":452},"Comunidad",{"href":453,"dataGaName":454,"dataGaLocation":213},"/community/","community",{"text":456,"config":457},"Foro",{"href":458,"dataGaName":459,"dataGaLocation":213},"https://forum.gitlab.com/","forum",{"text":461,"config":462},"Eventos",{"href":463,"dataGaName":464,"dataGaLocation":213},"/events/","events",{"text":466,"config":467},"Socios",{"href":468,"dataGaName":469,"dataGaLocation":213},"/es/partners/","partners",{"backgroundColor":471,"textColor":472,"text":473,"image":474,"link":478},"#2f2a6b","#fff","Información sobre el futuro del desarrollo de software",{"altText":475,"config":476},"Tarjeta promocional The Source",{"src":477},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":479,"config":480},"Leer las últimas noticias",{"href":481,"dataGaName":482,"dataGaLocation":213},"/es/the-source/","the source",{"text":484,"config":485,"lists":487},"Empresa",{"dataNavLevelOne":486},"company",[488],{"items":489},[490,495,501,503,508,513,518,523,528,533,538],{"text":491,"config":492},"Acerca de nosotros",{"href":493,"dataGaName":494,"dataGaLocation":213},"/es/company/","about",{"text":496,"config":497,"footerGa":500},"Empleos",{"href":498,"dataGaName":499,"dataGaLocation":213},"/jobs/","jobs",{"dataGaName":499},{"text":461,"config":502},{"href":463,"dataGaName":464,"dataGaLocation":213},{"text":504,"config":505},"Equipo directivo",{"href":506,"dataGaName":507,"dataGaLocation":213},"/company/team/e-group/","leadership",{"text":509,"config":510},"Equipo",{"href":511,"dataGaName":512,"dataGaLocation":213},"/company/team/","team",{"text":514,"config":515},"Manual",{"href":516,"dataGaName":517,"dataGaLocation":213},"https://handbook.gitlab.com/","handbook",{"text":519,"config":520},"Relaciones con los inversores",{"href":521,"dataGaName":522,"dataGaLocation":213},"https://ir.gitlab.com/","investor relations",{"text":524,"config":525},"Centro de confianza",{"href":526,"dataGaName":527,"dataGaLocation":213},"/es/security/","trust center",{"text":529,"config":530},"AI Transparency Center",{"href":531,"dataGaName":532,"dataGaLocation":213},"/es/ai-transparency-center/","ai transparency center",{"text":534,"config":535},"Boletín",{"href":536,"dataGaName":537,"dataGaLocation":213},"/company/contact/","newsletter",{"text":539,"config":540},"Prensa",{"href":541,"dataGaName":542,"dataGaLocation":213},"/press/","press",{"text":544,"config":545,"lists":546},"Comuníquese con nosotros",{"dataNavLevelOne":486},[547],{"items":548},[549,552,557],{"text":220,"config":550},{"href":222,"dataGaName":551,"dataGaLocation":213},"talk to sales",{"text":553,"config":554},"Obtener ayuda",{"href":555,"dataGaName":556,"dataGaLocation":213},"/support/","get help",{"text":558,"config":559},"Portal de clientes",{"href":560,"dataGaName":561,"dataGaLocation":213},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":563,"login":564,"suggestions":571},"Cerrar",{"text":565,"link":566},"Para buscar repositorios y proyectos, inicie sesión en",{"text":567,"config":568},"gitlab.com",{"href":227,"dataGaName":569,"dataGaLocation":570},"search login","search",{"text":572,"default":573},"Sugerencias",[574,577,582,584,589,594],{"text":242,"config":575},{"href":247,"dataGaName":576,"dataGaLocation":570},"GitLab Duo (AI)",{"text":578,"config":579},"Sugerencias de código (IA)",{"href":580,"dataGaName":581,"dataGaLocation":570},"/es/solutions/code-suggestions/","Code Suggestions (AI)",{"text":293,"config":583},{"href":295,"dataGaName":293,"dataGaLocation":570},{"text":585,"config":586},"GitLab en AWS",{"href":587,"dataGaName":588,"dataGaLocation":570},"/es/partners/technology-partners/aws/","GitLab on AWS",{"text":590,"config":591},"GitLab en Google Cloud",{"href":592,"dataGaName":593,"dataGaLocation":570},"/es/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":250,"config":595},{"href":255,"dataGaName":596,"dataGaLocation":570},"Why GitLab?",{"freeTrial":598,"mobileIcon":603,"desktopIcon":608},{"text":599,"config":600},"Iniciar la prueba gratuita",{"href":601,"dataGaName":218,"dataGaLocation":602},"https://gitlab.com/-/trials/new/","nav",{"altText":604,"config":605},"Ícono de GitLab",{"src":606,"dataGaName":607,"dataGaLocation":602},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":604,"config":609},{"src":610,"dataGaName":607,"dataGaLocation":602},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"freeTrial":612,"mobileIcon":616,"desktopIcon":618},{"text":613,"config":614},"Más información sobre GitLab Duo",{"href":247,"dataGaName":615,"dataGaLocation":602},"gitlab duo",{"altText":604,"config":617},{"src":606,"dataGaName":607,"dataGaLocation":602},{"altText":604,"config":619},{"src":610,"dataGaName":607,"dataGaLocation":602},"content:shared:es:main-navigation.yml","Main Navigation","shared/es/main-navigation.yml","shared/es/main-navigation",{"_path":625,"_dir":207,"_draft":6,"_partial":6,"_locale":7,"title":626,"titleMobile":626,"button":627,"config":632,"_id":634,"_type":199,"_source":201,"_file":635,"_stem":636,"_extension":204},"/shared/es/banner","¡GitLab Duo Agent Platform ya está en beta pública!",{"text":628,"config":629},"Prueba la Beta",{"href":630,"dataGaName":631,"dataGaLocation":213},"/es/gitlab-duo/agent-platform/","duo banner",{"layout":633},"release","content:shared:es:banner.yml","shared/es/banner.yml","shared/es/banner",{"_path":638,"_dir":207,"_draft":6,"_partial":6,"_locale":7,"data":639,"_id":841,"_type":199,"title":842,"_source":201,"_file":843,"_stem":844,"_extension":204},"/shared/es/main-footer",{"text":640,"source":641,"edit":647,"contribute":652,"config":657,"items":662,"minimal":833},"Git es una marca registrada de Software Freedom Conservancy, y nuestro uso de «GitLab» está bajo licencia",{"text":642,"config":643},"Ver fuente de la página",{"href":644,"dataGaName":645,"dataGaLocation":646},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":648,"config":649},"Editar esta página",{"href":650,"dataGaName":651,"dataGaLocation":646},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":653,"config":654},"Contribuya",{"href":655,"dataGaName":656,"dataGaLocation":646},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":658,"facebook":659,"youtube":660,"linkedin":661},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[663,686,739,768,804],{"title":231,"links":664,"subMenu":669},[665],{"text":666,"config":667},"Plataforma de DevSecOps",{"href":240,"dataGaName":668,"dataGaLocation":646},"devsecops platform",[670],{"title":373,"links":671},[672,676,681],{"text":673,"config":674},"Ver planes",{"href":375,"dataGaName":675,"dataGaLocation":646},"view plans",{"text":677,"config":678},"¿Por qué elegir GitLab Premium?",{"href":679,"dataGaName":680,"dataGaLocation":646},"/es/pricing/premium/","why premium",{"text":682,"config":683},"¿Por qué elegir GitLab Ultimate?",{"href":684,"dataGaName":685,"dataGaLocation":646},"/es/pricing/ultimate/","why ultimate",{"title":687,"links":688},"Soluciones",[689,694,697,699,704,709,712,715,718,723,725,727,729,734],{"text":690,"config":691},"Transformación digital",{"href":692,"dataGaName":693,"dataGaLocation":646},"/es/topics/digital-transformation/","digital transformation",{"text":695,"config":696},"Seguridad y cumplimiento",{"href":314,"dataGaName":321,"dataGaLocation":646},{"text":306,"config":698},{"href":289,"dataGaName":290,"dataGaLocation":646},{"text":700,"config":701},"Desarrollo ágil",{"href":702,"dataGaName":703,"dataGaLocation":646},"/es/solutions/agile-delivery/","agile delivery",{"text":705,"config":706},"Transformación en la nube",{"href":707,"dataGaName":708,"dataGaLocation":646},"/es/topics/cloud-native/","cloud transformation",{"text":301,"config":710},{"href":303,"dataGaName":711,"dataGaLocation":646},"source code management",{"text":293,"config":713},{"href":295,"dataGaName":714,"dataGaLocation":646},"continuous integration & delivery",{"text":345,"config":716},{"href":347,"dataGaName":717,"dataGaLocation":646},"value stream management",{"text":719,"config":720},"GitOps",{"href":721,"dataGaName":722,"dataGaLocation":646},"/es/solutions/gitops/","gitops",{"text":358,"config":724},{"href":360,"dataGaName":361,"dataGaLocation":646},{"text":363,"config":726},{"href":365,"dataGaName":366,"dataGaLocation":646},{"text":368,"config":728},{"href":370,"dataGaName":371,"dataGaLocation":646},{"text":730,"config":731},"Educación",{"href":732,"dataGaName":733,"dataGaLocation":646},"/es/solutions/education/","education",{"text":735,"config":736},"Servicios financieros",{"href":737,"dataGaName":738,"dataGaLocation":646},"/es/solutions/finance/","financial services",{"title":378,"links":740},[741,743,745,747,750,752,754,756,758,760,762,764,766],{"text":390,"config":742},{"href":392,"dataGaName":393,"dataGaLocation":646},{"text":395,"config":744},{"href":397,"dataGaName":398,"dataGaLocation":646},{"text":400,"config":746},{"href":402,"dataGaName":403,"dataGaLocation":646},{"text":405,"config":748},{"href":407,"dataGaName":749,"dataGaLocation":646},"docs",{"text":428,"config":751},{"href":430,"dataGaName":431,"dataGaLocation":646},{"text":423,"config":753},{"href":425,"dataGaName":426,"dataGaLocation":646},{"text":433,"config":755},{"href":435,"dataGaName":436,"dataGaLocation":646},{"text":446,"config":757},{"href":448,"dataGaName":449,"dataGaLocation":646},{"text":438,"config":759},{"href":440,"dataGaName":441,"dataGaLocation":646},{"text":451,"config":761},{"href":453,"dataGaName":454,"dataGaLocation":646},{"text":456,"config":763},{"href":458,"dataGaName":459,"dataGaLocation":646},{"text":461,"config":765},{"href":463,"dataGaName":464,"dataGaLocation":646},{"text":466,"config":767},{"href":468,"dataGaName":469,"dataGaLocation":646},{"title":484,"links":769},[770,772,775,778,780,782,784,788,793,795,797,799],{"text":491,"config":771},{"href":493,"dataGaName":486,"dataGaLocation":646},{"text":773,"config":774},"Jobs",{"href":498,"dataGaName":499,"dataGaLocation":646},{"text":776,"config":777},"Liderazgo",{"href":506,"dataGaName":507,"dataGaLocation":646},{"text":509,"config":779},{"href":511,"dataGaName":512,"dataGaLocation":646},{"text":514,"config":781},{"href":516,"dataGaName":517,"dataGaLocation":646},{"text":519,"config":783},{"href":521,"dataGaName":522,"dataGaLocation":646},{"text":785,"config":786},"Sustainability",{"href":787,"dataGaName":785,"dataGaLocation":646},"/sustainability/",{"text":789,"config":790},"Diversidad, inclusión y pertenencia (DIB)",{"href":791,"dataGaName":792,"dataGaLocation":646},"/es/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":524,"config":794},{"href":526,"dataGaName":527,"dataGaLocation":646},{"text":534,"config":796},{"href":536,"dataGaName":537,"dataGaLocation":646},{"text":539,"config":798},{"href":541,"dataGaName":542,"dataGaLocation":646},{"text":800,"config":801},"Declaración de transparencia sobre la Ley de Esclavitud Moderna",{"href":802,"dataGaName":803,"dataGaLocation":646},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":544,"links":805},[806,809,811,813,818,823,828],{"text":807,"config":808},"Contactar con un experto",{"href":222,"dataGaName":223,"dataGaLocation":646},{"text":553,"config":810},{"href":555,"dataGaName":556,"dataGaLocation":646},{"text":558,"config":812},{"href":560,"dataGaName":561,"dataGaLocation":646},{"text":814,"config":815},"Estado",{"href":816,"dataGaName":817,"dataGaLocation":646},"https://status.gitlab.com/","status",{"text":819,"config":820},"Términos de uso",{"href":821,"dataGaName":822,"dataGaLocation":646},"/terms/","terms of use",{"text":824,"config":825},"Declaración de privacidad",{"href":826,"dataGaName":827,"dataGaLocation":646},"/es/privacy/","privacy statement",{"text":829,"config":830},"Preferencias de cookies",{"dataGaName":831,"dataGaLocation":646,"id":832,"isOneTrustButton":27},"cookie preferences","ot-sdk-btn",{"items":834},[835,837,839],{"text":819,"config":836},{"href":821,"dataGaName":822,"dataGaLocation":646},{"text":824,"config":838},{"href":826,"dataGaName":827,"dataGaLocation":646},{"text":829,"config":840},{"dataGaName":831,"dataGaLocation":646,"id":832,"isOneTrustButton":27},"content:shared:es:main-footer.yml","Main Footer","shared/es/main-footer.yml","shared/es/main-footer",{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":846,"content":847,"_id":198,"_type":199,"title":200,"_source":201,"_file":202,"_stem":203,"_extension":204},{"title":9,"ogTitle":9,"description":10,"ogDescription":10},[848,854,857,926],{"type":13,"componentName":13,"componentContent":849},{"crumbs":850},[851,853],{"title":17,"config":852},{"href":19},{"title":9},{"type":22,"componentName":22,"componentContent":855},{"title":9,"readTime":24,"text":25,"config":856},{"bodyText":27},{"type":29,"componentName":29,"componentContent":858},{"anchors":859,"components":875},{"text":32,"data":860},[861,863,865,867,869,871,873],{"text":35,"config":862},{"href":37},{"text":39,"config":864},{"href":41},{"text":43,"config":866},{"href":45},{"text":47,"config":868},{"href":49},{"text":51,"config":870},{"href":53},{"text":55,"config":872},{"href":57},{"text":59,"config":874},{"href":61},[876,882],{"type":64,"componentName":64,"componentContent":877},{"config":878,"cards":879},{"noDecoration":27},[880],{"config":881,"title":71,"description":72},{"icon":70},{"type":74,"componentName":74,"componentContent":883},{"groups":884},[885,890,901,906,911,916,921],{"config":886,"header":35,"show":80,"hide":81,"items":887},{"id":79},[888,889],{"header":84,"content":85},{"header":87,"content":88},{"config":891,"header":39,"show":80,"hide":81,"items":892},{"id":91},[893,894,895,896,897,898,899,900],{"header":84,"content":94},{"header":96,"content":97},{"header":99,"content":100},{"header":102,"content":103},{"header":105,"content":106},{"header":108,"content":109},{"header":111,"content":112},{"header":114,"content":115},{"config":902,"header":43,"show":80,"hide":81,"items":903},{"id":118},[904,905],{"header":84,"content":121},{"header":87,"content":123},{"config":907,"header":47,"show":80,"hide":81,"items":908},{"id":126},[909,910],{"header":84,"content":129},{"header":87,"content":131},{"config":912,"header":51,"show":80,"hide":81,"items":913},{"id":134},[914,915],{"header":84,"content":137},{"header":87,"content":139},{"config":917,"header":55,"show":80,"hide":81,"items":918},{"id":142},[919,920],{"header":84,"content":145},{"header":87,"content":147},{"config":922,"header":59,"show":80,"hide":81,"items":923},{"id":150},[924,925],{"header":84,"content":153},{"header":87,"content":155},{"type":157,"componentName":157,"componentContent":927},{"config":928,"title":162,"cards":929},{"columns":160,"theme":161},[930,935,940],{"image":931,"title":168,"description":169,"button":933},{"altText":7,"config":932},{"src":167},{"text":171,"config":934},{"href":173,"dataGaName":174,"dataGaLocation":175},{"image":936,"title":180,"description":181,"button":938},{"altText":7,"config":937},{"src":179},{"text":183,"config":939},{"href":185,"dataGaName":186,"dataGaLocation":175},{"image":941,"title":191,"description":192,"button":943},{"altText":7,"config":942},{"src":190},{"text":194,"config":944},{"href":196,"dataGaName":197,"dataGaLocation":175},1760039110784]