ã¿ãªããããã«ã¡ã¯ïŒ
ç§ã¯ã¢ã³ããã€ãéçºè
ãšããŠåããŠããŸãããå°ãåã«ããããžã§ã¯ãã§èªååãããæ¥åžžçãªã¿ã¹ã¯ã«ééããŸããã ããšãã°ã5ã€ã®ç°ãªããã¬ãŒããŒããããããããã«ãã«ãããã¡ããªãã¯ã«ã¢ããããŒãããå¿
èŠããããŸããå Žåã«ãã£ãŠã¯ã1æ¥æ°åãç°ãªãã«ãŒãçšã«ãã¬ãŒããŒãã¢ããããŒãããŸãã ã¯ãããã®ã¿ã¹ã¯ã¯gradleã¿ã¹ã¯ã䜿çšããŠè¡ãããšãã§ããŸãããéçºè
ã®ãã·ã³ã§ãã®ããã»ã¹ãéå§ããã®ã§ã¯ãªããäœããã®åœ¢ã§éäžçã«å®è¡ããããšæããŸãã ãŸãã¯ãããšãã°ãGoogle Playã®ãã«ããããŒã¿çã«èªåçã«ã¢ããããŒãããŸãã ãŸããç§ã¯CIã·ã¹ãã ãéžã³ããã£ãã ãã§ãã ãã®ããšã®ç±æ¥ãšãã®èšå®æ¹æ³ããªãDockerãããã®ãââã«ã€ããŠã¯ããã®èšäºã®åŸåã§èª¬æããŸãã

ç§ã®çè§£ã§ã¯ãã¿ã¹ã¯å
šäœã¯çŽ2ã€ã®æ®µéã«åããããŸããã
- JenkinsèªäœãAndroid SDKã§ã€ã³ã¹ããŒã«ããã³æ§æããŸã
- Jenkinså
ã§æ¢ã«ã¿ã¹ã¯ãèšå®ãã
ãã®èšäºã§ã¯ãæåã®ç¹ã«è§ŠããããšæããŸããããã誰ãã«ãšã£ãŠè峿·±ãå Žåã¯ã次ã®èšäºã§ãžã§ã³ãã³ã¹èªäœã§ã¢ã»ã³ããªã¿ã¹ã¯ãèšå®ããããã»ã¹ã«ã€ããŠèª¬æããŸãã
ãã®ãããæåã®ãã€ã³ãã¯Jenkinsã·ã¹ãã ã®ã€ã³ã¹ããŒã«ãšèšå®ã§ã
Habréã¯ãã§ã«ãã®ãããã¯ã«é¢ãã玠æŽãããèšäºãæã£ãŠããŸããã圌女ã¯ãã§ã«æ°å¹Žã§ããããã®äžã®ããã€ãã®ãã®ã¯å°ãæä»£é
ãã§ãïŒããšãã°ãsdkmanagerïŒãåææ®µéã§äœãã©ã®ããã«è¡ãããçè§£ããã®ã«å€§ãã«åœ¹ç«ã¡ãŸãããJenkinsãã€ã³ã¹ããŒã«ããããã®å
¬åŒ
ããã¥ã¡ã³ããèŠããšãæ¢è£œã®dockerã€ã¡ãŒãžãå®è¡ããwarãã¡ã€ã«ãããŠã³ããŒãããŠå®è¡ããããã«å€ãæ¹æ³ã§ã·ã¹ãã ã«jenkinsãã€ã³ã¹ããŒã«ããã ãã§ãïŒããšãã°ãubuntuã䜿çšããŠ
apt-get install jenkinsã
apt-get install jenkinsãããªã©ïŒã æåã®ãªãã·ã§ã³ã¯ããã¹ãã·ã¹ãã ã«äžèŠãªèšå®ãäŸåé¢ä¿ãæããªããããæãæ£ç¢ºã§ãããŸããäœãåé¡ãçºçããå Žåã§ãããã¹ãŠãç°¡åã«åé€ããŠåèµ·åã§ããŸãã ãã ããjenkinsã®æšæºã®dockerã€ã¡ãŒãžã«ã¯ãäžèŠãªããŒã¿ïŒblueoceanãã©ã°ã€ã³ãªã©ïŒãå«ãŸããŠãããééããªãå¿
èŠãªãã®ïŒAndroid SDKãªã©ïŒã¯å«ãŸããŠããŸããã ç¬èªã®dockerã€ã¡ãŒãžãäœæãããã®äžã«warãã¡ã€ã«ãããŠã³ããŒãããŠå®è¡ããAndroid SDKãããŠã³ããŒãããŠã€ã³ã¹ããŒã«ããå¿
èŠãªä»ã®ãã¹ãŠã®èšå®ãæ§æããããšã«ããŸããã åŸã§èµ·åããã«ã¯ãDockerãã€ã³ã¹ããŒã«ããããã¹ãã·ã¹ãã ãå¿
èŠã§ãã ããã§ã¯ãè»èŒªãåçºæããŠDigitalOceanã䜿çšããªãããšããå§ãããŸãã
ä»®æ³ãã·ã³ãäœæããŠæ§æãã
ãããããããã«ä»ã®èª°ããç»é²ãããŠããªãå Žåã¯ãç»é²ããããšããå§ãã
ãŸã ïŒããã§ã¯èšäºãæžããŠããæç¹ã§ç޹ä»ãªã³ã¯ããããŸããããã«ãŒã«ãèªãã åŸããããæšãŠãŸããïŒã ç»é²åŸãã€ã³ã¿ãŒãããäžã®1ã€ãŸãã¯å¥ã®ããã¢ãŒã·ã§ã³ã³ãŒããGoogleã§æ€çŽ¢ããŠãçŽ10ãã«ãæã«å
¥ããããšãã§ããŸãã
æ°ããæ¶²æ»ŽãååŸããå¿
èŠãããåŸã ã¢ã€ãã 
ããããã¬ãããéžæããŠããã 
ããããã¬ããã®äœæãéžæããŸãã

ãã¹ãã·ã¹ãã ã¯Ubuntu 18.04ã§ãã Dockerãæ¢ã«ã€ã³ã¹ããŒã«ããã³æ§æãããŠããã€ã¡ãŒãžãéžæããããšãã§ããŸãããç§ãã¡ã¯ãã¹ãŠèªåã§è¡ããŸãã ã¢ã³ããã€ããã«ãã®ã¢ã»ã³ããªã¯äŸç¶ãšããŠãªãœãŒã¹ã倧éã«æ¶è²»ããããããã«ããéåžžãã€æ¯èŒçè¿
éã«åéãããããã«ãå°ãªããšã20ãã«ã®æ§æãéžæããå¿
èŠããããŸãã

ããè¿ãå ŽæãéžæããŸãïŒããšãã°ããã€ãïŒã 次ã«ãä»®æ³ãµãŒããŒãžã®æ¥ç¶æ¹æ³ã«ã€ããŠ2ã€ã®ãªãã·ã§ã³ããããŸãã sshããŒã远å ããããšãã远å ããããšãã§ããŸãã ãã®å Žæã§äœ¿çšããããŒãæå®ããªãå Žåãã«ãŒããŠãŒã¶ãŒã®ãã¹ã¯ãŒããã¡ãŒã«ã«éä¿¡ãããŸãã

ããã§ããµãŒããŒåã倿Žãã[ 
äœæ ]ãã¿ã³ãã¯ãªãã¯ããŠ
äœæãå®äºã§ããŸãã

次ã«ãäœæãããããããã¬ããã«ç§»åããæ¥ç¶ãšæ§æãããã«é²ããããã«ãèªåçšã®IPã¢ãã¬ã¹ãã³ããŒããŸãã

sshã¯ã©ã€ã¢ã³ããå¿
èŠã§ãã ã±ã·ã®äžã§äœæ¥ããå Žåã¯ãæšæºç«¯æ«ã䜿çšã§ããŸããWindowsã§
äœæ¥ããå Žå
ãLinuxãµãã·ã¹ãã ã䜿çšããããã«puttyã䜿çšã§ã
ãŸã ïŒWindows 10ã®ã¿ïŒã ç§ã¯å人çã«åŸè
ã®ãªãã·ã§ã³ã䜿çšããŠãããå®å
šã«ç§ã«åã£ãŠããŸãã
次ã®ã³ãã³ãã䜿çšããŠãµãŒããŒã«æ¥ç¶ããŸã
 ssh root@YOUR_IP_ADDRESS 
ã³ã³ãœãŒã«ããããŒãä¿åããããã«æ±ããããŸãããããã«åæããŸãã æ¥ç¶åŸãèªåçšã®æ°ãããŠãŒã¶ãŒãäœæããã¹ãŒããŒãŠãŒã¶ãŒã«è¿œå ãïŒãã¹ã¯ãŒããªãã§sudoã䜿çšããæ©äŒãäžããŸãïŒãsshçµç±ã§ã¢ã¯ã»ã¹ããããã®ããŒã圌ã«ã³ããŒãã圌ããããã®ãã¡ã€ã«ã®ææè
ã§ãããšèšããŸãïŒããã§ãªãå Žåã¯åäœããŸããïŒã 
ãŠãŒã¶ãŒå㯠ãéœåã®è¯ããã®ã«å€æŽãããŸãã
 useradd -m -s /bin/bash username \ && echo 'username ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers \ && mkdir /home/username/.ssh \ && cp /root/.ssh/authorized_keys /home/username/.ssh/authorized_keys \ && chown username:username -R /home/username/.ssh 
次ã®ã³ãã³ãã§ã«ãŒãããåæããŸã
 exit 
ãããŠãäœæãããæ°ãããŠãŒã¶ãŒã®å©ããåããŠæ¢ã«åæ¥ç¶ããŸã
 ssh username@YOUR_IP_ADDRESS 
ã·ã¹ãã ãæŽæ°ãããµãŒããŒãåèµ·åããåŸïŒæŽæ°äžã«ã·ã¹ãã ãäœããå°ããå Žåã¯ããã®å Žåã¯åžžã«ããã©ã«ãå€ãéžæããã ãã§ååã§ãïŒã
 sudo apt update && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo reboot 
åºæ¬çãªã»ããã¢ãããå®äºããŸããã æŠéã·ã¹ãã ã®èгç¹ããèŠããšãããŸãå®å
šã§ã¯ãããŸãããããã®èšäºã®æ çµã¿å
ã§ã¯å®å
šã«é©åã§ãã
Dockerãã€ã³ã¹ããŒã«ããŸãã
Dockerãã·ã¹ãã ã«ã€ã³ã¹ããŒã«ããã«ã¯ã 
å
¬åŒããã¥ã¡ã³ãã䜿çšã
ãŸã ã æ°ããã€ã³ã¹ããŒã«ãããã·ã¹ãã ãããã®ã§ããã®ç¹ã¯ã¹ãããããŸããDockerããã®æšèŠã§ãäœããé·æéå®è¡ãããŠããã·ã¹ãã ãããå Žåã¯ãå€ãããŒãžã§ã³ãåé€ããŸãã
 sudo apt-get remove docker docker-engine docker.io containerd runc 
æåã«sshãä»ããŠãµãŒããŒã«åæ¥ç¶ããããšãå¿ããªãã§ãã ããã Dockerèªäœã®ã€ã³ã¹ããŒã«ã«ã€ããŠã¯ãããã¥ã¡ã³ãã§è©³ãã説æããŠããŸããç°¡åã«äœ¿çšã§ããããã«ãäžè¬çãªã³ãã³ããæäŸããŸãã 圌ããããŠããããšã¯ããã§èªãããšãã§ããŸãã ãŸãããªããžããªã远å ããŸãã
 sudo apt update \ && sudo apt install -y apt-transport-https ca-certificates \ curl gnupg-agent software-properties-common \ && curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - \ && sudo apt-key fingerprint 0EBFCD88 \ && sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" 
ãããŠãDockerèªäœãã€ã³ã¹ããŒã«ããŸãã
 sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io 
å°æ¥ãsudoãã¬ãã£ãã¯ã¹ãªãã§dockerã³ãã³ããåŒã³åºãããšãã§ããããã«ã次ã®ã³ãã³ããå®è¡ããŸãïŒããã
æé ã§æ
éã«èª¬æãããŠã
ãŸã ïŒã
 sudo usermod -aG docker username 
ãã®åŸããããæ©èœãããããã«ïŒexitã³ãã³ãã䜿çšããŠãµãŒããŒã«åæ¥ç¶ããŠïŒåãã°ã€ã³ããå¿
èŠããããŸãã
Dockerèªäœãã€ã³ã¹ããŒã«ãããŠãããã³ãã³ãã§ç¢ºèªã§ããŸã
 docker run hello-world 
圌女ã¯ãã¹ãã€ã¡ãŒãžãããŠã³ããŒãããã³ã³ãããŒã§å®è¡ããŸãã ã³ã³ããã¯ãèµ·ååŸãæ
å ±ã¡ãã»ãŒãžãåºåããŠçµäºããŸãã
ããã§ãšãããããŸãããµãŒããŒã®äœæ¥æºå段éãçµäºããŸããïŒ
Dockerã€ã¡ãŒãžã®äœæ
ç¬èªã®DockerfileãäœæããŠãDockerã€ã¡ãŒãžãäœæããŸãã ãããã€ã³ã¿ãŒãããäžã§ã¯ãŽã³ãšå°ããªã«ãŒãã§æ£ããè¡ãæ¹æ³ã®äŸ
ã宿ããããŒãžã§ã³ãèŠã
ãã§ããã ãã³ã¡ã³ãããããã«ããŸãã ãŸããdockerfileã®æ£ããæ£èŠã®ã¹ãã«ã®äŸãèšèŒãããdockerèªäœã®
åæ±èª¬ææžããããŸãã
DockerfileãäœæããŠéããŠç·šéããŸã
 touch Dockerfile && nano Dockerfile 
ããšãã°ãDockerfileã®ã³ã³ãã³ããé
眮ããŸã
ã³ã¡ã³ãä»ãã®dockerfileå
šäœ ããã€ãã®èª¬æïŒ
- æåã¯ãubuntuã®ä»£ããã«è»œéã®é«å±±ã䜿çšããããšããèŠæããããŸããããAndroid SDKã䜿çšããŠãããžã§ã¯ãããã«ãããããã«å¿
èŠãªia32-libsãµããŒãããããŸããã
- äžéšã®Jenkins颿°ã«ã¯å®å
šãªã·ã¹ãã ãå¿
èŠã§ããããïŒããšãã°ãåäœãã¹ãçµæã®è¡šç€ºïŒããã軜éãªopenjdk-8-jdk-headlessã§ã¯ãªãopenjdk-8-jdkãã€ã³ã¹ããŒã«ããŸãã
- ãã±ãŒã«ãã€ã³ã¹ããŒã«ããå¿
èŠããããŸããããã€ãã®ãããžã§ã¯ãã§ã¯ããããããªããšãæãããªãšã©ãŒããã°ãªãã§gradleã¢ã»ã³ããªãã¯ã©ãã·ã¥ãããã®çç±ã®æåŸã«å°éãããŸã§ã«æ°æ¥ãè²»ãããŸããïŒDockerã«ãªãéåžžã®ubuntuã§ã¯ããã¹ãŠã®ãã±ãŒã«ãããã©ã«ãã§æºããããŸãïŒ ã
- ãã«ãããã»ã¹äžã«Jenkinsãå¿
èŠãªã³ã³ããŒãã³ãïŒããšãã°ãAPIã®ç°ãªãããŒãžã§ã³ã«å¿
èŠãªSDKïŒãåå¥ã«ã€ã³ã¹ããŒã«ã§ããããã«ãAndroid SDKã®ãã¹ãŠã®ã©ã€ã»ã³ã¹ãããã«åãå
¥ããå¿
èŠããããŸãã å¿
èŠã«å¿ããŠãåŸã§dockerã³ã³ãããŒå
ã§sdkmanagerã䜿çšããŠSDKã管çã§ãsdkmanager --listããšãã°ãsdkmanager --list䜿çšsdkmanager --listãšã䜿çšå¯èœãªãã¹ãŠã®ã³ã³ããŒãã³ããšã€ã³ã¹ããŒã«ãããŠãããã¹ãŠã®ã³ã³ããŒãã³ãã衚瀺ã§ãsdkmanager --listsdkmanager --install "platforms;android-26"--sdkmanager --install "platforms;android-26"ãAPIããŒãžã§ã³26ã®SDKãã€ã³ã¹ããŒã«ããŸãã
- äžè¬çã«ããŠãŒã¶ãŒjenkinsãèµ·åããã«rootãŠãŒã¶ãŒã«ãšã©ãŸãããšã¯ã§ããŸããããã©ããããããé©åã§ã¯ãªããã¹ãŒããŒãŠãŒã¶ãŒæš©éãäžããããšãã§ããŸããã§ããããããã¯äœããã€ã³ã¹ããŒã«ããå¿
èŠãããå Žåã«äŸ¿å©ãªç¹ã§è¡ãããŸããã»ããã¢ããããã³ãããã°ã®æ®µéã§ã
- ç»åã®åºæ¬ãµã€ãºã¯ããªã倧ãããªããŸããïŒçŽ800 mbïŒããå
šäœãšããŠç§ã¯ããã¯ããã»ã©éèŠã§ã¯ãªããšããçµè«ã«éããŸãããäžèŠãªããã±ãŒãžã®æ€çŽ¢ãšåé€ã«æéãè²»ãããããããã®åœ¢åŒã§ããŠã³ããŒãããæ¹ãç°¡åã§ãã
DockerfileãäœæãããããããDockerçšã®æ¢è£œã®ã€ã¡ãŒãžã«å€æããããã«åºã¥ããŠã³ã³ãããŒãäœæããå¿
èŠããããŸãã ããã¯åã«ããŒã ã«ãã£ãŠè¡ãããŸã
 docker build -t jenkins-image 
ããã§ã 
-t jenkins-imageãã©ã¡ãŒã¿ãŒã¯
-t jenkins-imageã®ååãæ
åœããã³ãã³ãã®æ«å°Ÿã®ãããã¯ããã®ãã£ã¬ã¯ããªå
ã®ã¢ã»ã³ããªã®Dockerfileãæ¢ãå¿
èŠãããããšã瀺ããŠããŸãã ã¢ã»ã³ããªããã»ã¹èªäœã«ã¯æéãããããã¢ã»ã³ããªåŸãã³ã³ãœãŒã«ã«ã¯ãã®ã¡ãã»ãŒãžã®ãããªãã®ã衚瀺ãããŸãã
9fd8f5545c27ã®æ§ç¯ã«æåããŸãã
æ£åžžã«ã¿ã°ä»ããããjenkins-imageïŒææ°
ããã«ãããã€ã¡ãŒãžãæ£åžžã«ã¢ã»ã³ãã«ãããæ¬¡ã®ã¹ããããã€ãŸãã³ã³ããã®èµ·åã«é²ãããšãã§ããŸãã
Docker Hubãšæ¢è£œã®ç»å
ã¯ãããã¡ãããæ¢è£œã®ã€ã¡ãŒãžã䜿çšããŠã³ã³ãããŒãèµ·åã§ããŸãããè€æ°ã®ããã€ã¹ã§ãããè¡ãå¿
èŠãããå Žåãæ¯åDockerfileãäœæããããããæ¢è£œã®ã€ã¡ãŒãžãäœæããããšã¯ããŸã䟿å©ã§ã¯ãããŸããã ãŸããDockerfileã®å
å®¹ãæŽæ°ããå Žåããã¹ãŠã®ããŒãã§å€æŽãããŒã«ã¢ãŠãããããšã¯ãŸã£ãã䟿å©ã§ã¯ãããŸããã ãããã®ç®çã®ããã«ã 
Docker Hubã€ã¡ãŒãžã®ãããªãã¯ãªããžããªããããŸãã åããŒãã§æ¯åã€ã¡ãŒãžãåéããã®ã§ã¯ãªããåçŽã«ãããªãã¯ãªããžããªããèªåèªèº«ã«ããŠã³ããŒãããŠããã¹ãŠã®ãã·ã³ã§çãã䜿çšããããšãã§ããŸãã ããšãã°ããã®èšäºã®äŸãšããŠäœ¿çšããç»åã¯ã 
osipovaleks / docker-jenkins-androidãšããååã®ãªããžããªã§å©çšã§ããŸããèšäºã®åŸåã§äœ¿çšããŸãã
ãã®èšäºã¯Docker Hubã®è©³çްãªèª¿æ»ãæå³ãããã®ã§ã¯ãããŸãããããã«ç»åãã¢ããããŒãããæ¹æ³ïŒããã¯ããã»ã©é£ãããããŸãããïŒãšããã§ã§ããããšãçè§£ã§ããŸããããèªåã®å人ã®å
¬éãŸãã¯éå
¬éã®ãªããžããªããããããããªãããšã¯çè§£ã§ããŸããããã®å Žåãå¿
èŠã«å¿ããŠãã¹ãŠãåå¥ã«ãœãŒãã§ããŸãã
ã³ã³ããæã¡äžã
ã³ã³ãããéå§ããã«ã¯2ã€ã®æ¹æ³ããããŸãã
- æåã®æ¹æ³ãåã«docker runã䜿çšãããšãæ¬¡ã®æ¹æ³ã§ãããç°¡åãã€è¿
éã«è¡ãããšãã§ããŸã
 
  docker run --name jenkins -d -it -v jenkins-data:/var/lib/jenkins -v jenkins-home:/home/jenkins -p 8080:8080 --restart unless-stopped osipovaleks/docker-jenkins-android
 
 runã³ãã³ãã«ã¯æ¬¡ã®ãã©ã¡ãŒã¿ãŒããããŸã
 
 - --name jenkinså°æ¥ã®ã³ã³ããã®åå
- -dã³ã³ãããŒãããã¯ã°ã©ãŠã³ãã§èµ·åããŸã
- -it-STDINããã³ttyãæäœããããã®ãã©ã°
- -v jenkins-data:/var/lib/jenkinsããã³- -v jenkins-home:/home/jenkinsç¹å¥ãªããªã¥ãŒã ãã¡ã€ã«ãäœæããã³ã³ããã®å
éšã»ã¯ã·ã§ã³ã«ãããã³ã°ããŸããããã«ãããã«ã¹ã¿ãã€ãºããJenkinsãåæ§ç¯ããåŸã§ãä¿åã§ããŸãã³ã³ãã
- -p 8080:8080ãã¹ãããŒããã³ã³ããããŒãã«ãããããŠãWebã€ã³ã¿ãŒãã§ãŒã¹ã«ã¢ã¯ã»ã¹ã§ããããã«ããŸãïŒã¯ããããã¯Dockerfileã§æå®ããããŒãã§ãïŒ
- --restart unless-stoppedãã®ãªãã·ã§ã³ã¯ããã¹ãã®åèµ·ååŸã«ã³ã³ããã®èªåå®è¡ããªã·ãŒã決å®ããŸãïŒãã®å Žåãã³ã³ãããæåã§ãªãã«ãããŠããªãå Žåã¯èªåèµ·åããŸãïŒ
- osipovaleks/docker-jenkins-androidå±éçšã®ã€ã¡ãŒãžã
 
 Dockerã³ã³ãœãŒã«ãžã®åºå£ã§ãäœæãããã³ã³ããã®IDãååŸããã€ã¡ãŒãžãã·ã¹ãã ã«ããŒããããæ¹æ³ã«é¢ããæ
å ±ã衚瀺ããå¿
èŠããããŸãïŒãã¡ããããŸã ããŒããããŠããªãå ŽåïŒã
 ç»å 'osipovaleks / docker-jenkins-androidïŒlatest'ãããŒã«ã«ã«èŠã€ãããŸãã
 ææ°ïŒosipovaleksããã®ååŸ/ docker-jenkins-android
 6cf436f81810ïŒãã«å®äº
 987088a85b96ïŒãã«å®äº
 b4624b3efe06ïŒãã«å®äº
 d42beb8ded59ïŒãã«å®äº
 b3896048bb8cïŒãã«å®äº
 8eeace4c3d64ïŒãã«å®äº
 d9b74624442cïŒãã«å®äº
 36bb3b7da419ïŒãã«å®äº
 31361bd508cbïŒãã«å®äº
 cee49ae4c825ïŒãã«å®äº
 868ddf54d4c1ïŒãã«å®äº
 361bd7573dd0ïŒãã«å®äº
 bb7b15e36ae8ïŒãã«å®äº
 97f19daace79ïŒãã«å®äº
 1f5eb3850f3eïŒãã«å®äº
 651e7bbedad2ïŒãã«å®äº
 a52705a2ded7ïŒãã«å®äº
 ãã€ãžã§ã¹ãïŒsha256ïŒ321453e2f2142e433817cc9559443387e9f680bb091d6369bbcbc1e0201be1c5
 ã¹ããŒã¿ã¹ïŒosipovaleks / docker-jenkins-androidã®æ°ããã€ã¡ãŒãžãããŠã³ããŒãããŸããïŒææ°
 ef9e5512581da66d66103d9f6ea6ccd74e5bdb3776747441ce6a88a98a12b5a4
 
- éå§ãã2çªç®ã®æ¹æ³ã§ã¯ãç¹å¥ãªæ§æãã¡ã€ã«ãäœæããŸãããã®å Žåãrunã³ãã³ãã¯YAMLèšèªã䜿çšããŠç°¡åã«èšè¿°ãããDocker Composeã䜿çšããŠèµ·åãããŸãã
 
 ãããè¡ãã«ã¯ãã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã
 
  sudo apt update && sudo apt install -y docker-compose
 
 次ã«ããããžã§ã¯ãçšã®ãã£ã¬ã¯ããªãäœæãïŒããã¯ãã³ã³ããçšã«èªåçã«äœæãããããªã¥ãŒã ãäœãåŒã³åºãããæ°ã«ããå Žåã«éèŠã§ãïŒãããã«ç§»åããŸã
 
  mkdir jenkinsProject && cd jenkinsProject
 
 ãããŠãå
éšã§äœæãã¡ã€ã«èªäœãäœæããç·šéã¢ãŒãã«å
¥ããŸã
 
  touch docker-compose.yml && nano docker-compose.yml
 
 ãããŠæ¬¡ã®å
容ãå
¥ããŸã
 
  version: '3' services: jenkins: container_name: jenkins image: osipovaleks/docker-jenkins-android ports: - "8080:8080" restart: unless-stopped volumes: - "jenkins-data:/var/lib/jenkins" - "jenkins-home:/home/jenkins" volumes: jenkins-data: jenkins-home:
 
 ãããããæåã®è¡ã®ã¿ããæ§æãã¡ã€ã«ã®æ©èœã®ããŒãžã§ã³ã瀺ã質åïŒversion: '3'ïŒã ãã§ãªãããã®ã³ã³ãããŒã§äœ¿çšãããŠãããã®ããªã¹ãããvolumesãããã¯ã®ã»ã¯ã·ã§ã³ã衚瀺ããŸãã
 
 次ã®ã³ãã³ãã§ã³ã³ãããå®è¡ããŸãïŒ
 
  docker-compose up -d
 
 -dãã©ã°ã¯ãã³ã³ãããäœæãããããã¯ã°ã©ãŠã³ãã§èµ·åãããããšã瀺ããŸãã ãã®çµæãDockerã¯æ¬¡ã®ããã«è¡šç€ºãããŸãã
 ããã©ã«ãã®ãã©ã€ããŒã§ããªã¥ãŒã ãjenkinsproject_jenkins-dataããäœæ
 ããã©ã«ãã®ãã©ã€ããŒã§ããªã¥ãŒã ãjenkinsproject_jenkins-homeããäœæ
 åŒã£åŒµããžã§ã³ãã³ïŒosipovaleks / docker-jenkins-androidïŒææ°ïŒ...
 ææ°ïŒosipovaleksããã®ååŸ/ docker-jenkins-android
 6cf436f81810ïŒãã«å®äº
 987088a85b96ïŒãã«å®äº
 b4624b3efe06ïŒãã«å®äº
 d42beb8ded59ïŒãã«å®äº
 b3896048bb8cïŒãã«å®äº
 8eeace4c3d64ïŒãã«å®äº
 d9b74624442cïŒãã«å®äº
 36bb3b7da419ïŒãã«å®äº
 31361bd508cbïŒãã«å®äº
 cee49ae4c825ïŒãã«å®äº
 868ddf54d4c1ïŒãã«å®äº
 361bd7573dd0ïŒãã«å®äº
 bb7b15e36ae8ïŒãã«å®äº
 97f19daace79ïŒãã«å®äº
 1f5eb3850f3eïŒãã«å®äº
 651e7bbedad2ïŒãã«å®äº
 a52705a2ded7ïŒãã«å®äº
 ãã€ãžã§ã¹ãïŒsha256ïŒ321453e2f2142e433817cc9559443387e9f680bb091d6369bbcbc1e0201be1c5
 ã¹ããŒã¿ã¹ïŒosipovaleks / docker-jenkins-androidã®æ°ããã€ã¡ãŒãžãããŠã³ããŒãããŸããïŒææ°
 ãžã§ã³ãã³ã®äœæ...
 ãžã§ã³ãã³ã®äœæ...å®äº
 èŠããŠãããŠãäœæãããããªã¥ãŒã ã®ååã¯ãããžã§ã¯ãã®ååã«äŸåãããšèšã£ãã®ã§ããïŒ ã³ãã³ããå®è¡ããŸãïŒ
 
  docker volume ls
 
 ãããŠãåºåãååŸããŸã
 ãã©ã€ããŒããªã¥ãŒã å
 ããŒã«ã«jenkinsproject_jenkins-data
 ããŒã«ã«ãžã§ã³ãã³ã¹ãããžã§ã¯ã_ãžã§ã³ãã³ã¹ããŒã
 ããªã¥ãŒã ã®ååãjenkins-homeã«ãã£ãŠéžæããããšããäºå®ã«ãããããããå®éã«ã¯ãããžã§ã¯ãåã®æ¥é èŸãä»ããŠãããããªã¥ãŒã åã¯jenkinsproject _jenkins-homeããšãjenkinsproject _jenkins-home
䜿çšããã¹ã¿ãŒãã¢ãããªãã·ã§ã³ ããã§ã¯ãèªåã§éžæã§ããŸã.Docker Composeã¯ãè€æ°ã®ã³ã³ãããŒãäžåºŠã«èµ·åããããã®ããŒã«ã§ãããäºãã«é¢é£ä»ããããŠããããã1ã€ã®ã³ã³ãããŒã®ã¿ãèµ·åããå¿
èŠãããå Žåã¯ã 
docker run䜿çšã§ããŸã
ãµãŒããŒãèµ·åããŠèšå®ããããã®ãããã®ãµãã¹ãããã®åŸãJenkinsã§ã³ã³ãããèµ·åããåŸãåæèšå®ã«é²ãããšãã§ããŸã
Jenkinsã®åæã»ããã¢ãã
ãµãŒããŒã®IPã¢ãã¬ã¹ãååŸãããã®ããŒãã«ããŒã8080ã远å ããŠããã©ãŠã¶ãŒã§ãã®ãªã³ã¯ããã©ããŸãã
http://YOUR_IP_ADDRESS:8080/ãã®åã«ãã¹ãŠãæ£ããæ§æãããæ£ããéå§ãããå Žåãæ¬¡ã®å³ã衚瀺ãããŸã

æåã®ã»ããã¢ããã§ã¯ãã€ã³ã¹ããŒã«äžã«ã·ã¹ãã ãçæãããã¹ã¯ãŒããå
¥åããå¿
èŠããããŸãã ãããè¡ãã«ã¯ããã¡ã€ã«
/var/lib/jenkins/secrets/initialAdminPasswordã®å
容ãèŠãã ãã§ãã ãããããã®ãã¡ã€ã«ã¯å®è¡äžã®ã³ã³ãããŒå
ã«ããããããèªã¿åãã«ã¯ã次ã®ã³ãã³ãã䜿çšããŠã³ã³ãããŒã«æ¥ç¶ããå¿
èŠããããŸãã
 docker exec -it jenkins /bin/bash 
-itãªãã·ã§ã³ã¯
jenkins docker run䌌ãŠããã 
jenkinsã¯ã³ã³ããã®ååã§ã
jenkinsã¯ã³ã³ããå
ã§
/bin/bashãå®è¡ããã¢ã¯ã»ã¹æš©ãä»äžããŸãã ãã®åŸãJenkinsã®åæãã¹ã¯ãŒãã確èªã§ããŸãã
 cat /var/lib/jenkins/secrets/initialAdminPassword 
ã³ã³ãœãŒã«ã«ä»¥äžã衚瀺ãããŸã
91092b18d6ca4492a2759b1903241d2a
ããã¯ãã¹ã¯ãŒãã§ãã
ãŠãŒã¶ãŒALexhhaã¯ãã³ã³ããèªäœã«æ¥ç¶ããã«ããã®ãã¹ã¯ãŒããèªã¿åãããã®ããç°¡åãªãªãã·ã§ã³ãææ¡ããŸããã å®éãJenkinsèªäœã®èµ·åæã«ã¯ããã®ãã¹ã¯ãŒãããã°ã«è¡šç€ºãããŸãã å¿
èŠãªã®ã¯ãã³ã³ãããã°ãèªã¿åãããšã ãã§ãã ç§ãã¡ã®å Žåãããã¯æ¬¡ã®ã³ãã³ãã§å®è¡ãããŸãã docker logs jenkins 
ããã§ã jenkins ã³ã³ãã jenkins ååã§ããããã°ã§æ¬¡ã確èªã§ããŸãã******************************************************** ***********
******************************************************** ***********
******************************************************** ***********
Jenkinsã®åæã»ããã¢ãããå¿
èŠã§ãã 管çãŠãŒã¶ãŒãäœæããããã¹ã¯ãŒããçæãããŸããã
ã€ã³ã¹ããŒã«ã«é²ãã«ã¯ã次ã®ãã¹ã¯ãŒãã䜿çšããŠãã ããã
91092b18d6ca4492a2759b1903241d2a
ããã¯ã次ã®å Žæã«ããããŸãïŒ/ var / lib / jenkins / secrets / initialAdminPassword
******************************************************** ***********
******************************************************** ***********
******************************************************** ***********
ãã®ãªãã·ã§ã³ã¯å°ãç°¡åã§é«éã§ããã³ããŒããŠãWebã€ã³ã¿ãŒãã§ãŒã¹ã®[ 
管çè
ãã¹ã¯ãŒã]ãã£ãŒã«ãã«è²Œãä»ãã[ 
ç¶è¡ ]ãã¯ãªãã¯ããŸãã æ¬¡ã®ç»é¢ã§ã 
æšå¥šãã©ã°ã€ã³ã®ã€ã³ã¹ããŒã«ãéžæããããã©ã«ãã®ãã©ã°ã€ã³ã®ã»ãããã€ã³ã¹ããŒã«ããŸãã


ãã©ã°ã€ã³ãã€ã³ã¹ããŒã«ããåŸãèªåçšã®ãŠãŒã¶ãŒãäœæãã[ 
ä¿åããŠçµäº ]ãã¯ãªãã¯ã
ãŸã
ã€ã³ã¹ã¿ã³ã¹æ§æã»ã¯ã·ã§ã³ã«åæããŸããããã§ã¯ãJenkinsãæ©èœããURLãå
¥åããããã«æ±ããããŸãïŒãã®å Žåããã¹ãŠããã®ãŸãŸã«ããŠãããŸãïŒ

ãããŠæ¬¡ã®ç»é¢ã§ã 
Jenkinsã䜿çšããŠå€§äºãª
Startãã¯ãªãã¯ããŸã

ããã§ãJenkinsãã€ã³ã¹ããŒã«ããŠèµ·åããŸããïŒ

ããã§äœæ¥ããããšã¯ãã§ã«å¯èœã§ãããAndroidãã«ããåéããã«ã¯ãããã«ããã€ãã®ãã€ã³ããæ§æããå¿
èŠããããŸãã Jenkinsã®ããŒã«ã©ã€ãºã¯ãã©ãŠã¶ã®éžæèšèªã«é¢é£ããŠããããã¡ãããã·ã¢èªãžã®ç¿»èš³ã¯æåŸãŸã§å®äºããŠããŸããããã·ã¢èªãšè±èªã®å°çã®ãããªæ··ããåãããããŸãã ãŸã£ããåãæ¹æ³ã§æåããè
¹ç«ãããå Žåã¯ãç¹å¥ãª
ãã©ã°ã€ã³ã䜿çšããŠããã©ã«ãã®ã€ã³ã¿ãŒãã§ãŒã¹èšèªãèšå®ã§ããŸãã ãŸãã¯ããã©ãŠã¶ãè±èªã®ã€ã³ã¿ãŒãã§ã€ã¹ã«åãæ¿ããŸãã
Jenkinsã®èšå®ã«ç§»åãã 
ã·ã¹ãã æ§æãéžæããŸã
ã
é 
ç®
ç°å¢å€æ°ã«ãã§ãã¯
ããŒã¯ãä»ããŠããã£ãŒã«ãã«
ANDROID_HOMEãšããååã
å
¥åãããã£ãŒã«ãã«
/ var / lib / android-sdk /ãæå®ããŸãïŒAndroid SDKã®ããŒã ãã£ã¬ã¯ããªãšããŠDockerfileã§ãã®ããŒã¿ãæå®ããŸããïŒã

[ 
ä¿å ]ãã¿ã³ãã¯ãªãã¯ãããã®èšå®ã»ã¯ã·ã§ã³ãçµäºããŠã[ 
ã°ããŒãã«ããŒã«èšå®]ã»ã¯ã·ã§ã³ã«ç§»åã
ãŸã ã
 JDK
JDKããŒãã£ã·ã§ã³ãã»ããã¢ããããŸãïŒããã§ãDockerfileã§JAVA_HOME倿°ãèšå®ãããŠãããããã§ãã®å€
/ usr / lib / jvm / java-8-openjdk-amd64 /ã䜿çšã§ããŸãïŒã

ããã§ãã 
Gradleã»ã¯ã·ã§ã³ã«èšå
¥ããå¿
èŠããããŸãã ãã®CIã·ã¹ãã ã䜿çšããŠãã«ããããããžã§ã¯ãã§äœ¿çšãããGradleã®ããŒãžã§ã³ãéžæããŠã€ã³ã¹ããŒã«ããŸãã è€æ°ã®ããŒãžã§ã³ã䜿çšã§ããŸãã Gradle , gradlew, .

. Jenkins . , â NDK.
- , , Jenkins Bitbucket ( , Github, , , ), ssh , email , . , .
, . ãã¹ãŠã«è¯ãïŒ