{"id":453,"date":"2019-01-03T18:17:31","date_gmt":"2019-01-03T15:17:31","guid":{"rendered":"https:\/\/artem.services\/?p=453"},"modified":"2019-01-04T14:38:52","modified_gmt":"2019-01-04T11:38:52","slug":"docker-android-studio-for-jenkins","status":"publish","type":"post","link":"https:\/\/artem.services\/?p=453","title":{"rendered":"Docker &#8212; Android SDK for Jenkins"},"content":{"rendered":"<p>\u0417\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0431\u0435\u0440\u0435\u043c <strong>Ubuntu 18.04<\/strong>, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c <strong>Android SDK<\/strong>, \u0442\u0430\u043a \u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c <strong>ruby<\/strong>, <strong>nodejs<\/strong> \u0438 <strong>yarn<\/strong>. \u0418 \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <strong>Jenkins<\/strong> \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434.<\/p>\n<h2>Dockerfile:<\/h2>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nFROM ubuntu:18.04\r\n\r\nENV ANDROID_SDK_HOME \/opt\/android-sdk-linux\r\nENV ANDROID_SDK_ROOT \/opt\/android-sdk-linux\r\nENV ANDROID_HOME \/opt\/android-sdk-linux\r\nENV ANDROID_SDK \/opt\/android-sdk-linux\r\nENV DEBIAN_FRONTEND noninteractive\r\n\r\nRUN dpkg --add-architecture i386 &amp;&amp; apt update &amp;&amp; apt install -y \\\r\n    curl \\\r\n    expect \\\r\n    git \\\r\n    make \\\r\n    libc6:i386 \\\r\n    libgcc1:i386 \\\r\n    libncurses5:i386 \\\r\n    libstdc++6:i386 \\\r\n    zlib1g:i386 \\\r\n    openjdk-8-jdk \\\r\n    wget \\\r\n    unzip \\\r\n    vim \\\r\n    openssh-client \\\r\n    locales \\\r\n    &amp;&amp; apt-get clean\r\n\r\nRUN  rm -rf \/var\/lib\/apt\/lists\/* &amp;&amp; localedef -i en_US -c -f UTF-8 -A \/usr\/share\/locale\/locale.alias en_US.UTF-8\r\n\r\nENV LANG en_US.UTF-8\r\n\r\nRUN groupadd android &amp;&amp; useradd -d \/opt\/android-sdk-linux -g android -u 1000 android\r\n\r\nCOPY tools \/opt\/tools\r\nCOPY licenses \/opt\/licenses\r\n\r\nWORKDIR \/opt\/android-sdk-linux\r\n\r\nRUN apt update &amp;&amp; \\\r\n    apt install -y sudo gnupg2 &amp;&amp; \\\r\n    curl -sL https:\/\/deb.nodesource.com\/setup_8.x | bash - &amp;&amp; \\\r\n    curl -sS https:\/\/dl.yarnpkg.com\/debian\/pubkey.gpg | apt-key add - &amp;&amp; \\\r\n    echo &quot;deb https:\/\/dl.yarnpkg.com\/debian\/ stable main&quot; | tee \/etc\/apt\/sources.list.d\/yarn.list &amp;&amp; \\\r\n    apt update &amp;&amp; \\\r\n    apt install -y build-essential gnupg2 ruby-full nodejs yarn &amp;&amp; \\\r\n    gem update --system &amp;&amp; \\\r\n    gem install bundle &amp;&amp; \\\r\n    echo &quot;jenkins:x:106:111:Jenkins,,,:\/home:\/bin\/bash&quot; &gt;&gt; \/etc\/passwd &amp;&amp; \\\r\n    \/opt\/tools\/entrypoint.sh built-in &amp;&amp; \\\r\n    chown -R jenkins \/opt\/android-sdk-linux &amp;&amp; \\\r\n    chown -R jenkins \/home\r\n\r\nCOPY sudoers \/etc\/sudoers\r\nCOPY group \/etc\/group\r\n\r\nCMD \/opt\/tools\/entrypoint.sh built-in\r\n<\/pre>\n<p><!--more--><\/p>\n<p><strong>106:111<\/strong> &#8212; <strong>ID<\/strong> \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0433\u0440\u0443\u043f\u043f\u044b <strong>Jenkins<\/strong>&#39;a \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u0444\u0430\u0439\u043b\u0435 &quot;<strong>\/etc\/passwd<\/strong>&quot; \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 <strong>Jenkins<\/strong>. \u0412 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0444\u0430\u0439\u043b &quot;<strong>\/etc\/passwd<\/strong>&quot; \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439.<\/p>\n<blockquote><p>COPY sudoers \/etc\/sudoers<br \/>\nCOPY group \/etc\/group<\/p><\/blockquote>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0441 \u0445\u043e\u0441\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0444\u0430\u0439\u043b\u044b &quot;<strong>sudoers<\/strong>&quot; \u0438 &quot;<strong>group<\/strong>&quot;, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0441 <strong>Dockerfile<\/strong><\/p>\n<h4>\u0410\u0440\u0445\u0438\u0432\u044b:<\/h4>\n<ul>\n<li><a href=\"https:\/\/artem.services\/wp-content\/uploads\/2019\/01\/android-sdk-tools.zip\">tools<\/a><\/li>\n<li><a href=\"https:\/\/artem.services\/wp-content\/uploads\/2019\/01\/android-sdk-licenses.zip\">licenses<\/a><\/li>\n<\/ul>\n<p>\u042d\u0442\u0438 \u043f\u0430\u043f\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043b\u0435\u0436\u0430\u0442\u044c \u0440\u044f\u0434\u043e\u043c \u0441 <strong>Dockerfile<\/strong><\/p>\n<blockquote><p>\u0412 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 <strong>tools<\/strong> \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043f\u0435\u0440\u0435\u0434 \u0431\u0438\u043b\u0434\u043e\u043c \u0438\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0431\u0438\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p><\/blockquote>\n<p>&nbsp;<\/p>\n<p>\u041f\u043e\u043b\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0432 \u0441 <strong>Dockerfile<\/strong> \u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c <a href=\"https:\/\/artem.services\/wp-content\/uploads\/2019\/01\/android-sdk-all.zip\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0437:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ndocker build -t android-sdk .\/\r\n<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0417\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0431\u0435\u0440\u0435\u043c Ubuntu 18.04, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c Android SDK, \u0442\u0430\u043a \u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c ruby, nodejs \u0438 yarn. \u0418 \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f Jenkins \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434. Dockerfile:<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[37],"tags":[94,126,39,4,125],"_links":{"self":[{"href":"https:\/\/artem.services\/index.php?rest_route=\/wp\/v2\/posts\/453"}],"collection":[{"href":"https:\/\/artem.services\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/artem.services\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/artem.services\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/artem.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=453"}],"version-history":[{"count":8,"href":"https:\/\/artem.services\/index.php?rest_route=\/wp\/v2\/posts\/453\/revisions"}],"predecessor-version":[{"id":464,"href":"https:\/\/artem.services\/index.php?rest_route=\/wp\/v2\/posts\/453\/revisions\/464"}],"wp:attachment":[{"href":"https:\/\/artem.services\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=453"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/artem.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=453"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/artem.services\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}