{"id":6891,"date":"2021-12-23T17:56:22","date_gmt":"2021-12-23T16:56:22","guid":{"rendered":"https:\/\/geko.cloud\/?p=6891"},"modified":"2022-04-25T11:44:31","modified_gmt":"2022-04-25T09:44:31","slug":"jenkins-unity-automatize-your-unity-app-build-process","status":"publish","type":"post","link":"https:\/\/geko.cloud\/en\/jenkins-unity-automatize-your-unity-app-build-process\/","title":{"rendered":"Jenkins + Unity: Automatize your unity app build process"},"content":{"rendered":"<div>At Geko, we were asked by one of our clients to provide an automated build pipeline for their <a href=\"https:\/\/unity.com\">unity<\/a> project, as doing it manually took a lot of time that the developers could spent improving the application instead of generating the executables. First, we analyzed their current and future needs as this would enable us to provide the best solution in the short\/long term for them.<\/div>\n<div>\n<h2><strong>Requirement<\/strong><\/h2>\n<ul>\n<li>Automated process<\/li>\n<li>5 main platforms now (iOS, Android, Windows, Linux, WebGL)<\/li>\n<li>Possibility to build for other platforms in the near future (Nintendo, PlayStation, XBox, Stadia, etc)<\/li>\n<li>Flexibility to integrate with other services<\/li>\n<li>Cost efficient<\/li>\n<\/ul>\n<div>\n<div>After evaluating the current infrastructure of the company and the pros\/cons of using services such as <a href=\"https:\/\/unity.com\/es\/products\/unity-build-server\">Unity Builder<\/a>, we decided to develop the building pipelines on <a href=\"https:\/\/www.jenkins.io\/\">Jenkins<\/a>. By taking this approach we accomplished all the requirements of the task, as Jenkins will allow us to:<\/div>\n<ul>\n<li>Script the necessary steps to perform an automated build process.<\/li>\n<li>Generate builds for all the desired targets (5 main platforms and other platforms), currently on Unity Builder it is not possible to work with the extra platforms.<\/li>\n<li>Achieve cost efficiency by using on-demand workers that would get destroyed after the job ends. Unity Builds uses a similar strategy but the overall cost is a little more expensive.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<div>Now that we have our plan defined let&#8217;s get to work and prepare our Jenkinsfile, in this post we make the following assumptions:<\/div>\n<ul>\n<li>You have a running Jenkins instance and basic understanding of some Jenkins concepts.<\/li>\n<li>Your worker machine operating system is Windows.<\/li>\n<li>Your worker machine has <a href=\"https:\/\/developer.android.com\/studio\">Android Studio<\/a> installed.<\/li>\n<li>Your worker machine has <a href=\"https:\/\/unity3d.com\/es\/get-unity\/download\">Unity Hub<\/a> installed.<\/li>\n<li>You have a pro or plus <a href=\"https:\/\/store.unity.com\/compare-plans\">Unity License<\/a><\/li>\n<\/ul>\n<div>\n<h2><strong>Building for Android Platform<\/strong><\/h2>\n<div>\n<h3>Setting up Android Studio<\/h3>\n<div>\n<div>Unity leans on Android Studio tools to perform the builds, for that reason is important to have Android Studio installed (you can also install only the SDK) and add the api version you want your built to support.<\/div>\n<ul>\n<li>Open Android Studio settings<\/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<div><\/div>\n<ul>\n<li>Add the API versions (Levels) you need your application to support<\/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<h3>Setting up Unity Hub<\/h3>\n<div>Unity Hub is a unity tool that makes setting your dev environment really easy, here are the steps you need to follow after downloading and installing it:<\/div>\n<ul>\n<li>Go to the install section on the left panel<\/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 click <strong>ADD<\/strong> and select the recommended version<\/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>Once the unity version is installed, click on the 3 dots over the version and select <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>Install <strong>Android Build Support<\/strong> and click <strong>Done<\/strong><\/li>\n<\/ul>\n<div><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\" \/><\/div>\n<div><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div>\n<h3>Writing the Jenkinsfile<\/h3>\n<div>\n<ul>\n<li>First we need to create the Jenkinsfile that will contain the steps necessary to generate our build.<\/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    \/\/Definition of env variables that can be used throghout the pipeline job\r\n    environment {\r\n    }\r\n    \/\/Options: add timestamp to job logs and limiting the number of builds to be kept.\r\n    options {\r\n    }\r\n    \/\/Variable inputs that modify the behavior of the job\r\n    parameters {\r\n    }\r\n    \/\/Tag Selector of the agent that will run the build job\r\n    agent {\r\n    }\r\n    \/\/The steps necessary to generate the desired build\r\n    stages {\r\n    }\r\n    \/\/Any action we want to perform after all the steps have succeeded or failed\r\n    post {\r\n    }\r\n}<\/pre>\n<\/div>\n<div>\n<ul>\n<li>Next lets define our environmental variables, config options, build paramaters, build agent and post actions.<\/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    \/\/Definition of env variables that can be used throughout the pipeline job\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\" \/\/ set a PrivateKey credential if your repo is private\r\n        \r\n        \/\/ Unity tool installation\r\n        UNITY_EXECUTABLE = \"C:\\\\Path\\\\To\\\\Your\\\\Unity\\\\Version\\\\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 Build params\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        \/\/ Add other EnvVars here\r\n    }\r\n    \/\/Options: add timestamp to job logs and limiting the number of builds to be kept.\r\n    options {\r\n        timestamps()\r\n        buildDiscarder(logRotator(numToKeepStr: \"10\"))\r\n    }\r\n    \/\/Variable inputs that modify the behavior of the job\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    \/\/Tag Selector of the agent that will run the build job\r\n    agent {\r\n        node {\r\n            \/\/ Jenkins node to be used must have the label android\r\n            label \"android\"\r\n        }\r\n    }\r\n    \/\/The steps necessary to generate the desired build\r\n    stages {\r\n    }\r\n    \/\/Any action we want to perform after all the steps have succeeded or failed\r\n    post {\r\n        success {\r\n            echo \"Success :)\"\r\n        }\r\n        failure {\r\n            echo \"failure :(\"\r\n        }\r\n    }\r\n}<\/pre>\n<\/div>\n<div>\n<div>\n<ul>\n<li>Now that we have a basic general structure, lets define the different stages\/steps that will allow us to create the desired build for the unity application:<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Pull our application code from our source code repository.<\/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;\">This will download the application code defined in our EnvVars to the current agent machine.<\/div>\n<div><\/div>\n<div><\/div>\n<div>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Activate our Unity license on the current builder machine.<\/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>In order to perform builds with command-line, Unity requires that a valid pro or plus license is activated on the machine before executing the build commands.<\/div>\n<\/div>\n<\/div>\n<div><\/div>\n<\/div>\n<\/div>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Run the build command.<\/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('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<\/div>\n<div>\n<div style=\"padding-left: 80px;\">The argument <strong><strong>-executeMethod BuildCommand.PerformBuilds<\/strong><\/strong>, allow us to execute functions defined in a <strong>C#<\/strong> script (The <strong>BuildCommand.cs<\/strong> file must be placed in the <strong>Assets\/Scripts\/Editor<\/strong> folder of your project and you can see an example here:\u00a0<a href=\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/BuildCommand.txt\">BuildCommand<\/a>, that will perform the different settings that are usually performed manually on the Unity IDE. For more information about the settings that can be configured visit the <a href=\"https:\/\/docs.unity3d.com\/ScriptReference\/index.html\">unity api doc<\/a>.<\/div>\n<p>&nbsp;<\/p>\n<div><\/div>\n<\/div>\n<div>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>\n<div>\n<div>Deactivate our Unity license on the current builder machine.<\/div>\n<\/div>\n<\/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<\/div>\n<div>\n<div style=\"padding-left: 80px;\">\n<div>\n<div>This is only necessary if running your workloads on efemeral machines, since the unity license is not released automatically when the machine running the job is terminated. Also this is not run as a stage because we need to release the license if the job fails or succeeds.<\/div>\n<\/div>\n<\/div>\n<div><\/div>\n<\/div>\n<div>\n<div><\/div>\n<div>\n<div>After your Jenkinsfile is done (you can see the complete file here: <a href=\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/12\/jenkinsfile.txt\">Jenkinsfile<\/a>) and your <strong>BuildCommand<\/strong> script is added to your project, you can create a pipeline job on your jenkins instance and point it to your newly created Jenkinsfile. <strong>Note<\/strong>: Since this post was meant as guide and not a running demo some changes might need to be done for your specific project.<\/div>\n<p>To summarize, Unity allows the developers to define build settings by providing a very extensive configuration API, while Jenkins enables the devops teams to run this automated builds on CI\/CD pipelines, which needless to say can include all sort of extra steps: upload to S3 buckets, monitoring generated build logs, etc. If you are having issues setting up the infrastructure to run your build pipelines, <a href=\"https:\/\/geko.cloud\/en\/contact\/\">contact us<\/a> and we might be able to help you with that \ud83d\ude01.<\/p>\n<\/div>\n<\/div>\n<div><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>At Geko, we were asked by one of our clients to provide an automated build pipeline for their unity project, as doing it manually took a lot of time that the developers could spent improving the application instead of generating the executables. First, we analyzed their current and future needs as this would enable us [&hellip;]<\/p>\n","protected":false},"author":23,"featured_media":6912,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[67],"tags":[83],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Jenkins + Unity: Automatize your unity app build process - Geko Cloud<\/title>\n<meta name=\"description\" content=\"In this post we share some tips to integrate Unity with Jenkins, what tools are needed to generate an Android build and what steps should be executed in our Job to achieve the Automation of your process.\" \/>\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=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Jenkins + Unity: Automatize your unity app build process - Geko Cloud\" \/>\n<meta property=\"og:description\" content=\"In this post we share some tips to integrate Unity with Jenkins, what tools are needed to generate an Android build and what steps should be executed in our Job to achieve the Automation of your process.\" \/>\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:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-04-25T09:44:31+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: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: Automatize your unity app build process\",\"datePublished\":\"2021-12-23T16:56:22+00:00\",\"dateModified\":\"2022-04-25T09:44:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/\"},\"wordCount\":815,\"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\":\"en-US\",\"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\":\"Jenkins + Unity: Automatize your unity app build process - 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:22+00:00\",\"dateModified\":\"2022-04-25T09:44:31+00:00\",\"description\":\"In this post we share some tips to integrate Unity with Jenkins, what tools are needed to generate an Android build and what steps should be executed in our Job to achieve the Automation of your process.\",\"breadcrumb\":{\"@id\":\"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@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\"},{\"@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\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Jenkins + Unity: Automatize your unity app build process\"}]},{\"@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\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/geko.cloud\/es\/#organization\",\"name\":\"Geko Cloud\",\"url\":\"https:\/\/geko.cloud\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@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\":\"en-US\",\"@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":"Jenkins + Unity: Automatize your unity app build process - Geko Cloud","description":"In this post we share some tips to integrate Unity with Jenkins, what tools are needed to generate an Android build and what steps should be executed in our Job to achieve the Automation of your process.","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":"en_US","og_type":"article","og_title":"Jenkins + Unity: Automatize your unity app build process - Geko Cloud","og_description":"In this post we share some tips to integrate Unity with Jenkins, what tools are needed to generate an Android build and what steps should be executed in our Job to achieve the Automation of your process.","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:22+00:00","article_modified_time":"2022-04-25T09:44:31+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_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: Automatize your unity app build process","datePublished":"2021-12-23T16:56:22+00:00","dateModified":"2022-04-25T09:44:31+00:00","mainEntityOfPage":{"@id":"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/"},"wordCount":815,"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":"en-US","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":"Jenkins + Unity: Automatize your unity app build process - 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:22+00:00","dateModified":"2022-04-25T09:44:31+00:00","description":"In this post we share some tips to integrate Unity with Jenkins, what tools are needed to generate an Android build and what steps should be executed in our Job to achieve the Automation of your process.","breadcrumb":{"@id":"https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/geko.cloud\/es\/jenkins-unity-automatiza-el-proceso-de-creacion-de-tu-aplicacion-unity\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@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"},{"@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\/en\/"},{"@type":"ListItem","position":2,"name":"Jenkins + Unity: Automatize your unity app build process"}]},{"@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":"en-US"},{"@type":"Organization","@id":"https:\/\/geko.cloud\/es\/#organization","name":"Geko Cloud","url":"https:\/\/geko.cloud\/es\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@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":"en-US","@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\/en\/wp-json\/wp\/v2\/posts\/6891"}],"collection":[{"href":"https:\/\/geko.cloud\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/geko.cloud\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/geko.cloud\/en\/wp-json\/wp\/v2\/users\/23"}],"replies":[{"embeddable":true,"href":"https:\/\/geko.cloud\/en\/wp-json\/wp\/v2\/comments?post=6891"}],"version-history":[{"count":8,"href":"https:\/\/geko.cloud\/en\/wp-json\/wp\/v2\/posts\/6891\/revisions"}],"predecessor-version":[{"id":8087,"href":"https:\/\/geko.cloud\/en\/wp-json\/wp\/v2\/posts\/6891\/revisions\/8087"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/geko.cloud\/en\/wp-json\/wp\/v2\/media\/6912"}],"wp:attachment":[{"href":"https:\/\/geko.cloud\/en\/wp-json\/wp\/v2\/media?parent=6891"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/geko.cloud\/en\/wp-json\/wp\/v2\/categories?post=6891"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/geko.cloud\/en\/wp-json\/wp\/v2\/tags?post=6891"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}