ç§ã¯ã¢ã³ããã€ãéçºè ãšããŠåããŠããŸãããå°ãåã«ããããžã§ã¯ãã§èªååãããæ¥åžžçãªã¿ã¹ã¯ã«ééããŸããã ããšãã°ã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å
šäœ
# . FROM ubuntu:18.04 # LABEL author="osipovaleks" LABEL maintainer="osipov.aleks.kr@gmail.com" LABEL version="1.0" LABEL description="Docker image for Jenkins with Android SDK" # , Jenkins ENV TZ=Europe/Kiev RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # i386 ia32-libs RUN dpkg --add-architecture i386 # RUN apt-get update && apt-get install -y git \ wget \ unzip \ sudo \ tzdata \ locales\ openjdk-8-jdk \ libncurses5:i386 \ libstdc++6:i386 \ zlib1g:i386 # , RUN apt-get clean && rm -rf /var/lib/apt/lists /var/cache/apt # RUN locale-gen en_US.UTF-8 ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV LC_ALL en_US.UTF-8 # Android Sdk ARG android_home_dir=/var/lib/android-sdk/ ARG sdk_tools_zip_file=sdk-tools-linux-4333796.zip RUN mkdir $android_home_dir RUN wget https://dl.google.com/android/repository/$sdk_tools_zip_file -P $android_home_dir -nv RUN unzip $android_home_dir$sdk_tools_zip_file -d $android_home_dir RUN rm $android_home_dir$sdk_tools_zip_file && chmod 777 -R $android_home_dir # environment ENV ANDROID_HOME=$android_home_dir ENV PATH="${PATH}:$android_home_dir/tools/bin:$android_home_dir/platform-tools" ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ # Android SDK RUN yes | sdkmanager --licenses # Jenkins ENV JENKINS_HOME=/var/lib/jenkins RUN mkdir $JENKINS_HOME && chmod 777 $JENKINS_HOME # jenkins, , RUN useradd -m jenkins && echo 'jenkins ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers USER jenkins WORKDIR /home/jenkins # war Jenkins RUN wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war -nv CMD java -jar jenkins.war # EXPOSE 8080/tcp
ããã€ãã®èª¬æïŒ
- æåã¯ã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 --list
sdkmanager --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ããŒãã£ã·ã§ã³ãã»ããã¢ããããŸãïŒããã§ãDockerfileã§JAVA_HOMEå€æ°ãèšå®ãããŠãããããã§ãã®å€/ usr / lib / jvm / java-8-openjdk-amd64 /ã䜿çšã§ããŸãïŒã

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

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