{"id":5856,"date":"2024-09-11T17:39:05","date_gmt":"2024-09-11T15:39:05","guid":{"rendered":"https:\/\/www.aiknow.io\/ci-cd-con-gitlab\/"},"modified":"2024-09-11T17:39:05","modified_gmt":"2024-09-11T15:39:05","slug":"ci-cd-con-gitlab","status":"publish","type":"post","link":"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/","title":{"rendered":"CI\/CD Con GitLab"},"content":{"rendered":"<p>Para hablar de CI\/CD, consideramos necesario introducir un concepto m\u00e1s amplio que, por razones obvias de espacio y coherencia, no podemos profundizar m\u00e1s all\u00e1 de un breve p\u00e1rrafo. El concepto que debemos mencionar es DevOps. Veamos qu\u00e9 se entiende por DevOps.   <\/p>\n<h4>DevOps: conceptos b\u00e1sicos<\/h4>\n<p> El t\u00e9rmino \u00abDevOps\u00bb combina \u00abDesarrollo\u00bb y \u00abOperaciones\u00bb. DevOps engloba muchos aspectos y pr\u00e1cticas para gestionar los procesos de producci\u00f3n de software. T\u00e9cnicamente, DevOps indica un conjunto de enfoques y valores, m\u00e1s que una lista de pr\u00e1cticas concretas a utilizar. DevOps debe declinarse en un contexto concreto, en los distintos equipos de producci\u00f3n y gesti\u00f3n de software. Como informa <a href=\"\" target=\"\" rel=\"noopener\">aqu\u00ed<\/a> RedHat: DevOps describe los enfoques que deben adoptarse para acelerar los procesos que permiten que una idea (como una nueva funci\u00f3n de software, una solicitud de mejora o una correcci\u00f3n de errores) pase del desarrollo al despliegue en un entorno de producci\u00f3n, donde puede aportar valor al usuario. Estos enfoques requieren una comunicaci\u00f3n frecuente entre los equipos de desarrollo y los operativos. En este contexto, CI\/CD es un enfoque que forma parte de DevOps.<br \/>Traducci\u00f3n realizada con la versi\u00f3n gratuita del traductor www.DeepL.com\/Translator       <\/p>\n<h4>Qu\u00e9 significa CI\/CD<\/h4>\n<p> CI\/CD (Integraci\u00f3n Continua\/Entrega Continua &#8211; Despliegue) es un enfoque de desarrollo de software que consiste en construir, probar y entregar de forma continua y autom\u00e1tica el c\u00f3digo desarrollado. CI\/CD permite la integraci\u00f3n autom\u00e1tica de los cambios incorporados al c\u00f3digo fuente mediante el uso de pipelines, es decir, la automatizaci\u00f3n de las operaciones de construcci\u00f3n, prueba y despliegue del software. Como afirma RedHat <a href=\"\" target=\"\" rel=\"noopener\">aqu\u00ed<\/a>: El enfoque CI\/CD es un componente fundamental de la metodolog\u00eda DevOps, cuyo prop\u00f3sito es aumentar la colaboraci\u00f3n entre los equipos de desarrollo y operaciones. Ambos m\u00e9todos se centran en la automatizaci\u00f3n de los procesos de integraci\u00f3n del c\u00f3digo, acelerando as\u00ed el paso de una idea (como una nueva funci\u00f3n, una correcci\u00f3n de errores o una solicitud de mejora) de la fase de desarrollo a la de despliegue, en un entorno de producci\u00f3n donde pueda ofrecer un valor a\u00f1adido al usuario. El CI\/CD incluye pasos que integran las operaciones a realizar para probar, compilar e integrar nuevos desarrollos en un software; el flujo de trabajo del equipo se adapta al uso de pipelines para optimizar su productividad y minimizar el tiempo y los errores en la fase de lanzamiento del software. Veamos algunos de los pasos cl\u00e1sicos que se integran en un pipeline de CI\/CD, teniendo en cuenta que no son los \u00fanicos posibles y que el pipeline debe adaptarse a las necesidades del software que se est\u00e1 desarrollando y del equipo que trabaja en \u00e9l.      <\/p>\n<h4>Compilaci\u00f3n<\/h4>\n<p> La compilaci\u00f3n es el paso que crea alg\u00fan tipo de ejecutable a partir del c\u00f3digo fuente de la aplicaci\u00f3n. Un tipo de software muy utilizado hoy en d\u00eda se denomina \u00abdockerizado\u00bb. <a href=\"\">Docker<\/a> se basa en ciertas caracter\u00edsticas del kernel de Linux para permitir que el mismo software y sus dependencias se ejecuten en diferentes entornos. La compilaci\u00f3n del software suele generar im\u00e1genes Docker, que son el software que posteriormente ejecutar\u00e1 Docker; tienen la ventaja de ser port\u00e1tiles, autocontenidas y f\u00e1ciles de replicar.   <\/p>\n<h4>Pruebas<\/h4>\n<p> La fase de prueba en el proceso CI\/CD es fundamental: garantiza que el c\u00f3digo integrado en la aplicaci\u00f3n no contenga regresiones o errores f\u00e1cilmente detectables. Normalmente, la fase de pruebas se lleva a cabo sobre el c\u00f3digo fuente creado por la fase de compilaci\u00f3n, o la fase de pruebas se basa en la propia compilaci\u00f3n, dependiendo de las caracter\u00edsticas del software. El proceso suele prever que, si las pruebas fallan, se detenga la publicaci\u00f3n; de lo contrario, el proceso contin\u00faa con la siguiente fase.   <\/p>\n<h4>Versionado<\/h4>\n<p> El versionado de software implica guardar un historial de los cambios realizados en el software. Normalmente, se utiliza alg\u00fan sistema tipo <a href=\"https:\/\/git-scm.com\/\" target=\"_blank\" rel=\"noopener\">Git<\/a> para versionar el c\u00f3digo fuente; dado que Git es distribuido, a menudo se depende de alg\u00fan sistema centralizado como <a href=\"https:\/\/github.com\/\" target=\"_blank\" rel=\"noopener\">GitHub<\/a> o <a href=\"https:\/\/about.gitlab.com\/\" target=\"_blank\" rel=\"noopener\">GitLab<\/a> para mantener una versi\u00f3n oficial del proyecto. Adem\u00e1s, el versionado implica asignar una versi\u00f3n, normalmente representada de alguna forma alfanum\u00e9rica, al c\u00f3digo fuente y a los ejecutables generados a partir de \u00e9l. Es posible integrar la fase de versionado autom\u00e1ticamente en un pipeline. La versi\u00f3n del software suele asignarse mediante el <a href=\"https:\/\/semver.org\/\" target=\"_blank\" rel=\"noopener\">versionado sem\u00e1ntico<\/a>, que tiene la forma M.m.p, donde M es la versi\u00f3n mayor, m es la versi\u00f3n menor y p es el parche.     <\/p>\n<h4>Pipeline<\/h4>\n<p> Un pipeline, como ya se ha mencionado, es un procedimiento que automatiza el proceso CI\/CD y con \u00e9l la liberaci\u00f3n de software a partir de nuevo c\u00f3digo fuente. El objetivo del pipeline es permitir a los desarrolladores realizar liberaciones de forma autom\u00e1tica, aliviando as\u00ed la carga de trabajo de los equipos de Operaciones y Sistemas.  <\/p>\n<h4>Pipeline en GitLab<\/h4>\n<p><a href=\"https:\/\/about.gitlab.com\/\" target=\"_blank\" rel=\"noopener\"><a href=\"https:\/\/about.gitlab.com\/\">GitLab<\/a><\/a> es una plataforma DevOps que permite integrar f\u00e1cilmente pipelines en los proyectos. GitLab integra el versionado del c\u00f3digo fuente a trav\u00e9s de Git, guard\u00e1ndolo en servidores centralizados que garantizan versiones compartidas y oficiales, herramientas y pipelines de CI\/CD, y pr\u00e1cticas de control y seguridad del software. Incluir un pipeline en un proyecto GitLab es muy sencillo: basta con crear un archivo llamado .gitlab-ci-yml y colocarlo en el directorio ra\u00edz del proyecto. El archivo .gitlab-ci.yml describe el pipeline en t\u00e9rminos de fases, trabajos y los distintos scripts correspondientes. La etapa es la implementaci\u00f3n de las fases presentadas anteriormente: compilaci\u00f3n, generaci\u00f3n de versiones, pruebas u otras; un trabajo es una tarea concreta que ejecuta una parte de la etapa. Una etapa puede constar de varios trabajos, que se ejecutan en paralelo; las distintas etapas, en cambio, se realizan secuencialmente. Por \u00faltimo, el script implementa los comandos espec\u00edficos relacionados con cada trabajo; adem\u00e1s del script, \u00e9ste incluye indicaciones sobre el entorno y el modo de ejecuci\u00f3n. Las etapas del pipeline y sus scripts son ejecutados por defecto por los GitLab runners (procesos que proporcionan un entorno en el que ejecutar los comandos del script). Por supuesto, es posible configurar ejecutores locales. Para ello, consulta la <a href=\"https:\/\/docs.gitlab.com\/runner\/\" target=\"_blank\" rel=\"noopener\">documentaci\u00f3n de GitLab<\/a>. Un ejemplo de pipeline cuyo \u00fanico prop\u00f3sito es introducir la sintaxis del archivo es: <code>stages:<br \/>\n- build<br \/>\n- test<br \/>\n- deploy<\/p>\n<p>build_job:<br \/>\nstage: build<br \/>\nscript:<br \/>\n- echo \"Building\"<\/p>\n<p>version_job:<br \/>\nstage: build<br \/>\nscript:<br \/>\n- echo \"Versioning\"<\/p>\n<p>test_job:<br \/>\nstage: test<br \/>\nscript:<br \/>\n- echo \"Testing\"<\/p>\n<p>deploy_job:<br \/>\nstage: deploy<br \/>\nscript:<br \/>\n- echo \"Deploying\"<\/code> El archivo pipeline indica tres etapas, en nuestro caso: build, test y deploy. Se puede introducir un n\u00famero arbitrario de etapas con el nombre deseado. A continuaci\u00f3n, cada secci\u00f3n describe trabajos. El deploy_job, por ejemplo, se ejecuta en la etapa deploy y consiste en el script echo &#8216;Deploying&#8217; (que imprime la cadena Deploying como salida est\u00e1ndar). Es posible decidir ejecutar el trabajo de despliegue s\u00f3lo para una determinada rama del c\u00f3digo versionado. Para ello, la configuraci\u00f3n debe ser:       <code><br \/>\ndeploy:<br \/>\nonly:<br \/>\n- master<br \/>\nstage: deploy<br \/>\nscript:<br \/>\n- echo \"Deploying\"<\/code><\/p>\n<h4>Un ejemplo<\/h4>\n<p> Un ejemplo de c\u00f3digo de versionado de un pipeline al realizar una petici\u00f3n de fusi\u00f3n en el siguiente archivo .gitlab-ci.yml. <code>stages:<br \/>\n- build<br \/>\n- test<br \/>\n- deploy<\/code> build: only: &#8211; master stage: build script: &#8211; echo &#8220;Building&#8221; version: stage: build before_script: &#8211; git config user.email &#8220;${GITLAB_USER_EMAIL}&#8221; &#8211; git config user.name &#8220;${GITLAB_USER_NAME}&#8221; &#8211; git remote add versioning-origin https:\/\/oauth2:${GITLAB_ACCESS_TOKEN}@gitlab.com\/${CI_PROJECT_PATH} script: &#8211; echo \u00abVersioning\u00bb &#8211; git fetch &#8211;tags &#8211; OLD_VERSION=`git describe &#8211;abbrev=0 &#8211;tags` &#8211; NEW_VERSION=`bash change_version.sh $OLD_VERSION` &#8211; git tag -a $NEW_VERSION -m \u00abAuto-tagged\u00bb &#8211; git push versioning-origin $NEW_VERSION rules: &#8211; if: $CI_MERGE_REQUEST_ID test: only: &#8211; etapa maestra: script de prueba: &#8211; echo \u00abProbando\u00bb deploy: only: &#8211; master stage: deploy script: &#8211; echo \u00abDeploying\u00bb Como puede verse, los comandos siguen la sintaxis de Bash. La secci\u00f3n <code><br \/>\nrules:<br \/>\n- if: $CI_MERGE_REQUEST_ID<\/code>indica a GitLab que compruebe la v<a href=\"https:\/\/docs.gitlab.com\/ee\/ci\/variables\/predefined_variables.html\" target=\"_blank\" rel=\"noopener\">ariable de entorno<\/a> por defecto CI_MERGE_REQUEST_ID, que especifica si el pipeline actual fue lanzado por una <a href=\"https:\/\/docs.gitlab.com\/ee\/user\/project\/merge_requests\/\" target=\"_blank\" rel=\"noopener\">Merge Request<\/a>. Este pipeline llama al script change_version.sh, que debe ser guardado en el repositorio del proyecto para ser ejecutado correctamente. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Para hablar de CI\/CD, consideramos necesario introducir un concepto m\u00e1s amplio que, por razones obvias de espacio y coherencia, no podemos profundizar m\u00e1s all\u00e1 de un breve p\u00e1rrafo. El concepto que debemos mencionar es DevOps. Veamos qu\u00e9 se entiende por DevOps. DevOps: conceptos b\u00e1sicos El t\u00e9rmino \u00abDevOps\u00bb combina \u00abDesarrollo\u00bb y \u00abOperaciones\u00bb. DevOps engloba muchos aspectos [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5849,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[128],"tags":[],"class_list":["post-5856","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-novedades-tecnologicas"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>CI\/CD Con GitLab - AIknow AIknow<\/title>\n<meta name=\"description\" content=\"DevOps describe enfoques para acelerar los procesos que permiten que una idea pase del desarrollo a la implantaci\u00f3n y a la producci\u00f3n.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CI\/CD Con GitLab - AIknow AIknow\" \/>\n<meta property=\"og:description\" content=\"DevOps describe enfoques para acelerar los procesos que permiten que una idea pase del desarrollo a la implantaci\u00f3n y a la producci\u00f3n.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/\" \/>\n<meta property=\"og:site_name\" content=\"AIknow\" \/>\n<meta property=\"article:published_time\" content=\"2024-09-11T15:39:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/09\/AIKNOW-cd-ci-gitlab.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Angelo Lazzari\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Angelo Lazzari\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/\"},\"author\":{\"name\":\"Angelo Lazzari\",\"@id\":\"https:\/\/www.aiknow.io\/#\/schema\/person\/c0e4c357cf11bfbe3d06457f01e56330\"},\"headline\":\"CI\/CD Con GitLab\",\"datePublished\":\"2024-09-11T15:39:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/\"},\"wordCount\":1389,\"image\":{\"@id\":\"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/09\/AIKNOW-cd-ci-gitlab.png\",\"articleSection\":[\"Novedades tecnol\u00f3gicas\"],\"inLanguage\":\"es-ES\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/\",\"url\":\"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/\",\"name\":\"CI\/CD Con GitLab - AIknow AIknow\",\"isPartOf\":{\"@id\":\"https:\/\/www.aiknow.io\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/09\/AIKNOW-cd-ci-gitlab.png\",\"datePublished\":\"2024-09-11T15:39:05+00:00\",\"author\":{\"@id\":\"https:\/\/www.aiknow.io\/#\/schema\/person\/c0e4c357cf11bfbe3d06457f01e56330\"},\"description\":\"DevOps describe enfoques para acelerar los procesos que permiten que una idea pase del desarrollo a la implantaci\u00f3n y a la producci\u00f3n.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/#breadcrumb\"},\"inLanguage\":\"es-ES\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es-ES\",\"@id\":\"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/#primaryimage\",\"url\":\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/09\/AIKNOW-cd-ci-gitlab.png\",\"contentUrl\":\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/09\/AIKNOW-cd-ci-gitlab.png\",\"width\":1024,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.aiknow.io\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CI\/CD Con GitLab\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.aiknow.io\/#website\",\"url\":\"https:\/\/www.aiknow.io\/\",\"name\":\"AIknow - Developing future\",\"description\":\"From Edge To Intelligence\",\"alternateName\":\"AIknow\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.aiknow.io\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es-ES\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.aiknow.io\/#\/schema\/person\/c0e4c357cf11bfbe3d06457f01e56330\",\"name\":\"Angelo Lazzari\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es-ES\",\"@id\":\"https:\/\/www.aiknow.io\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/73911066d673686613427bebead5a60c01979853c9864201f1190d35e7bc2018?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/73911066d673686613427bebead5a60c01979853c9864201f1190d35e7bc2018?s=96&d=mm&r=g\",\"caption\":\"Angelo Lazzari\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"CI\/CD Con GitLab - AIknow AIknow","description":"DevOps describe enfoques para acelerar los procesos que permiten que una idea pase del desarrollo a la implantaci\u00f3n y a la producci\u00f3n.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/","og_locale":"es_ES","og_type":"article","og_title":"CI\/CD Con GitLab - AIknow AIknow","og_description":"DevOps describe enfoques para acelerar los procesos que permiten que una idea pase del desarrollo a la implantaci\u00f3n y a la producci\u00f3n.","og_url":"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/","og_site_name":"AIknow","article_published_time":"2024-09-11T15:39:05+00:00","og_image":[{"width":1024,"height":1024,"url":"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/09\/AIKNOW-cd-ci-gitlab.png","type":"image\/png"}],"author":"Angelo Lazzari","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Angelo Lazzari","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/#article","isPartOf":{"@id":"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/"},"author":{"name":"Angelo Lazzari","@id":"https:\/\/www.aiknow.io\/#\/schema\/person\/c0e4c357cf11bfbe3d06457f01e56330"},"headline":"CI\/CD Con GitLab","datePublished":"2024-09-11T15:39:05+00:00","mainEntityOfPage":{"@id":"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/"},"wordCount":1389,"image":{"@id":"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/#primaryimage"},"thumbnailUrl":"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/09\/AIKNOW-cd-ci-gitlab.png","articleSection":["Novedades tecnol\u00f3gicas"],"inLanguage":"es-ES"},{"@type":"WebPage","@id":"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/","url":"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/","name":"CI\/CD Con GitLab - AIknow AIknow","isPartOf":{"@id":"https:\/\/www.aiknow.io\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/#primaryimage"},"image":{"@id":"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/#primaryimage"},"thumbnailUrl":"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/09\/AIKNOW-cd-ci-gitlab.png","datePublished":"2024-09-11T15:39:05+00:00","author":{"@id":"https:\/\/www.aiknow.io\/#\/schema\/person\/c0e4c357cf11bfbe3d06457f01e56330"},"description":"DevOps describe enfoques para acelerar los procesos que permiten que una idea pase del desarrollo a la implantaci\u00f3n y a la producci\u00f3n.","breadcrumb":{"@id":"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/#breadcrumb"},"inLanguage":"es-ES","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/"]}]},{"@type":"ImageObject","inLanguage":"es-ES","@id":"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/#primaryimage","url":"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/09\/AIKNOW-cd-ci-gitlab.png","contentUrl":"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/09\/AIKNOW-cd-ci-gitlab.png","width":1024,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/www.aiknow.io\/es\/ci-cd-con-gitlab\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.aiknow.io\/es\/"},{"@type":"ListItem","position":2,"name":"CI\/CD Con GitLab"}]},{"@type":"WebSite","@id":"https:\/\/www.aiknow.io\/#website","url":"https:\/\/www.aiknow.io\/","name":"AIknow - Developing future","description":"From Edge To Intelligence","alternateName":"AIknow","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.aiknow.io\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es-ES"},{"@type":"Person","@id":"https:\/\/www.aiknow.io\/#\/schema\/person\/c0e4c357cf11bfbe3d06457f01e56330","name":"Angelo Lazzari","image":{"@type":"ImageObject","inLanguage":"es-ES","@id":"https:\/\/www.aiknow.io\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/73911066d673686613427bebead5a60c01979853c9864201f1190d35e7bc2018?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/73911066d673686613427bebead5a60c01979853c9864201f1190d35e7bc2018?s=96&d=mm&r=g","caption":"Angelo Lazzari"}}]}},"_links":{"self":[{"href":"https:\/\/www.aiknow.io\/es\/wp-json\/wp\/v2\/posts\/5856","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.aiknow.io\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.aiknow.io\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.aiknow.io\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.aiknow.io\/es\/wp-json\/wp\/v2\/comments?post=5856"}],"version-history":[{"count":0,"href":"https:\/\/www.aiknow.io\/es\/wp-json\/wp\/v2\/posts\/5856\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.aiknow.io\/es\/wp-json\/wp\/v2\/media\/5849"}],"wp:attachment":[{"href":"https:\/\/www.aiknow.io\/es\/wp-json\/wp\/v2\/media?parent=5856"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.aiknow.io\/es\/wp-json\/wp\/v2\/categories?post=5856"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.aiknow.io\/es\/wp-json\/wp\/v2\/tags?post=5856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}