{"id":6847,"date":"2021-12-23T17:56:37","date_gmt":"2021-12-23T16:56:37","guid":{"rendered":"https:\/\/geko.cloud\/?p=6847"},"modified":"2022-04-25T11:44:05","modified_gmt":"2022-04-25T09:44:05","slug":"jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity","status":"publish","type":"post","link":"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/","title":{"rendered":"Jenkins + Unity: Automatiza el proceso de creaci\u00f3n de tu aplicaci\u00f3n Unity"},"content":{"rendered":"<div>En Geko Cloud, uno de nuestros clientes nos pidi\u00f3 que automatiz\u00e1ramos la compilaci\u00f3n de su proyecto <a href=\"https:\/\/unity.com\" target=\"_blank\" rel=\"noopener\">Unity<\/a>, ya que hacerlo manualmente consume mucho tiempo que los desarrolladores pod\u00edan dedicar a mejorar la aplicaci\u00f3n, en lugar de generar los ejecutables. Primero, analizamos sus necesidades actuales y futuras ya que esto nos permitir\u00eda brindarles la mejor soluci\u00f3n a corto\/largo plazo.<\/div>\n<h2><strong>Requisitos<\/strong><\/h2>\n<ul>\n<li>Proceso automatizado<\/li>\n<li>5 plataformas principales ahora (iOS, Android, Windows, Linux, WebGL)<\/li>\n<li>Posibilidad de compilar para otras plataformas en un futuro pr\u00f3ximo (Nintendo, PlayStation, XBox, Stadia, etc.)<\/li>\n<li>Flexibilidad para integrarse con otros servicios<\/li>\n<li>Menor costo posible<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Despu\u00e9s de evaluar la infraestructura actual de la empresa y las ventajas y desventajas de utilizar servicios como Unity Builder, decidimos desarrollar los procesos de automatizaci\u00f3n en <a href=\"https:\/\/www.jenkins.io\/\" target=\"_blank\" rel=\"noopener\">Jenkins<\/a>. Al adoptar este enfoque, logramos todos los requisitos de la tarea, ya que Jenkins nos permitir\u00e1:<\/p>\n<ul>\n<li>Automatizar los pasos necesarios para generar los ejecutables.<\/li>\n<li>Generar ejecutables para todos las plataformas deseadas (5 plataformas principales y otras plataformas), actualmente en Unity Builder no es posible trabajar con las plataformas adicionales.<\/li>\n<li>Lograr una mayor rentabilidad mediante el uso de nodos din\u00e1micos que ser\u00e1n destruidos despu\u00e9s de que finalice el proceso de ejecuci\u00f3n. Unity Builds usa una estrategia similar, pero el costo total es un poco mayor.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Ahora que tenemos nuestro plan definido, pong\u00e1monos manos a la obra y preparemos nuestro archivo de Jenkins. En esta publicaci\u00f3n hacemos las siguientes suposiciones:<\/p>\n<ul>\n<li>Tienes una instancia de Jenkins y conocimientos b\u00e1sicos de algunos conceptos de Jenkins.<\/li>\n<li>El sistema operativo del nodo donde se ejecutaran los trabajo es Windows.<\/li>\n<li>Su m\u00e1quina de trabajo tiene <a href=\"https:\/\/developer.android.com\/studio\" target=\"_blank\" rel=\"noopener\">Android Studio<\/a> instalado.<\/li>\n<li>Su m\u00e1quina trabajadora tiene <a href=\"https:\/\/unity3d.com\/es\/get-unity\/download\" target=\"_blank\" rel=\"noopener\">Unity Hub<\/a> instalado.<\/li>\n<li>Tiene una <a href=\"https:\/\/store.unity.com\/compare-plans\" target=\"_blank\" rel=\"noopener\">licencia de Unity<\/a>, pro o plus.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<div>\n<h2>Plataforma Android<\/h2>\n<div>\n<h2><strong>Configuraci\u00f3n de Android Studio<\/strong><\/h2>\n<div>\n<div>Unity se apoya en las herramientas de Android Studio para generar las aplicaciones, por esa raz\u00f3n es importante tener instalado Android Studio (tambi\u00e9n puede instalarse solo el SDK) y agregar las versiones de la api que desea que admita su aplicaci\u00f3n.<\/div>\n<div><\/div>\n<ul>\n<li>Abrir la configuraci\u00f3n de Android Studio<\/li>\n<\/ul>\n<div><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6872\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/android_studio_1-300x262.png\" alt=\"android studio\" width=\"480\" height=\"419\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/android_studio_1-300x262.png 300w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/android_studio_1-1024x896.png 1024w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/android_studio_1-768x672.png 768w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/android_studio_1-1536x1343.png 1536w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/android_studio_1.png 1722w\" sizes=\"(max-width: 480px) 100vw, 480px\" \/><\/div>\n<p>&nbsp;<\/p>\n<ul>\n<li>Agregue las versiones de API (Niveles) que necesita que su aplicaci\u00f3n soporte<\/li>\n<\/ul>\n<div><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6874\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/android_studio_2-300x181.png\" alt=\"android studio\" width=\"480\" height=\"290\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/android_studio_2-300x181.png 300w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/android_studio_2-1024x619.png 1024w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/android_studio_2-768x465.png 768w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/android_studio_2-1536x929.png 1536w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/android_studio_2.png 1984w\" sizes=\"(max-width: 480px) 100vw, 480px\" \/><\/div>\n<p>&nbsp;<\/p>\n<h2><strong>Configuraci\u00f3n de Unity Hub<\/strong><\/h2>\n<div>Unity Hub es una herramienta de Unity que permite configurar un entorno de desarrollo de forma muy sencilla, estos son los pasos que debe seguir despu\u00e9s de descargarlo e instalarlo:<\/div>\n<div><\/div>\n<ul>\n<li>Vaya a la secci\u00f3n de instalaci\u00f3n en el panel izquierdo<\/li>\n<\/ul>\n<div><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6876\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_1-300x184.png\" alt=\"unity hub\" width=\"480\" height=\"294\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_1-300x184.png 300w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_1-1024x628.png 1024w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_1-768x471.png 768w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_1-1536x942.png 1536w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_1.png 1956w\" sizes=\"(max-width: 480px) 100vw, 480px\" \/><\/div>\n<div><\/div>\n<ul>\n<li>Haga clic en <strong>ADD<\/strong> y seleccione la versi\u00f3n recomendada<\/li>\n<\/ul>\n<div><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6878\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_2-300x185.png\" alt=\"unity hub\" width=\"480\" height=\"296\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_2-300x185.png 300w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_2-1024x632.png 1024w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_2-768x474.png 768w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_2-1536x947.png 1536w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_2.png 1962w\" sizes=\"(max-width: 480px) 100vw, 480px\" \/><\/div>\n<div><\/div>\n<ul>\n<li>Una vez instalada la versi\u00f3n de Unity, haga clic en los 3 puntos sobre la versi\u00f3n y seleccione <strong>Add Modules<\/strong><\/li>\n<\/ul>\n<div><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6880\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_3-300x185.png\" alt=\"unity hub\" width=\"400\" height=\"246\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_3-300x185.png 300w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_3-1024x630.png 1024w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_3-768x473.png 768w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_3-1536x945.png 1536w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_3.png 1956w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/><\/div>\n<div><\/div>\n<ul>\n<li>Instale <strong>Android Build Support<\/strong> y haga clic en <strong>Done<\/strong><\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6882\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_4-300x184.png\" alt=\"unity hub\" width=\"480\" height=\"294\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_4-300x184.png 300w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_4-1024x628.png 1024w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_4-768x471.png 768w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_4-1536x942.png 1536w, https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/unity_hub_4.png 1964w\" sizes=\"(max-width: 480px) 100vw, 480px\" \/><\/p>\n<p>&nbsp;<\/p>\n<h2><strong>Crear el Jenkinsfile<\/strong><\/h2>\n<div>\n<ul>\n<li>Primero necesitamos crear el archivo Jenkins que contendr\u00e1 los pasos necesarios para generar nuestra compilaci\u00f3n.<\/li>\n<\/ul>\n<div>\n<div class=\"wp-block-codemirror-blocks code-block \">\n<pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;groovy&quot;,&quot;mime&quot;:&quot;text\/x-groovy&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;lineWrapping&quot;:true,&quot;styleActiveLine&quot;:false,&quot;readOnly&quot;:true,&quot;align&quot;:&quot;&quot;}\">pipeline {\r\n    \/\/ Definici\u00f3n de variables de entorno que se pueden usar a lo largo del trabajo\r\n    environment {\r\n    }\r\n    \/\/ Opciones: agregar marca de tiempo a los logs de trabajos y limitar la cantidad de compilaciones que se deben mantener.\r\n    options {\r\n    }\r\n    \/\/ Variables que modifican el comportamiento del trabajo\r\n    parameters {\r\n    }\r\n    \/\/ Selector del agente que ejecutar\u00e1 el trabajo\r\n    agent {\r\n    }\r\n    \/\/ Los pasos necesarios para generar la aplicaci\u00f3n deseada\r\n    stages {\r\n    }\r\n    \/\/ Cualquier acci\u00f3n que queramos realizar despu\u00e9s de que todos los pasos hayan tenido \u00e9xito o hayan fallado\r\n    post {\r\n    }\r\n}<\/pre>\n<\/div>\n<div>\n<ul>\n<li>A continuaci\u00f3n, definamos nuestras variables ambientales, opciones de configuraci\u00f3n, par\u00e1metros de compilaci\u00f3n, agente de compilaci\u00f3n y acciones post trabajo.<\/li>\n<\/ul>\n<div class=\"wp-block-codemirror-blocks code-block \">\n<pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;groovy&quot;,&quot;mime&quot;:&quot;text\/x-groovy&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;lineWrapping&quot;:true,&quot;styleActiveLine&quot;:false,&quot;readOnly&quot;:true,&quot;align&quot;:&quot;&quot;}\">pipeline {\r\n    \/\/ Definici\u00f3n de variables de entorno que se pueden usar a lo largo del trabajo\r\n    environment {\r\n        \/\/ Github data\r\n        String gitUrl = \"git@github.com:GekoCloud\/unity_build_demo.git\"\r\n        String gitCredentials = \"jenkins-private-key\" \/\/ configura una credencial (PrivateKey) si tu repo es privado.\r\n        \r\n        \/\/ Unity\r\n        UNITY_EXECUTABLE = \"C:\\\\Path\\\\A\\\\TU\\\\Version\\\\Unity\\\\2020.3.16f1\\\\Editor\\\\Unity.exe\"\r\n        \r\n        \/\/ Unity data\r\n        UNITY_ID_EMAIL = credentials('jenkins-id-for-unity-email')\r\n        UNITY_ID_PASSWORD = credentials('jenkins-id-for-unity-password')\r\n        UNITY_ID_LICENSE = credentials('jenkins-id-for-unity-license')\r\n\r\n        \/\/ Unity parametros\r\n        BUILD_NAME = \"Android-${currentBuild.number}\"\r\n        String buildTarget = \"Android\"\r\n        String outputFolder = \"CurrentBuild\"\r\n\r\n        \/\/ PARAMETERS DATA\r\n        IS_DEVELOPMENT_BUILD = \"${params.developmentBuild}\"\r\n\r\n        \/\/ Agregar mas variables de entorno\r\n    }\r\n    \/\/ Opciones: agregar marca de tiempo a los logs de trabajos y limitar la cantidad de compilaciones que se deben mantener.\r\n    options {\r\n        timestamps()\r\n        buildDiscarder(logRotator(numToKeepStr: \"10\"))\r\n    }\r\n    \/\/ Variables que modifican el comportamiento del trabajo\r\n    parameters {\r\n        string(name: 'gitBranch', defaultValue: 'development', description: 'Set the branch.')\r\n        booleanParam(name: 'developmentBuild', defaultValue: true, description: 'Choose the buildType.')\r\n    }\r\n    \/\/ Selector del agente que ejecutar\u00e1 el trabajo\r\n    agent {\r\n        node {\r\n            \/\/ El nodo de Jenkins que se utilizar\u00e1 debe tener la etiqueta android\r\n            label \"android\"\r\n        }\r\n    }\r\n    \/\/ Los pasos necesarios para generar la aplicaci\u00f3n deseada\r\n    stages {\r\n    }\r\n    \/\/ Cualquier acci\u00f3n que queramos realizar despu\u00e9s de que todos los pasos hayan tenido \u00e9xito o hayan fallado\r\n    post {\r\n        success {\r\n            echo \"Funcion\u00f3 :)\"\r\n        }\r\n        failure {\r\n            echo \"NO Funcion\u00f3 :(\"\r\n        }\r\n    }\r\n}<\/pre>\n<\/div>\n<div>\n<div>\n<ul>\n<li>Ahora que tenemos una estructura general b\u00e1sica, definamos las diferentes etapas\/pasos que nos permitir\u00e1n crear la aplicaci\u00f3n deseada.\n<ul>\n<li>Descargar el c\u00f3digo de nuestra aplicaci\u00f3n de nuestro repositorio de c\u00f3digo.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/div>\n<div>\n<div class=\"wp-block-codemirror-blocks code-block \">\n<pre class=\"CodeMirror\" style=\"padding-left: 40px;\" data-setting=\"{&quot;mode&quot;:&quot;groovy&quot;,&quot;mime&quot;:&quot;text\/x-groovy&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;lineWrapping&quot;:true,&quot;styleActiveLine&quot;:false,&quot;readOnly&quot;:true,&quot;align&quot;:&quot;&quot;}\">   stage('Git Pull') {\r\n        steps {\r\n            echo \"Git pull repo\"\r\n            script {\r\n                try {\r\n                    git url: \"${gitUrl}\", branch: \"${gitBranch}\", credentialsId: \"${gitCredentials}\"\r\n                } catch (e) {\r\n                    currentBuild.result = \"FAILED\"\r\n                    echo \"JOB FAILED: The selected branch does not exists.\"\r\n                }\r\n            }\r\n        }\r\n    }<\/pre>\n<\/div>\n<\/div>\n<div>\n<div style=\"padding-left: 80px;\">Esto descargar\u00e1 el c\u00f3digo de la aplicaci\u00f3n definido en nuestras variables de entorno a la m\u00e1quina del agente.<\/div>\n<div><\/div>\n<p>&nbsp;<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Activar nuestra licencia de Unity en la m\u00e1quina.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-codemirror-blocks code-block \">\n<pre class=\"CodeMirror\" style=\"padding-left: 40px;\" data-setting=\"{&quot;mode&quot;:&quot;groovy&quot;,&quot;mime&quot;:&quot;text\/x-groovy&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;lineWrapping&quot;:true,&quot;styleActiveLine&quot;:false,&quot;readOnly&quot;:true,&quot;align&quot;:&quot;&quot;}\">   stage('Activate License') {\r\n        steps {\r\n            script {\r\n                echo \"Activate License...\"\r\n                bat '%UNITY_EXECUTABLE% -nographics -projectPath %CD% -quit -batchmode -username %UNITY_ID_EMAIL% -password %UNITY_ID_PASSWORD% -serial %UNITY_ID_LICENSE%'\r\n            }\r\n        }\r\n    }<\/pre>\n<\/div>\n<div>\n<div style=\"padding-left: 80px;\">\n<div>\n<div>Para realizar compilaciones con l\u00ednea de comandos, Unity requiere que se active una licencia pro o plus v\u00e1lida en la m\u00e1quina antes de ejecutar los comandos de compilaci\u00f3n.<\/div>\n<div><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div>\n<div>\n<div><\/div>\n<p>&nbsp;<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Ejecutar el comando de compilaci\u00f3n.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-codemirror-blocks code-block \">\n<pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;groovy&quot;,&quot;mime&quot;:&quot;text\/x-groovy&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;lineWrapping&quot;:true,&quot;styleActiveLine&quot;:false,&quot;readOnly&quot;:true,&quot;align&quot;:&quot;&quot;}\">   stage('Build Application') {\r\n        steps {\r\n            script {\r\n                echo \"create Application output folder...\"\r\n                bat 'mkdir %outputFolder%'\r\n\r\n                echo \"Buld App...\"\r\n                bat '%UNITY_EXECUTABLE% -projectPath %CD% -quit -batchmode -nographics -buildTarget %buildTarget% -customBuildPath %CD%\\\\%outputFolder%\\\\ -customBuildName %BUILD_NAME% -executeMethod BuildCommand.PerformBuilds'\r\n            }\r\n        }\r\n    }<\/pre>\n<p style=\"padding-left: 80px;\">El argumento <strong>-executeMethod BuildCommand.PerformBuilds<\/strong>, nos permite ejecutar funciones definidas en un script de <strong>C#<\/strong> (El archivo <strong>BuildCommand.cs<\/strong> debe estar ubicado en la carpeta <strong>Assets\/Scripts\/Editor<\/strong> de tu proyecto y puedes ver un ejemplo <a href=\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/BuildCommand.txt\">BuildCommand<\/a>, que realizar\u00e1 las diferentes configuraciones que generalmente se realizan manualmente en la IDE de Unity. Para obtener m\u00e1s informaci\u00f3n sobre las opciones que se pueden configurar, visite la documentaci\u00f3n de la <a href=\"https:\/\/docs.unity3d.com\/ScriptReference\/index.html\">api de unity<\/a>.<\/p>\n<div>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Desactivar nuestra licencia de Unity en la m\u00e1quina donde se ejecuta el trabajo de Jenkins.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-codemirror-blocks code-block \">\n<pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;groovy&quot;,&quot;mime&quot;:&quot;text\/x-groovy&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;lineWrapping&quot;:true,&quot;styleActiveLine&quot;:false,&quot;readOnly&quot;:true,&quot;align&quot;:&quot;&quot;}\">   post {\r\n        always {\r\n            script {\r\n                echo \"Return License...\"\r\n                bat '%UNITY_EXECUTABLE% -nographics -quit -batchmode -returnlicense -username %UNITY_ID_EMAIL% -password %UNITY_ID_PASSWORD%'\r\n            }\r\n        }\r\n    }<\/pre>\n<p>Esto solo es necesario si ejecuta sus cargas de trabajo en m\u00e1quinas ef\u00edmeras, ya que la licencia de unity no se libera autom\u00e1ticamente cuando se termina la m\u00e1quina que ejecuta el trabajo. Adem\u00e1s, esto no se ejecuta como una etapa porque necesitamos liberar la licencia si el trabajo falla o tiene \u00e9xito.<\/p>\n<p>Una vez que haya terminado su Jenkinsfile (puede ver el archivo completo aqui: <a href=\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/jenkinsfile.txt\">Jenkinsfile<\/a>) y su script <strong>BuildCommand<\/strong> se haya agregado a su proyecto, puede crear un trabajo de pipeline en su instancia de Jenkins y ap\u00fantarlo a su Jenkinsfile. <strong>Nota:<\/strong>\u00a0Dado que est\u00e1 publicaci\u00f3n fue pensada como gu\u00eda y no como una demo, es posible que deban realizarse algunos cambios para su proyecto espec\u00edfico.<\/p>\n<p>Para resumir, Unity permite a los desarrolladores definir configuraciones de compilaci\u00f3n al proporcionar una API de configuraci\u00f3n muy extensa, mientras que Jenkins permite a los equipos de devops ejecutar estas compilaciones automatizadas en procesos de CI\/CD, que adicionalmente pueden incluir todo tipo de pasos adicionales: subir a buckets S3, monitorear logs de compilaci\u00f3n generados, etc. Si tiene problemas para configurar la infraestructura para ejecutar sus pipelines de compilaci\u00f3n, <a href=\"https:\/\/geko.cloud\/en\/contact\/\">cont\u00e1ctenos<\/a> y podr\u00edamos ayudarte con eso \ud83d\ude01.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>En Geko Cloud, uno de nuestros clientes nos pidi\u00f3 que automatiz\u00e1ramos la compilaci\u00f3n de su proyecto Unity, ya que hacerlo manualmente consume mucho tiempo que los desarrolladores pod\u00edan dedicar a mejorar la aplicaci\u00f3n, en lugar de generar los ejecutables. Primero, analizamos sus necesidades actuales y futuras ya que esto nos permitir\u00eda brindarles la mejor soluci\u00f3n [&hellip;]<\/p>\n","protected":false},"author":23,"featured_media":6911,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[18],"tags":[54],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>- Geko Cloud<\/title>\n<meta name=\"description\" content=\"Tips para integrar Unity con Jenkins. Herramientas necesarias para generar una build de Android y que pasos deben ejecutarse para la Automatizaci\u00f3n de tu proceso.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"- Geko Cloud\" \/>\n<meta property=\"og:description\" content=\"Tips para integrar Unity con Jenkins. Herramientas necesarias para generar una build de Android y que pasos deben ejecutarse para la Automatizaci\u00f3n de tu proceso.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/\" \/>\n<meta property=\"og:site_name\" content=\"Geko Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-23T16:56:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-04-25T09:44:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/protada-jenkins-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1905\" \/>\n\t<meta property=\"og:image:height\" content=\"1005\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"X\u00e8nia Adan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/protada-jenkins-1.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@geko_cloud\" \/>\n<meta name=\"twitter:site\" content=\"@geko_cloud\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/\"},\"author\":{\"name\":\"X\u00e8nia Adan\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/person\/d0eb78f4c8e7a25a3d34040655f7d9d2\"},\"headline\":\"Jenkins + Unity: Automatiza el proceso de creaci\u00f3n de tu aplicaci\u00f3n Unity\",\"datePublished\":\"2021-12-23T16:56:37+00:00\",\"dateModified\":\"2022-04-25T09:44:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/\"},\"wordCount\":919,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/geko.cloud\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/protada-jenkins-1.jpg\",\"keywords\":[\"Jenkins\"],\"articleSection\":[\"Labs\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/\",\"url\":\"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/\",\"name\":\"- Geko Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/geko.cloud\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/protada-jenkins-1.jpg\",\"datePublished\":\"2021-12-23T16:56:37+00:00\",\"dateModified\":\"2022-04-25T09:44:05+00:00\",\"description\":\"Tips para integrar Unity con Jenkins. Herramientas necesarias para generar una build de Android y que pasos deben ejecutarse para la Automatizaci\u00f3n de tu proceso.\",\"breadcrumb\":{\"@id\":\"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/#primaryimage\",\"url\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/protada-jenkins-1.jpg\",\"contentUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/protada-jenkins-1.jpg\",\"width\":1905,\"height\":1005,\"caption\":\"Jenkins + Unity: Automatiza el proceso de creaci\u00f3n de tu aplicaci\u00f3n Unity\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/geko.cloud\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Jenkins + Unity: Automatiza el proceso de creaci\u00f3n de tu aplicaci\u00f3n Unity\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/geko.cloud\/es\/#website\",\"url\":\"https:\/\/geko.cloud\/es\/\",\"name\":\"Geko Cloud\",\"description\":\"Servicios de consultor\u00eda cloud y devops\",\"publisher\":{\"@id\":\"https:\/\/geko.cloud\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/geko.cloud\/es\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/geko.cloud\/es\/#organization\",\"name\":\"Geko Cloud\",\"url\":\"https:\/\/geko.cloud\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png\",\"contentUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png\",\"width\":1650,\"height\":809,\"caption\":\"Geko Cloud\"},\"image\":{\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/geko_cloud\",\"https:\/\/www.instagram.com\/gekocloud\/\",\"https:\/\/www.linkedin.com\/company\/gekocloud\",\"https:\/\/www.youtube.com\/channel\/UC5EFLCqUM7fEaXSa_0nWowQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/person\/d0eb78f4c8e7a25a3d34040655f7d9d2\",\"name\":\"X\u00e8nia Adan\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/7ced1192bab3d2c2b036d1551ed4fc4d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/7ced1192bab3d2c2b036d1551ed4fc4d?s=96&d=mm&r=g\",\"caption\":\"X\u00e8nia Adan\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"- Geko Cloud","description":"Tips para integrar Unity con Jenkins. Herramientas necesarias para generar una build de Android y que pasos deben ejecutarse para la Automatizaci\u00f3n de tu proceso.","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:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/","og_locale":"es_ES","og_type":"article","og_title":"- Geko Cloud","og_description":"Tips para integrar Unity con Jenkins. Herramientas necesarias para generar una build de Android y que pasos deben ejecutarse para la Automatizaci\u00f3n de tu proceso.","og_url":"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/","og_site_name":"Geko Cloud","article_published_time":"2021-12-23T16:56:37+00:00","article_modified_time":"2022-04-25T09:44:05+00:00","og_image":[{"width":1905,"height":1005,"url":"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/protada-jenkins-1.jpg","type":"image\/jpeg"}],"author":"X\u00e8nia Adan","twitter_card":"summary_large_image","twitter_image":"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/protada-jenkins-1.jpg","twitter_creator":"@geko_cloud","twitter_site":"@geko_cloud","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/#article","isPartOf":{"@id":"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/"},"author":{"name":"X\u00e8nia Adan","@id":"https:\/\/geko.cloud\/es\/#\/schema\/person\/d0eb78f4c8e7a25a3d34040655f7d9d2"},"headline":"Jenkins + Unity: Automatiza el proceso de creaci\u00f3n de tu aplicaci\u00f3n Unity","datePublished":"2021-12-23T16:56:37+00:00","dateModified":"2022-04-25T09:44:05+00:00","mainEntityOfPage":{"@id":"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/"},"wordCount":919,"commentCount":0,"publisher":{"@id":"https:\/\/geko.cloud\/es\/#organization"},"image":{"@id":"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/#primaryimage"},"thumbnailUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/protada-jenkins-1.jpg","keywords":["Jenkins"],"articleSection":["Labs"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/","url":"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/","name":"- Geko Cloud","isPartOf":{"@id":"https:\/\/geko.cloud\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/#primaryimage"},"image":{"@id":"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/#primaryimage"},"thumbnailUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/protada-jenkins-1.jpg","datePublished":"2021-12-23T16:56:37+00:00","dateModified":"2022-04-25T09:44:05+00:00","description":"Tips para integrar Unity con Jenkins. Herramientas necesarias para generar una build de Android y que pasos deben ejecutarse para la Automatizaci\u00f3n de tu proceso.","breadcrumb":{"@id":"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/#primaryimage","url":"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/protada-jenkins-1.jpg","contentUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/protada-jenkins-1.jpg","width":1905,"height":1005,"caption":"Jenkins + Unity: Automatiza el proceso de creaci\u00f3n de tu aplicaci\u00f3n Unity"},{"@type":"BreadcrumbList","@id":"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/geko.cloud\/es\/"},{"@type":"ListItem","position":2,"name":"Jenkins + Unity: Automatiza el proceso de creaci\u00f3n de tu aplicaci\u00f3n Unity"}]},{"@type":"WebSite","@id":"https:\/\/geko.cloud\/es\/#website","url":"https:\/\/geko.cloud\/es\/","name":"Geko Cloud","description":"Servicios de consultor\u00eda cloud y devops","publisher":{"@id":"https:\/\/geko.cloud\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/geko.cloud\/es\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/geko.cloud\/es\/#organization","name":"Geko Cloud","url":"https:\/\/geko.cloud\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/","url":"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png","contentUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png","width":1650,"height":809,"caption":"Geko Cloud"},"image":{"@id":"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/geko_cloud","https:\/\/www.instagram.com\/gekocloud\/","https:\/\/www.linkedin.com\/company\/gekocloud","https:\/\/www.youtube.com\/channel\/UC5EFLCqUM7fEaXSa_0nWowQ"]},{"@type":"Person","@id":"https:\/\/geko.cloud\/es\/#\/schema\/person\/d0eb78f4c8e7a25a3d34040655f7d9d2","name":"X\u00e8nia Adan","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/geko.cloud\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/7ced1192bab3d2c2b036d1551ed4fc4d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7ced1192bab3d2c2b036d1551ed4fc4d?s=96&d=mm&r=g","caption":"X\u00e8nia Adan"}}]}},"_links":{"self":[{"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/posts\/6847"}],"collection":[{"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/users\/23"}],"replies":[{"embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/comments?post=6847"}],"version-history":[{"count":16,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/posts\/6847\/revisions"}],"predecessor-version":[{"id":7944,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/posts\/6847\/revisions\/7944"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/media\/6911"}],"wp:attachment":[{"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/media?parent=6847"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/categories?post=6847"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/tags?post=6847"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}