{"id":34579,"date":"2018-02-02T11:05:14","date_gmt":"2018-02-02T11:05:14","guid":{"rendered":"https:\/\/stage.cactus-now.com\/noticias-de-cactus\/continuous-integration-and-delivery-process\/"},"modified":"2026-06-01T17:11:41","modified_gmt":"2026-06-01T14:11:41","slug":"parte-6-proceso-de-integracion-y-entrega-continuas-fastlane-jenkins","status":"publish","type":"post","link":"https:\/\/stage.cactus-now.com\/es\/nuestro-blog\/parte-6-proceso-de-integracion-y-entrega-continuas-fastlane-jenkins\/","title":{"rendered":"Parte 6: Proceso de Integraci\u00f3n y Entrega Continuas (Fastlane + Jenkins)"},"content":{"rendered":"<p>\u00bfCu\u00e1ntas veces necesitas compilar tu aplicaci\u00f3n para los entornos DEV, QA, STAGE, PREPROD, PROD, etc.?<\/p>\n\n<p>Se pierde mucho tiempo compilando un archivo.ipa, subi\u00e9ndolo a Crashlytics (HockeyApp, TestFlight, etc.), notificando al equipo de control de calidad sobre la \u00faltima compilaci\u00f3n, etc.<\/p>\n\n<p>En mi opini\u00f3n, tener \u00e9xito significa dedicar tu tiempo al trabajo real, por ejemplo, escribir c\u00f3digo. Configurar un proceso de integraci\u00f3n y entrega continua se ha vuelto cr\u00edtico hoy en d\u00eda, ya que te ayuda a eliminar errores al principio del ciclo de desarrollo y ahorra mucho tiempo al desarrollador.<\/p>\n\n<p>Bien, bla, bla, bla. Leamos algo de teor\u00eda sobre CI\/CD.<\/p>\n\n<p><strong><span style=\"color: #000000;\">Integraci\u00f3n Continua (CI)<\/span> <\/strong> es una pr\u00e1ctica de desarrollo que requiere que los desarrolladores integren el c\u00f3digo en un repositorio compartido varias veces al d\u00eda. Cada confirmaci\u00f3n (check-in) se verifica mediante una compilaci\u00f3n automatizada, lo que permite a los equipos detectar problemas temprano.<\/p>\n\n<p>Hay muchas herramientas disponibles que pueden ayudarte con la integraci\u00f3n continua de aplicaciones iOS, como Fastlane, Xcode Server, Jenkins, Travis y otras.<\/p>\n\n<p>Elegimos <span style=\"color: #000000;\"><strong>Fastlane<\/strong> + <strong>Jenkins<\/strong>.<\/span><\/p>\n\n<p><strong><span style=\"color: #000000;\">Entrega Continua (CD)<\/span> <\/strong> es un enfoque de ingenier\u00eda de software en el que los equipos producen software en ciclos cortos, asegurando que el software pueda lanzarse de manera confiable en cualquier momento. Su objetivo es compilar, probar y lanzar software de forma m\u00e1s r\u00e1pida y frecuente.<\/p>\n\n<p><span style=\"color: #000000;\"><strong>\u00bfPor qu\u00e9 usar Entrega Continua?<\/strong><\/span><br>1. Ahorra d\u00edas en la preparaci\u00f3n de env\u00edos de aplicaciones, subida de capturas de pantalla y lanzamiento de la aplicaci\u00f3n.<br>2. \u00bfUn colega est\u00e1 de vacaciones y es necesario lanzar una correcci\u00f3n cr\u00edtica? No dependas de una sola persona para lanzar actualizaciones.<br>3. Aumenta la calidad del software y el tiempo de reacci\u00f3n con lanzamientos m\u00e1s frecuentes y peque\u00f1os.<\/p>\n\n<p><em>Automaticemos tus compilaciones<\/em><\/p>\n\n<p><span style=\"color: #000000;\"><strong>Fastlane: Prerrequisitos<\/strong><\/span><\/p>\n\n<p>Tu versi\u00f3n de Ruby debe ser 2.4.0 o m\u00e1s reciente.<br><script src=\"https:\/\/gist.github.com\/MaksimVialykh\/77c258e96274f31cc38ab97873b88dac.js\"><\/script><\/p>\n\n<ul>\n<li>Actualizar Ruby<\/li>\n<\/ul>\n\n<ul>\n<li><a rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"https:\/\/docs.fastlane.tools\/getting-started\/ios\/setup\/\" target=\"_blank\">Instalar <\/a> Fastlane<\/li>\n<\/ul>\n\n<h2><span style=\"color: #000000;\"><strong>Fastlane: Crear una Configuraci\u00f3n Simple<\/strong><\/span><\/h2>\n\n<ul>\n<li><a rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"https:\/\/drive.google.com\/file\/d\/1xsIDrHA0Ql6bu5SZ4tW4jDFN9o5oH6gm\/view\" target=\"_blank\">Copia <\/a> la carpeta Fastlane en tu proyecto.<\/li>\n\n<li><a rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"https:\/\/gist.github.com\/MaksimVialykh\/c3866541f13e397c1f725e74575dc963#file-fastlanecommand-bash\" target=\"_blank\">Abre<\/a> una terminal y ve al directorio de tu proyecto.<\/li>\n<\/ul>\n\n<p>Es decir, puedes automatizar tus compilaciones simplemente usando este comando.<\/p>\n\n<ul>\n<li>Has a\u00f1adido Fastlane con \u00e9xito usando una <a rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"https:\/\/gist.github.com\/MaksimVialykh\/063069c33f49c84ec7a892eef02c5172#file-fastfile-ruby\" target=\"_blank\">plantilla<\/a>.<\/li>\n<\/ul>\n\n<h2><span style=\"color: #000000;\"><strong>Jenkins: A\u00f1adir un Trabajo (Job)<\/strong><\/span><\/h2>\n\n<p>No te dir\u00e9 c\u00f3mo instalar Jenkins. Puedes ir a <a href=\"https:\/\/jenkins.io\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">el sitio oficial<\/a> para obtener esta informaci\u00f3n.<\/p>\n\n<p>Empezamos con la creaci\u00f3n del trabajo (Job).<\/p>\n\n<ul>\n<li>Crea un trabajo y a\u00f1ade el paso \u00abEjecutar shell\u00bb (Execute shell) a la secci\u00f3n de compilaci\u00f3n.<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1000\" height=\"932\" src=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2018\/02\/1_gG77LHzWaezoXDU2SbrEUg-1.png\" alt=\"fastlane + Jenkins\" class=\"wp-image-7914\" srcset=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2018\/02\/1_gG77LHzWaezoXDU2SbrEUg-1.png 1000w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2018\/02\/1_gG77LHzWaezoXDU2SbrEUg-1-300x280.png 300w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2018\/02\/1_gG77LHzWaezoXDU2SbrEUg-1-768x716.png 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n<p><em>Trabajo en Jenkins. Paso \u00abEjecutar shell\u00bb en la secci\u00f3n de compilaci\u00f3n.<\/em><\/p>\n\n<h2><span style=\"color: #000000;\"><strong>Resultado<\/strong><\/span><\/h2>\n\n<p>Tienes la plantilla de Fastlane integrada en tu proyecto. Eso puede funcionar sin ninguna herramienta de CI como Jenkins, Travis, etc. Solo requiere la gema Fastlane y los certificados correctos en la m\u00e1quina de compilaci\u00f3n.<\/p>\n\n<p>Adem\u00e1s, integramos el trabajo de Fastlane como un trabajo de Jenkins. Es m\u00e1s f\u00e1cil trabajar con el panel de Jenkins que con una terminal, \u00bfno es as\u00ed?<\/p>\n\n<p>Por supuesto, puedes crear tu plantilla de Fastlane usando el comando \u00abFastlane init\u00bb, luego a\u00f1adir nuevos pasos a tu carril (lane) de Fastlane o al trabajo de Jenkins. La configuraci\u00f3n extendida se explorar\u00e1 en una serie separada: \u00abProcesos de Integraci\u00f3n y Entrega Continuas\u00bb.<\/p>\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p> Recuerda, dedica unas horas a la automatizaci\u00f3n una vez y ser\u00e1s feliz durante todos los pr\u00f3ximos d\u00edas\/meses\/a\u00f1os que dediques al proyecto.<\/p>\n<\/blockquote>\n<!-- \/wp:post-content -->\n\n<p>Esta fue una peque\u00f1a gu\u00eda sobre automatizaci\u00f3n de compilaciones usando Fastlane y Jenkins.<\/p>","protected":false},"excerpt":{"rendered":"<p>\u00bfCu\u00e1ntas veces necesitas compilar tu aplicaci\u00f3n para los entornos DEV, QA, STAGE, PREPROD, PROD, etc.? Se pierde mucho tiempo compilando un archivo.ipa, subi\u00e9ndolo a Crashlytics (HockeyApp, TestFlight, etc.), notificando al equipo de control de calidad sobre la \u00faltima compilaci\u00f3n, etc. En mi opini\u00f3n, tener \u00e9xito significa dedicar tu tiempo al trabajo real, por ejemplo, escribir [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":34580,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[700],"tags":[],"class_list":["post-34579","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-nuestro-blog"],"acf":[],"_links":{"self":[{"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/posts\/34579","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/comments?post=34579"}],"version-history":[{"count":0,"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/posts\/34579\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/media\/34580"}],"wp:attachment":[{"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/media?parent=34579"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/categories?post=34579"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/tags?post=34579"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}