Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
¹¹½¨Web UI ×Ô¶¯»¯²âÊÔ»·¾³
 
×÷ÕߣºÉò Èñ À´Ô´£ºIBM ·¢²¼ÓÚ 2015-7-31
  4922  次浏览      28
 

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 À­È¡Ê¹Ó᣸ÃʵÀý½öÒÔÑÝʾΪĿµÄ£¬Òò´ËÉè¼ÆµÄ±È½Ï¼òµ¥£¬Êµ¼ÊµÄÏîÄ¿ÇéÐÎÒª±ÈÕ⸴Ôӵö࣬¶ÁÕßÅóÓÑ£¨°üÀ¨×÷Õß±¾ÈË£©¶¼»¹Òª²»¶ÏµØµÄÃþË÷ºÍѧϰ¡£Ï£Íû±¾ÎĶԶÁÕßÃÇÄÜÓÐËù°ïÖú¡£

   
4922 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

΢·þÎñ²âÊÔÖ®µ¥Ôª²âÊÔ
һƪͼÎÄ´øÄãÁ˽â°×ºÐ²âÊÔÓÃÀýÉè¼Æ·½·¨
È«ÃæµÄÖÊÁ¿±£ÕÏÌåϵ֮»Ø¹é²âÊÔ²ßÂÔ
È˹¤ÖÇÄÜ×Ô¶¯»¯²âÊÔ̽Ë÷
Ïà¹ØÎĵµ

×Ô¶¯»¯½Ó¿Ú²âÊÔʵ¼ù֮·
jenkins³ÖÐø¼¯³É²âÊÔ
ÐÔÄܲâÊÔÕï¶Ï·ÖÎöÓëÓÅ»¯
ÐÔÄܲâÊÔʵÀý
Ïà¹Ø¿Î³Ì

³ÖÐø¼¯³É²âÊÔ×î¼Ñʵ¼ù
×Ô¶¯»¯²âÊÔÌåϵ½¨ÉèÓë×î¼Ñʵ¼ù
²âÊԼܹ¹µÄ¹¹½¨ÓëÓ¦ÓÃʵ¼ù
DevOpsʱ´úµÄ²âÊÔ¼¼ÊõÓë×î¼Ñʵ¼ù
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

LoadRunnerÐÔÄܲâÊÔ»ù´¡
Èí¼þ²âÊÔ½á¹û·ÖÎöºÍÖÊÁ¿±¨¸æ
ÃæÏò¶ÔÏóÈí¼þ²âÊÔ¼¼ÊõÑо¿
Éè¼Æ²âÊÔÓÃÀýµÄËÄÌõÔ­Ôò
¹¦ÄܲâÊÔÖйÊÕÏÄ£Ð͵Ľ¨Á¢
ÐÔÄܲâÊÔ×ÛÊö

ÐÔÄܲâÊÔ·½·¨Óë¼¼Êõ
²âÊÔ¹ý³ÌÓëÍŶӹÜÀí
LoadRunner½øÐÐÐÔÄܲâÊÔ
WEBÓ¦ÓõÄÈí¼þ²âÊÔ
ÊÖ»úÈí¼þ²âÊÔ
°×ºÐ²âÊÔ·½·¨Óë¼¼Êõ

ij²©²ÊÐÐÒµ Êý¾Ý¿â×Ô¶¯»¯²âÊÔ
IT·þÎñÉÌ Web°²È«²âÊÔ
IT·þÎñÉÌ ×Ô¶¯»¯²âÊÔ¿ò¼Ü
º£º½¹É·Ý µ¥Ôª²âÊÔ¡¢Öع¹
²âÊÔÐèÇó·ÖÎöÓë²âÊÔÓÃÀý·ÖÎö
»¥ÁªÍøweb²âÊÔ·½·¨Óëʵ¼ù
»ùÓÚSeleniumµÄWeb×Ô¶¯»¯²âÊÔ