Jenkinsã®å ¬å¼Dockerã¤ã¡ã¼ã¸ä½¿ã£ã¦ã¿ã
以åã®ã¨ã³ããªï¼ http://knjname.hateblo.jp/entry/2014/05/03/190842 ï¼ã§èªåã§Jenkinsã®Dockerã¤ã¡ã¼ã¸ã使ããããã¦ã¿ã¾ãããã Jenkinså ¬å¼ã§Dockerã¤ã¡ã¼ã¸ãé å¸ããããã«ãªã£ãã®ã§ãããã使ç¨ããã»ããããã¨æãã¾ãã
- Github https://github.com/cloudbees/jenkins-ci.org-docker
- DockerHub https://registry.hub.docker.com/_/jenkins/
æ®éã«ä½¿ãã ããªããä¸è¨ã®ããã«ããã°ããã ãã§ããã
docker run -p 8080:8080 jenkins
ããã ã¨ä½ãç´°ãããã¨ãè¨å®ã§ãã¦ããªãã®ã§ãããã¤ãè£è¶³ã
- Dockerã¤ã¡ã¼ã¸å ã®Jenkinsã®ãã¼ã¸ã§ã³ã«ã¤ãã¦
- æ°¸ç¶åãã£ã¬ã¯ããª(JENKINS_HOME)ã«ã¤ãã¦
- ç¾ç¶ã®å ¬å¼Dockerã¤ã¡ã¼ã¸ã¸ã®å人çãªä¸æºç¹
Dockerã¤ã¡ã¼ã¸å ã®Jenkinsã®ãã¼ã¸ã§ã³ã«ã¤ãã¦
åºæ¬çã«Jenkinsã®ãµã¤ãã®ãããï¼ http://jenkins-ci.org/ ï¼ã«è¼ã£ã¦ãããããªãã¸ããã®ææ°çã¯ä¸å®å®ã§ãã
ãã ãDockerã¤ã¡ã¼ã¸ã®latest
ã¯LTSçï¼å®å®çï¼ã®ææ°ãããã©ã«ãã§æå®ããã¦ããããã§ãã
ã¡ããã¨éç¨ããã®ã§ããã°æç¤ºçãªãã¼ã¸ã§ã³æå®ããªã¹ã¹ã¡ãã¾ãããç¹ã«æ°ã«ããªãã¦ãåé¡ãªãããã§ãã
# ä»ï¼2015-02-10ï¼ã®ã¨ããä¸è¨3ã¤ã¯åã docker run -p 8080:8080 jenkins docker run -p 8080:8080 jenkins:latest docker run -p 8080:8080 jenkins:1.580.2 # ï¼å®ã¯LTSçã¯1.580.3ããªãªã¼ã¹ããã¦ããããããDockerHubã«ã¯ãªã模æ§â¦ï¼
ä»ã®ã¨ããã使ç¨ãããJavaã¯OpenJDK7ã®ããã§ããæ°ã«å ¥ããªããã°èªåã§ã¤ã¡ã¼ã¸ãä½ã£ã¦å¥ã®JDKã使ãããããã«ããã»ããããã§ãããã
æ°¸ç¶åãã£ã¬ã¯ããª(JENKINS_HOME)ã«ã¤ãã¦
æ°¸ç¶åãå¿
è¦ãªãã¼ã¿ã¯ã³ã³ããå
ã® /var/jenkins_home
ã«ä½æãããã®ã§ããã¹ããã£ã¬ã¯ããªããã®ä½ç½®ã«ãã¦ã³ããã¾ãããã
docker run -p 8080:8080 -v /hostdir/jenkins_home:/var/jenkins_home jenkins
ãã ããroot権éã§ãã®ã¾ãã¾ä½æãããã£ã¬ã¯ããªï¼æ®éã«docker run
ãåæã«ä½ã£ããã®ãããã«è©²å½ï¼ã¯ã³ã³ããå´ã®Jenkinsã¦ã¼ã¶(jenkins(UID=1000)
)ã§æ¸ããã¨ãã§ãã¾ããã
以ä¸ã®ããããã§å¯¾å¦ãã¾ãããã
- ãªã¹ã¹ã¡ï¼
chown 1000 /hostdir/jenkins_home
ãããï¼â»UIDã¯Dockerfileå ã§æç¤ºçã«æå®ããã¦ããã®ã§å¤ããå¯è½æ§ã¯ä½ãã§ãããï¼ chmod 777 /hostdir/jenkins_home
ããã- ç¬èªã®Jenkinsã¤ã¡ã¼ã¸ã使ãã¦Jenkinsã®å®è¡ã¦ã¼ã¶ãrootã«ããã
- ä¸åº¦ãã¦ã³ãããªãã§èµ·åãããã³ã³ããå
ãã
/var/jenkins_home
ãã³ãã¼ãããã®ãããããã¦ãã¦ã³ãããã
Jenkinsã®JVMã®ãªãã·ã§ã³ã«ã¤ãã¦
Javaã®ã¡ã¢ãªetcã®ããã®JVMãªãã·ã§ã³ã¯JAVA_OPTS
ã¨ããååã§ç°å¢å¤æ°ã«è¨å®ããã°ããã§ãã
docker run -p 8080:8080 -e JAVA_OPTS="-Xmx1g" jenkins
Jenkinsã®ãªãã·ã§ã³ã«ã¤ãã¦
ãã¨ãã°ã http://hostname/jenkins ã®ããã«URLãã¬ãã£ãã¯ã¹ãè¨å®ããã«ã¯ãdocker run jenkins
ã®å¾ãã«å¼æ°è¿½å ããã°ããã§ãããããã¯JENKINS_OPTS
ã«å®ç¾©ããã°ããã§ãã
docker run -p 8080:8080 jenkins --prefix=/jenkins docker run -p 8080:8080 -e JENKINS_OPTS="--prefix=/jenkins" jenkins
Jenkinsç¨ã®å¼æ°ä¸è¦§ã¯ https://wiki.jenkins-ci.org/display/JENKINS/Starting+and+Accessing+Jenkins ã§ä¸é¨ãªã¹ãåããã¦ãã¾ãã
ãã°ãã¡ã¤ã«ã®åºåå ãªã©ããªãã·ã§ã³ã§ã®æå®ã§ããã¯ããªã®ã§ãããè¨è¼ããªãã§ãããhttps://github.com/jenkinsci/jenkins/blob/master/rpm/SOURCES/jenkins.init.in ã¨ããåèã«è¿½å ãã¦ã¿ãã¨ããããããã¾ããã
docker run -p 8080:8080 jenkins --logfile=/var/jenkins_home/jenkins.log
JenkinsåæåGroovyã¹ã¯ãªãã
ã»ããè¨å®ãã¡ã¤ã«ã«æ°¸ç¶åããã¦ãããã©ã¡ã¼ã¿ã§ã¯åææå®ã§ããªãæ å ±ãã åæãã©ã°ã¤ã³ãåæã«ã¤ã³ã¹ãã¼ã«ããããªã©ãè¡ãããGroovyã¹ã¯ãªããããã¼ãããããã¨ãã§ãã¾ãã
ï¼Groovyã§ã®èªååã®è©³ç´°ã¯ https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+Script+Console ãè¦ã¦ä¸ãããï¼
ãããã«ãä¸è¨ã®ã¹ã¯ãªãã(my-jenkins-init.groovy
)ãå
¥ã£ããã£ã¬ã¯ããªã /var/jenkins_home/init.groovy.d/
ã«ãã¦ã³ããã¦ã¿ã¾ãããã
// my-jenkins-init.groovy import hudson.model.*; import jenkins.model.*; def inst = Jenkins.instance def uCenter = inst.updateCenter // Set the proxy for retrieving plugins. (Comment out and modify it if you need.) // inst.proxy = new hudson.ProxyConfiguration("192.168.10.10", 3128, "proxyUser", "proxyPassword", "localhost, 192.*") // Ensure the Update Center is up-to-date. uCenter.updateAllSites() def checkIfPluginInstalled = { pluginid -> for(p in inst.pluginManager.plugins) { if(p.shortName == pluginid){ return true } } return false } // Installs the following plugins if not installed. ["checkstyle", "copyartifact", "build-timeout", "emotional-jenkins-plugin"].findAll({! checkIfPluginInstalled(it)}).each { uCenter.getPlugin(it).deploy() } // Set the number of executors (in master-node) to 0. inst.setNumExecutors(0) inst.reload()
èªåã§ããã¤ããã©ã°ã¤ã³ãã¤ã³ã¹ãã¼ã«ããã¦ããããã¹ã¿ã¼ãã¼ãã®ã¨ã°ã¼ãã¥ã¼ã¿æ°ã0ã®è¨å®ãè¡ããã¦ããã¯ãã§ãã
åæã®ã¤ã¡ã¼ã¸ã§ã¯ãã¹ã¬ã¼ãç¨ã®JNLPãã¼ãã®èªåè¨å®ã¹ã¯ãªãããå ¥ã£ã¦ããããã§ãã
// tcp-slave-angent-port.groovy import jenkins.model.*; Thread.start { sleep 10000 println "--> setting agent port for jnlp" Jenkins.instance.setSlaveAgentPort(50000) }
Feb 09, 2015 5:08:41 PM jenkins.util.groovy.GroovyHookScript execute INFO: Executing /var/jenkins_home/init.groovy.d/tcp-slave-angent-port.groovy Feb 09, 2015 5:08:43 PM org.jenkinsci.main.modules.sshd.SSHD start
ï¼2015/09/09ï¼ ä»ã®Jenkinsã®ã¤ã¡ã¼ã¸ã ã¨ã³ã³ããèµ·åæã«æå®ãããç°å¢å¤æ° JENKINS_SLAVE_AGENT_PORT
ã®çªå·ã«JNLPã®ãã¼ãã夿´ããããã«ãªã£ã¦ãã¾ããè¯ãæ¹åã ã¨æãã¾ãã
ã¨ãããã¨ã§ã
ã ãããä¸è¨ã§ãããããã¨ã¯ã§ãã¾ãã
yum
ãapt-get
ã§å
¥ããããã±ã¼ã¸çã®Jenkinsãçµå±ã¯ã
ä¸è¨ã§èª¬æãã¦ãããããªãã©ã¡ã¼ã¿ã®è¨å®ãè¨å®ãã¡ã¤ã«ã«ãã©ãã¦ããã ããªã®ã§ã
ããã±ã¼ã¸çã«æ©è½ã§é
ããåãã¨ãã£ããã¨ã¯ä¸åå¿é
ä¸è¦ã§ãã
Jenkinsã®ãã¹ã¿ã¼ã¯ãã¹ã¿ã¼ï¼
以åã®ã¨ã³ããªï¼ http://knjname.hateblo.jp/entry/2014/05/03/190842 ï¼ã§ãæ¸ããã¨ãããJenkinsã®ãã¹ã¿ã¼ãã¼ãã«ãã«ããç´æ¥ãããå¿ è¦ã¯ä¸åããã¾ããã
大éã«ããããªç¨®é¡ã®ã¸ã§ããããªãããã«ãªãã¨ãã¹ã¬ã¼ããå¢ãã¦ããã ãããªä¸ã§ãã¹ã¿ã¼ããã«ããã¦ããã®ãä¸èªç¶ãã¤ããã¹ã¿ã¼ä¾åã®ã¸ã§ãããã£ãæ¥ã«ã¯ã¹ã±ã¼ã«ãé¢åã«ãªã£ã¦ãã¾ãã
ç¹ã«è²§å¼±ãªç°å¢ãããªãéãç§ã¯ãã¹ã¿ã¼ãã¼ãã«ãã«ããããã¦ãã¾ããããã¹ã¿ã¼ã®ã¸ã§ããã¥ã¼ã®å¤ªãã¯0ã«ãã¦ã¾ãã
ä»åã®ã¨ã³ããªã§ãµãã¦ããã®ã¯ãJenkinsãã¹ã¿ã¼ãã¼ãã®ã»ããã¢ããã§ãããã¹ã¬ã¼ããã¼ãã®è©±ã§ã¯ããã¾ããã Jenkinsã®ãã¹ã¿ã¼ãã¼ãã¯ãWebUIãæä¾ãã¦ãè¨å®ãä¿åãã¦ãã¹ã¬ã¼ããã¼ãã¨ã¤ãªãã£ã¦ã ã¹ã¬ã¼ããåãã¦ããã¸ã§ãã®å±¥æ´ãªã©ããã£ã¬ã¯ããªã«è²¯ãã¦ããã°ããã§ãããã§ããï¼ã¨ããã®ãç§ã®èããï¼
Jenkinsãæ´»èºãã¦ããéçºç¾å ´ã§ãã¹ã¿ã¼ãã¼ããæ»ã¬ã¨éçºè ã¸ã®å½±é¿ã大ã§ããã ã¹ã¬ã¼ãã«é¢ãã¦ããã°ãã¹ãOSãã¨ãã£æ»ãã§ã大ãã¦å½±é¿ã¯ãªãã§ããããã代æ¿ã®ã¹ã¬ã¼ããããã°ã¹ã¬ã¼ãã®1å°2å°ãã¦ã³ãããã å¹³æ°ãªã¨ãããå¤ãã¯ãã§ãã
å®éãã«ããè¡ããããã¹ã¬ã¼ãã«ã¤ãã¦ã¯ãJenkinsã®ãã«ãç¨ã®Dockerã³ã³ããã使ãã¦SSHã§ãã¹ã¿ããç¹ãã¨ãã®å¹³æãªæ§æã§ããã¨æãã¾ãã ï¼ãã¡ããDockerã³ã³ããä½¿ãæ¨ã¦ã¨ãé å¼µãã®ãã¢ãªï¼
ã¡ãªã¿ã«ã¹ã¬ã¼ãå ã«ãã«ãç¨ã®JDKãAntãå«ãã¦ãããã§ãããå®éã«ã¯å«ãããJenkinsã®è¨å®ç»é¢ã§ JDKãAntã®tar.gzãzipããã«ãå®è¡æã«ãããããã¤ã³ã¹ãã¼ã« or ã©ã£ãã®URLããè§£åã§ããããã«æ§æããã»ããæ¥½ã§ãã ï¼ã¨ã¯ãããã¹ã¬ã¼ãããã»ã¹ã¯JVMã§åãã®ã§ãã¹ã¬ã¼ãèªèº«ãåãããã®JREã¯å¿ è¦ã§ããï¼
ç¾ç¶ã®å ¬å¼Dockerã¤ã¡ã¼ã¸ã¸ã®å人çãªä¸æºç¹
- OpenJDK7ã使ã£ã¦ãããOpenJDK8ããé§ç®ãªã®ããªãå人çã«ã¯ãã¼ãã¯ã¨ããããããããããã¨åºãããã¼ããã³ãé åãæèããããªãã â ææ°ã®ã¤ã¡ã¼ã¸ã¯OpenJDK8使ã£ã¦ããããã§ã ï¼2015/08/05ï¼
/var/jenkins_home
ã«root権éã§ä½æããå¤é¨ãã£ã¬ã¯ããªããã¦ã³ããããã¨èµ·åã«å¤±æããä»¶ãâ¦ã¾ãããã¯Dockerèªä½ã®åé¡ã«è¿ãã§ããã âdocker run
æã«-u root
ãªãã·ã§ã³ä»ããã°ãã¾ããããã¨ãå¤ãã§ãããï¼2015/09/09ï¼- Jenkinsã®ãã°ãã¡ã¤ã«ã®åºåå ´æããã°ã¬ãã«ã®æå®ãªã©ç´°ããèµ·åãªãã·ã§ã³ãåããã¥ããã