Sahi ÊÇÒ»¿îÓÅÐãµÄ¿ªÔ´ Web UI ×Ô¶¯»¯²âÊÔ¿ò¼Ü¡£Jenkins
ÊÇÒµ½çÖÚËùÖÜÖªµÄ³ÖÐø¼¯³É¹¤¾ß¡£Docker ÊÇÒ»¸ö¿ªÔ´µÄÓ¦ÓÃÈÝÆ÷ÒýÇæ£¬Ò»¿ÅȽȽÉýÆðµÄ¼¼ÊõÐÂÐÇ¡£±¾ÎÄͨ¹ýÒ»¸öʵÀý£¬½éÉÜÈçºÎ½«ÈýÕß¼¯³É¹¹½¨
Web UI ×Ô¶¯»¯²âÊÔ»·¾³¡£
Docker ½éÉÜ
Docker ºÅ³ÆÊÇÏÂÒ»´úµÄÐéÄâ»ú£¬ËüÔÚÆô¶¯ºÍ´´½¨ËÙ¶È¡¢ÐÔÄÜ¡¢ÒÆÖ²ÐԵȷ½Ãæ¾ùÓÅÓÚ´«Í³ÐéÄâ»ú¡£Docker
ÊÇ PaaS ÌṩÉÌ dotCloud ¿ªÔ´µÄÒ»¸ö»ùÓÚ LXC µÄ¸ß¼¶ÈÝÆ÷ÒýÇæ¡£ËüÄܹ»Èÿª·¢Õß´ò°üËûÃǵÄÓ¦ÓÃÒÔ¼°ÒÀÀµ°üµ½Ò»¸ö¿ÉÒÆÖ²µÄÈÝÆ÷ÖУ¬È»ºó·¢²¼µ½ÈκÎÁ÷ÐеÄ
Linux »úÆ÷ÉÏ£¬Ò²¿ÉÒÔʵÏÖÐéÄ⻯¡£Ä¿Ç°£¬Í¨¹ý Boot2Docker ÒÑÄÜʹ Docker ÔËÐÐÔÚ
Windows ºÍ OS X ÖС£Docker ÈÝÆ÷ÍêȫʹÓÃɳÏä»úÖÆ£¬Ï໥֮¼äûÓÐÈκνӿڡ£Docker
¼¸ºõûÓÐÐÔÄÜ¿ªÏú£¬¿ÉÒÔºÜÈÝÒ×µØÔÚ»úÆ÷ºÍÊý¾ÝÖÐÐÄÖÐÔËÐС£×îÖØÒªµÄÊÇ, ËûÃDz»ÒÀÀµÓÚÈκÎÓïÑÔ¡¢¿ò¼Ü»òϵͳ¡£
Docker ÔÚÆäÍøÕ¾ÉÏÃ÷È·µØÌáµ½µÄ Docker µÄµäÐÍÓ¦Óó¡¾°ÈçÏ£º
¶ÔÓ¦ÓýøÐÐ×Ô¶¯´ò°üºÍ²¿Êð
´´½¨ÇáÁ¿¡¢Ë½ÓÐµÄ PAAS »·¾³
×Ô¶¯»¯²âÊԺͳÖÐøÕûºÏÓ벿Êð
²¿ÊðºÍÀ©Õ¹ Web Ó¦Óá¢Êý¾Ý¿âºÍºó¶Ë·þÎñ
ÔÚ×Ô¶¯»¯²âÊÔÁìÓò£¬Docker ´óÓÐÈ¡´ú´«Í³ÐéÄâ»ú¼¼ÊõµÄÇ÷ÊÆ£¬ÔÒòÈçÏ£º
×Ô¶¯»¯²âÊÔÒÀÀµµÄÊDzâÊÔËùÐèÒªµÄÓ¦Ó㬶ø²¢·ÇÕû¸ö²Ù×÷ϵͳ¡£Òò´Ë£¬´«Í³µÄÐéÄâ»ú¼¼Êõ´æÔÚ×ÊÔ´ÀË·Ñ¡£
Docker ¹¹½¨ÓÚ LXC Ö®ÉÏ¡£½èÖú LXC ÇáÁ¿¼¶µÄÌØÐÔ£¬Ïà±ÈÓÚĿǰµÄÐéÄâ»ú¼¼Êõ£¬Docker Æô¶¯¸ü¿ì¡¢×ÊÔ´Õ¼ÓøüС¡£
Docker ±ÈÐéÄâ»úÇáÁ¿¡¢Áé»î£¬±ãÓÚ¹ÜÀí¡£
Docker ±ê×¼»¯µÄ¹¹½¨·½·¨ (Dockerfile) ºÍÁ¼ºÃµÄ REST API£¬Ê¹µÃ×Ô¶¯²âÊԺͳÖÐø¼¯³É/²¿ÊðÄܹ»ºÜºÃµÄ¼¯³É½øÀ´¡£
Sahi ½éÉÜ
Sahi ÊÇÒ»¸ö¿ªÔ´µÄ Web UI ×Ô¶¯»¯²âÊÔ¿ò¼Ü¡£¾¡¹ÜËüµÄÖªÃû¶È²»¼° Selenium£¬Óû§ÈºÒ²²»¼°
Selenium ÅӴ󣬵«ËüÈ·ÓÐËü¶ÀÌØµÄ÷ÈÁ¦£¬ÀýÈ磺
»ùÓÚÉÏÏÂÎĵÄÒ³ÃæÔªËØÊ¶±ð»úÖÆ¡£
ÒþÊ½Ò³Ãæ¼ÓÔØÏìÓ¦µÈ´ý»úÖÆ¡£
Á¼ºÃµÄä¯ÀÀÆ÷Ö§³Ö¡£
ÓÅÐãµÄ¿çä¯ÀÀÆ÷Â¼ÖÆ»Ø·Åµ÷ÊÔ¹¤¾ß Sahi Controller¡£
ÕâÐ©ÌØÐÔ¶¼´ó´óµØ¼Ó¿ìÁË×Ô¶¯»¯²âÊԽű¾µÄ¿ª·¢ËÙ¶È£¬²¢½µµÍÁËά»¤³É±¾¡£
Sahi ͨ¹ýÒ»¸öÓà Java ±àдµÄ´úÀí·þÎñÆ÷£¬½«Óû§µÄ½Å±¾×ª»»Îª JavaScript ºó×¢ÈëÍù·µµÄ
HTTP ÇëÇó¼°ÏìÓ¦ÖУ¬´Ó¶øÇý¶¯ä¯ÀÀÆ÷ʼþ¡£±à³ÌÓïÑÔ·½Ã棬³ý Sahi ½Å±¾£¨Æä±¾ÖÊÊÇÒ»¸ö JavaScript
¿â£©ÒÔÍ⣬»¹Ö§³Ö Java ºÍ Ruby¡£Sahi ÓпªÔ´ºÍÊÕ·ÑÁ½¸ö°æ±¾¡£ËäÈ»ÊշѰ汾ÌṩÁ˺ܶ࿪Դ°æ±¾²»¾ß±¸µÄ¸ß¼¶ÌØÐÔ£¬²»¹ý¿ªÔ´°æ±¾ÒѾÄܹ»Âú×ã´ó²¿·ÖµÄ¹¦ÄÜÒªÇó¡£µã´Ë²é¿´¿ªÔ´°æ±¾ÓëÊշѰ汾µÄ²îÒì¡£µã´Ë²é¿´Sahi
ÓëÆäËû Web ×Ô¶¯»¯²âÊÔ¿ò¼ÜµÄ¶Ô±È¡£
Jenkins ½éÉÜ
Jenkins ÊÇÒ»ÖÖ¿ªÔ´µÄ»ùÓÚ Java ¿ª·¢µÄ³ÖÐø¼¯³É¹¤¾ß£¬Ç°Éí³Æ×÷ Hudson¡£Jenkins
ÌṩÁËÓÃÓÚ¼à¿Ø³ÖÐøÖØ¸´¹¤×÷µÄÈí¼þƽ̨¡£ËüÖ§³Ö·á¸»µÄ²å¼þ£¬Óû§¿ÉÒÔ°´ÕÕÐèÇó½øÐÐÑ¡Ôñ°²×°ºÍÅäÖã¬ÒÔʵÏÖÉú³ÉÖ´ÐÐ״̬±í¸ñ£¬×Ô¶¯²¿Ê𡢸üÐÂ×Ô¶¯»¯²âÊÔ°üµÈ¸ß¼¶¹¦ÄÜ¡£±¾ÎĽ«Òª½éÉÜ
Jenkins µÄ Docker ²å¼þ£¬ËüÄܹ»¶¯Ì¬µØ´´½¨ Docker ÈÝÆ÷×÷Ϊ Jenkins Slave
½Úµã£¬²¢ÔÚÖ´ÐÐÈÎÎñºó£¬×Ô¶¯¹Ø±ÕÈÝÆ÷¡£ÁíÍ⣬Ëü»¹Ö§³ÖһЩ¶îÍ⹦ÄÜ£¬±ÈÈçµ±¹¹½¨ÈÎÎñ³É¹¦Íê³Éºó×Ô¶¯½«ÈÝÆ÷±£´æÎª¾µÏñ¡¢×Ô¶¯½«¾µÏñÉÏ´«µ½×ÊÔ´¿âµÈ¡£
ʵÀýÑÝʾ
¸ÃʵÀýÑÝʾÈçºÎÖÆ×÷Ò»¸öÔËÐÐ Sahi µÄ¾µÏñÒÔ¼°ÈçºÎÔÚ Jenkins ÉÏÅäÖà Docker ²å¼þÒÔÔËÐÐ
Sahi ²âÊԽű¾¡£
×¼±¸ Docker ¾µÏñ
±¾ÊµÀýÐèҪ׼±¸Èý¸ö¾µÏñ£ºÒ»¸öÔËÐÐ Jenkins£¬Ò»¸öÔËÐÐ Subversion£¬ÁíÍâÒ»¸öÔËÐÐ Sahi¡£
Ê×ÏÈ£¬ÖÆ×÷ÔËÐÐ Sahi µÄ¾µÏñ¡£Docker Hub ÊÇÒ»¸öÓÃÓÚ·ÖÏí Docker ¾µÏñµÄ×ÊÔ´¿â¡£Ä¿Ç°£¬¸Ã×ÊÔ´¿â»¹Ã»ÓÐÔËÐÐ
Sahi µÄ¾µÏñ£¬ËùÒÔ±ØÐë×Ô¼º´´½¨ Dockerfile À´¹¹½¨¾µÏñ¡£ÏÂͼÊÇÓÃÀ´ÖÆ×÷ Sahi ¾µÏñµÄĿ¼¡£
ͼ 1. ÖÆ×÷ Sahi ¾µÏñµÄĿ¼
ÏÂͼÊÇ Dockerfile µÄÎļþÄÚÈÝ¡£
ͼ 2. DockerfileÎļþÄÚÈÝ
Õû¸ö¹ý³Ì´óÌå·ÖΪ°Ë¸ö²½Ö裺
1.Ö¸¶¨»ù´¡¾µÏñ
ÎÒÃÇʹÓõÄÊÇ evarga/jenkins-slave¡£¸Ã¾µÏñ»ùÓÚ Ubuntu£¬°²×°ÁË SSH ·þÎñ£¬²¢´´½¨ÁËÓû§
Jenkins¡£
2.Ìæ»»ÏµÍ³Ä¬ÈϸüÐÂÔ´¡£°Ñϵͳ¸üÐÂÔ´Ìæ»»Îª 163 µÄ£¬ºóÃæµÄÈí¼þ°²×°ËÙ¶È»á±È½Ï¿ìһЩ¡£
3.°²×°±ØÒªµÄÈí¼þ£¨²»°üÀ¨ Oracle Java ºÍ Sahi£©£ºFirefox,
Unzip ÒÔ¼° Xvfb¡£É¾³ý Open JDK ÊÇΪÁ˺óÃæ°²×° Oracle Java ×ö×¼±¸¡£Firefox
²»Óöà˵£¬ÒòΪ¸Ã¾µÏñÓÃÓÚ Web UI ×Ô¶¯»¯²âÊÔ£¬ËùÒÔ°²×°ÁË×îа汾µÄ Firefox¡£°²×° Unzip
ÊÇÒòΪºóÃæ°²×° Sahi ÐèÒªÓõ½Ëü¡£Xvfb£¨X virtual framebuffer£©ÊÇÒ»¸ö X11
ÏÔʾ·þÎñÆ÷µÄʵÏÖ¡£Ëü²»Êǽ«Í¼ÐÎÔÚÆÁÄ»ÉÏÏÔʾ³öÀ´£¬¶øÊÇÔÚÄÚ´æÖÐÔËÐÐËùÓеÄͼÐβÙ×÷¡£¶Ô¿Í»§¶ËÀ´Ëµ£¬³ýÁËÎÞ·¨¿´µ½ÕæÕýµÄͼÐÎÏÔʾ£¬Ã»ÓÐÆäËû·Ö±ð¡£Ò»°ã³ÆÕâÖÖÔËÐз½Ê½Îª
headless¡£
4.°²×° Oracle Java 8¡£ÀíÂÛÉÏ Sahi Ó¦µ±Ò²Ö§³Ö Open
JDK£¬ËùÒÔ°²×° Oracle Java ²»ÊDZØÐëµÄ¡£
5.°²×° Sahi¡£ÉÏ´«ÁË zip Îļþºó£¬Óà Unzip ½âѹ£¬Sahi
ÊÇ»ùÓÚ Java µÄ£¬ËùÒÔ½âѹºó¼´ÒѰ²×°ºÃ Sahi¡£Ö®ºó£¬Ìæ»»Á˼¸¸öÎļþ£¬ËüÃǵÄ×÷ÓÃÈçÏ£º
Userdata.properties
userdata.properties ÖÐÓиöÊôÐԽРproxy_alert.disabled£¬Ä¬ÈÏֵΪ
false¡£Óû§µÚÒ»´ÎÆô¶¯ Sahi Dashboard µÄʱºò£¬»áµ¯³öÒ»¸öÈçÏÂͼËùʾµÄ¶Ô»°¿ò¡£Óû§¹´Ñ¡ÁË¡°Do
no show this message again¡±²¢µã»÷ Continue °´Å¥Ö®ºó£¬Sahi Ð޸ĸÃÊôÐÔֵΪ
true¡£Ö®ºó¾Í²»»áÔÚÌø³öÕâ¸ö¶Ô»°¿òÁË¡£ÓÉÓÚÓà headless µÄ·½Ê½ÔËÐÐ Sahi ÎÞ·¨µã»÷¸Ã¶Ô»°¿ò£¬ËùÒÔ±ØÐëÊÂÏÈÓÃÒ»¸öÒѽ«¸ÃÊôÐÔÉèÖÃΪ
true µÄÎļþÌæ»» Sahi ĬÈ쵀 userdata.properties¡£
ͼ 3. Sahi ´úÀíÎÊÌâ¶Ô»°¿ò
sahi_example_com
ÕâÊÇÒ»¸öÖ¤ÊéÎļþ¡£Óû§µÚÒ»´ÎÔÚ Sahi Dashboard Öдò¿ª Firefox ʱµÄÒ³ÃæÈçÏÂͼËùʾ¡£Óû§ÐèÒªµã»÷
SSL Manager Á´½ÓÊÖ¶¯½ÓÊÜ SSL Ö¤Êé¡£´Ëʱ£¬Îļþ sahi_example_com ±»Éú³Éµ½
userdata/certs Ŀ¼Ï¡£Ö®ºó£¬¾Í²»ÐèÒªÔÙ½øÐиòÙ×÷ÁË¡£ËùÒÔ£¬¸´ÖÆµÄ sahi_example_com
Ä¿µÄÒ²ÊÇΪÁË×Ô¶¯Íê³ÉÕâ²½ÐèÒªÔÚͼÐνçÃæÏ²ÅÄÜÍê³ÉµÄ²Ù×÷¡£
ͼ 4. Sahi Æô¶¯Ò³
ͼ 5. SSLManager µÄ·ÇÐÅÈÎÁ¬½ÓÒ³Ãæ
browser_types.xml
Ìæ»»¸ÃÎļþÊÇΪÁËʹ Sahi ÒÔ headless µÄ·½Ê½¹¤×÷¡£ÔÚ¸ÃÎļþÖУ¬ÊÂÏÈÌí¼ÓÁËÒ»¸öÃû×ÖΪ firefox-xvfb
µÄä¯ÀÀÆ÷ÅäÖÃÐÅÏ¢¡£Ö®ºó£¬²âÊԽű¾¾Í¿ÉÒÔÖ¸Ïò¸Ãä¯ÀÀÆ÷ÔËÐС£¾ßÌåÅäÖà Sahi ºÍ Xvfb µÄ²½Öè²Î¿¼¡£
6.Ìí¼Ó init.sh Îļþ
init.sh ÎļþÓÃÓÚÆô¶¯ Xvfb ºÍ Sahi¡£ÆäÄÚÈÝÈçÏ¡£
ͼ 6. init.sh ÎļþÄÚÈÝ
¡°sleep 5¡±ÊÇÒòΪ Sahi Æô¶¯ÐèÒªÒ»µãʱ¼ä£¬ÈôÁ¢¼´ÔËÐвâÊԽű¾»áµ¼ÖÂʧ°Ü¡£
7.ÐÞ¸ÄȨÏÞ
×îÖÕÔËÐеÄÈÝÆ÷ÊÇ×÷Ϊ Jenkins Slave ½ÚµãÓà Jenkins Óû§ÔËÐУ¬Òò´Ë½«Õû¸ö/usr/local
Ŀ¼¼°×ÓĿ¼µÄËùÓÐÈËÐÞ¸ÄΪ Jenkins£¬²¢¸ø Shell ÎļþÌí¼ÓÖ´ÐÐȨÏÞ¡£Jenkins Óû§ÊÇÔÚ»ù´¡¾µÏñ
evarga/jenkins-slave Öд´½¨µÄ£¬ËùÒÔÔÚÕâ¸ö Dockerfile ÀïûÓд´½¨ Jenkins
Óû§µÄÓï¾ä¡£
8.Ö¸¶¨Ä¬ÈÏÖ´ÐеÄÃüÁî
CMD ["/usr/sbin/sshd","-D"] ¨C ¸ÃÓï¾äÁî¾µÏñĬÈÏÆô¶¯
SSH ·þÎñ¡£ÊÂʵÉÏ£¬ÕâÌõÓï¾äÒ²¿ÉÒÔ²»Ìí¼Ó£¬ÒòΪ evarga/jenkins-slave µÄ Dockerfile
ÖÐÒѰüº¬¸ÃÓï¾ä¡£
Ò»ÇоÍÐ÷Ö®ºó£¬ÔÚ¸ÃĿ¼ÖÐÖ´ÐС°docker build -t shenrui/sahi ¨Crm=true¡±¡£ÃüÁî³É¹¦Ö´Ðкó£¬Í¨¹ý¡°docker
images¡±Ó¦µ±¿ÉÒԲ鿴µ½ÃûΪ¡°shenrui/sahi¡±µÄ¾µÏñ¡£¸Ã¾µÏñÒѾÉÏ´«µ½ Docker Hub£¬ÓÐÐèÒªµÄ¶ÁÕß¿ÉÒÔ×ÔÐÐÀÈ¡¡£
Sahi ¾µÏñ¹¹½¨ºÃÖ®ºó£¬½ÓÏÂÀ´×¼±¸ Jenkins ÈÝÆ÷¡£Docker Hub ÉÏÒÑÓйٷ½µÄ Jenkins
¾µÏñ£¬Ö±½ÓÓÃÃüÁî¡°docker pull jenkins¡±ÀÈ¡¡£ÔÚ Docker Ö÷»úÉÏ£¬´´½¨Ò»¸öĿ¼£¨ÀýÈ磬/data/jenkins_home£©£¬²¢ÐÞ¸ÄȨÏÞ£¨chmod
777£©ÒÔ±ã Jenkins ÈÝÆ÷ÄܶÁд¸ÃĿ¼£¬È»ºóÓÃÃüÁî¡°docker run -d -t --name
myjenkins -p 8080:8080 -v /data/jenkins_home:/var/jenkins_home
jenkins¡±Æô¶¯¡£´Ëʱ£¬´ò¿ª http://<Docker Host IP>:8080
Ó¦µ±¿ÉÒÔ¿´µ½ Jenkins µÄ¹ÜÀíÒ³Ãæ¡£ ͬÑùµØ£¬Ö±½ÓÀÈ¡ Docker Hub µÄ Subversion
µÄ¾µÏñ£¨docker pull bsboiko/subversion£©¡£²»¹ý£¬»¹ÐèÒª×ö½øÒ»²½µÄÅäÖᣲ½ÖèÈçÏ£º
ÓÃÃüÁî¡°docker run -i -t bsboiko/subversion /bin/bash¡±ÒÔ½»»¥µÄ·½Ê½Æô¶¯
Subversion ÈÝÆ÷¡£
ÔÚÈÝÆ÷Öд´½¨Ä¿Â¼ /var/svn/repos£¨mkdir -p /var/svn/repos£©£¬²¢»ùÓÚ¸ÃĿ¼´´½¨
Subversion ×ÊÔ´¿â£¨svnadmin create /var/svn/repos£©¡£
ÔÚ×ÊÔ´¿âĿ¼Ï嵀 svnserve.conf ÎļþÖÐɾ³ý¡°password-db = passwd¡±Ç°ÃæµÄ×¢ÊÍ·û
#£¬²¢ÔÚ passwd ÎļþÖÐÌí¼ÓÒ»ÐС°shenrui = password¡±¡£
ÓÃÃüÁî¡°docker commit <container id> mysvn¡±°ÑÉÏÃæËù×öµÄÐ޸ı£´æÏÂÀ´´´½¨Ò»¸öоµÏñ
mysvn¡£
×îºó£¬ÓÃÃüÁî¡°docker run -t -d -p 3690:3690 --name mysvn mysvn
svnserve -d --foreground -r /var/svn/repos¡±Æô¶¯ mysvn
ÈÝÆ÷¡£Æô¶¯Ê±£¬Ìí¼ÓÈÝÆ÷µ½Ö÷»úµÄ¶Ë¿ÚÓ³Éä¡°-p 3690:3690¡±ÒÔ±ãÖ®ºóÖ±½Óͨ¹ýÖ÷»ú IP Ìá½»²âÊԽű¾¡£
ÖÁ´Ë£¬Docker ÉÏÓÐÁ½¸öÕýÔÚÔËÐеÄÈÝÆ÷£¨docker ps£©£¬Ãû×Ö·Ö±ðÊÇ myjenkins ºÍ mysvn¡£
×¼±¸ Sahi ²âÊԽű¾
ΪʵÀý±àдµÄ Sahi ²âÊԽű¾ÊÇÕë¶ÔdeveloperWorks ÖйúÍøÕ¾×öµÄһЩ¼òµ¥²âÊÔ¡£Ä¿Â¼½á¹¹ÈçÏÂͼ¡£Downloads.sah
ºÍ topics.sah ·Ö±ðµã»÷Ê×Ò³Éϵġ°Èí¼þÏÂÔØ¡±ºÍ¡°¼¼ÊõÖ÷Ì⡱Á´½Ó£¬È»ºóÑéÖ¤Ìø×ªºóµÄÒ³ÃæµÄ±êÌâ¡£Search.sah
ÔÚÊ×Ò³µÄËÑË÷¿òÖÐÊäÈë docker ²¢¶ÔËÑË÷½á¹ûÒ³Ãæ½øÐмòµ¥ÑéÖ¤¡£Mytest.suite ÊÇÒ»¸ö²âÊÔÌ×¼þÎļþ£¬ÓÃÀ´°üº¬ÆäËûÈý¸ö²âÊԽű¾¡£
ͼ 7. Sahi ²âÊԽű¾Ä¿Â¼
run_tests.sh µÄÎļþÄÚÈÝÈçÏ¡£ËüÊ×Ïȵ÷Óà init.sh Æô¶¯ Xvfb ºÍ Sahi£¬È»ºó´¥·¢²âÊԽű¾µÄÔËÐС£ÃüÁîÖÐÖ¸¶¨ÁË
JUnit ±¨±íµÄÊä³ö·¾¶ºÍ Sahi ×ÔÉíµÄ HTML ±¨±íµÄÊä³ö·¾¶¡£
ͼ 8. run_tests.sh ÎļþÄÚÈÝ
½«²âÊԽű¾Ìá½»µ½ Docker µÄ Subversion ÈÝÆ÷£¨svn://172.17.42.1/mytest£©¡£
ÅäÖÃ Jenkins
Ê×ÏÈ£¬°²×°Á½¸ö Jenkins ²å¼þ£º
Docker Plugin
¸Ã²å¼þÄܹ»¼¯³É Jenkins Óë Docker¡£Æä¹¦ÄÜǰÎÄÒÑÓÐÃèÊö¡£
HTML Publisher Plugin
¸Ã²å¼þÓÃÒÔ·¢²¼¹¹½¨Éú³É HTML ±¨±í£¬·½±ãÈÕºó²é¿´¡£
½ÓÏÂÀ´£¬Òª¿ªÆô Docker µÄ TCP ¼àÌý¶Ë¿Ú¡£¿ªÆôµÄ·½·¨ÔÚ²»Í¬µÄϵͳÉÏÓÐËù²»Í¬¡£±¾ÊµÀý Docker
Ö÷»úΪ RHEL 6.5¡£¿ªÆôµÄ·½·¨ÊÇÔÚ/etc/sysconfig/docker ÖÐÉèÖà other_args="-H
tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock"£¬È»ºóÔËÐС°service
docker restart¡±ÖØÆô Docker ·þÎñ¡£CoreOS ÉϵĿªÆô·½·¨Çë²Î¼ûCustomizing
docker¡£
½øÈë Jenkins µÄϵͳÅäÖÃÒ³Ãæ£¨Manager Jenkins>Configure System£©£¬ÔÚ×îµ×²¿±È֮ǰÔö¼ÓÁËÒ»¸ö
Cloud µÄ²¿·Ö¡£µã»÷ Add a new cloud£¬Ñ¡Ôñ Docker Ìí¼ÓÒ»¸ö Docker Ö÷»ú¡£ÕâÀÒòΪ
Jenkins ÔËÐÐÔÚ Docker µÄÈÝÆ÷Àֱ½ÓÓÃ˽ÓÐ IP£¨ifconfig Àï docker0
¶ÔÓ¦µÄ IP£©¼Ó¶Ë¿Ú 4243 Ìîд Docker URL ÊäÈëÓò¡£
ͼ 9. Docker Cloud ÅäÖÃ
Figure xxx. Requires a heading
½ÓÏÂÀ´£¬Ìí¼Ó Docker ¾µÏñ¡£
ͼ 10. Docker ¾µÏñÅäÖÃ
½¨Ò齫 Jenkins Slave µÄ workspace Ŀ¼ӳÉäµ½ Docker Ö÷»úµÄÒ»¸öÎļþ¼Ð£¬ÕâÑù
workspace µÄÄÚÈݲÅÄܳ־ñ£´æ£¬²¢ÇÒ´Ó Subversion »òÕ߯äËû°æ±¾¿ØÖÆÈí¼þ¸üдúÂëµÄʱºò²Å»áÒÔÔöÁ¿·½Ê½¸üС£ÔÚ¸ÃʵÀýÖУ¬ÅäÖÃÈçÏ¡£
ͼ 11. Docker ¾µÏñ Volumes
ÅäÖÃ
֮ͬǰÔÚÆô¶¯ Jenkins ÈÝÆ÷²¿·Ö½²µ½µÄÒ»Ñù£¬±ØÐëÐÞ¸ÄÖ÷»úÉϵÄĿ¼µÄȨÏÞ£¬ÒÔÈ·±£ÈÝÆ÷Äܹ»¶ÔÆä¶Áд¡£
ÏÖÔÚ£¬¿ÉÒÔ´´½¨ Jenkins Job ÁË¡£
ͼ 12. Job ÅäÖà ¨C Docker
ÈÝÆ÷²¿·Ö
´Ëʱ£¬Job ÅäÖõÄÒ³ÃæÀï±È֮ǰÔö¼ÓÁËÒ»¸ö Docker Container µÄ²¿·Ö¡£ÔÚ Label Expression
ÀïÊäÈë¡°docker¡±Óë֮ǰ¶¨ÒåµÄ shenrui/sahi ¾µÏñ°ó¶¨ (¸ÃÊäÈëÓòµÄÖµÓë¾µÏñÅäÖÃÀïµÄ Labels
ÊäÈëÓòÖµÏàͬ)¡£
Source Code Management ²¿·Ö£¬Ñ¡Ôñ Subversion£¬²¢ÌîÈë֮ǰÔÚ Subversion
ÈÝÆ÷ÉÏ´´½¨µÄ×ÊÔ´¿â URL¡£
ͼ 13. Job ÅäÖà ¨C Ô´´úÂë¹ÜÀí²¿·Ö
Build ²¿·ÖÖ±½ÓÔËÐÐ run_tests.sh¡£
ͼ 14. Job ÅäÖà ¨C ¹¹½¨²¿·Ö
Post-build Actions ²¿·Ö½« Sahi ²âÊԽű¾ÔËÐкóÉú³ÉµÄ JUnit ±¨±íºÍ HTML
±¨±í·¢²¼¡£
ͼ 15. Job ÅäÖà ¨C ¹¹½¨ºó²Ù×÷²¿·Ö
±£´æÖ®ºó£¬ÎÒÃǾͿÉÒÔ¿ªÊ¼ÔËÐвâÊÔÁË¡£
ÔËÐвâÊÔ
Job Æô¶¯ºó£¬Docker ²å¼þÔÚ Docker ÉÏÆô¶¯Ò»¸ö shenrui/sahi ÈÝÆ÷£¬²¢µ÷ÓÃSSH
Slaves ²å¼þ ½« slaves.jar ¿½±´µ½ÈÝÆ÷Éϲ¢Æô¶¯£¬½ÓמÍÒÀ´ÎÔËÐÐ Job ÀïÅäÖõĹ¹½¨²½Öè¡£
ͼ 16. Job ÔËÐÐ
Job ÔËÐнáÊøºóÉú³ÉµÄ JUnit ±¨±íºÍ Sahi µÄ HTML ±¨±íÈçÏÂͼ¡£
ͼ 17. ÔËÐнá¹û - JUnit ±¨±í
ͼ 18. ÔËÐнá¹û - HTML ±¨±í
µã»÷ÿ¸ö²âÊÔÓÃÀýµÄÁ´½Ó¿ÉÒÔÏÔʾ¸üΪÏêϸµÄ²âÊÔ²½Ö裬½á¹ûÒÔ¼°´íÎóÐÅÏ¢¡£
ͼ 19. ÔËÐнá¹û ¨C HTML ±¨±íÏêÇé
½áÊøÓï
±¾ÎÄͨ¹ýÒ»¸öʵÀýÑÝʾÁËÅäÖà Sahi+Jenkins+Docker µÄ Web UI ×Ô¶¯»¯²âÊÔ»·¾³µÄ¹ý³Ì¡£Sahi
µÄ Docker ¾µÏñ¶ÁÕß¿ÉÒÔÖ±½Ó´Ó Docker Hub ÀȡʹÓ᣸ÃʵÀý½öÒÔÑÝʾΪĿµÄ£¬Òò´ËÉè¼ÆµÄ±È½Ï¼òµ¥£¬Êµ¼ÊµÄÏîÄ¿ÇéÐÎÒª±ÈÕ⸴Ôӵö࣬¶ÁÕßÅóÓÑ£¨°üÀ¨×÷Õß±¾ÈË£©¶¼»¹Òª²»¶ÏµØµÄÃþË÷ºÍѧϰ¡£Ï£Íû±¾ÎĶԶÁÕßÃÇÄÜÓÐËù°ïÖú¡£ |