ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ïŒCIïŒã®ç®æšã¯ãã¹ãã§ã¯ãããŸããã CIã®ã¿ã¹ã¯ã¯ããªãã¡ã¯ã¿ãªã³ã°ãæ°ããæ©èœã®è¿œå ãã¢ãŒããã¯ãã£ã®å€æŽã«ããç Žå£çãªå€æŽããèªèº«ãä¿è·ããããšã§ãã ãŸãããäžæ£ãªã³ãŒãããé »ç¹ã«ç¹°ãè¿ããããã°ããäžæ£ãªãããŒãžã«å¯ŸããŠãé²åŸ¡ããŸãã
CIã«ã¯ãDebianã®Jenkinsã䜿çšããŠããŸãã CIã¹ãã£ã³ã«12æéãè²»ãããŸãã-å®å šã«åäœãããŸã§ã CIã®ãµããŒãã«1æ¥1åãè²»ãããŠããŸãããããããå°ããªããšã®ãã¹ããæžããããTDDãç·Žç¿ãããããŸããã ãã ããCIã¯æ©èœããæããªééãããç§ãã¡ãæããŸãã
ã泚æããŸãããã/ãééããªãããã«ã-ç§ã¯éçºè ã«åŒã³ãããŸããããããã¯äžæçã«ãã圹ã«ç«ããããã®åŸã¯100ïŒ ã«ã¯ãªããŸããã§ããã 人ã ã¯ééããããåŸåããããå¿ããééããç¯ããŸãã ããããç§ã¯Webãããžã§ã¯ãã®ãéã®åŒŸäžžããYiiã®å°ããªåŒŸäžžãããçºæããŸããã§ãã-ã¢ããªã±ãŒã·ã§ã³ãå®å®ãããæ¹æ³ãèŠã€ããŸããã ããªãã®ã¢ããªã±ãŒã·ã§ã³ã¯ç§ã®ãã®ãšã¯ç°ãªããç§ã®æ¹æ³ã¯ããªãã«ãšã£ãŠããŸããããªããããããŸãããããããã¹ãã§ã¯ãããŸãã-ç§ã®æ¹æ³ãããªãã®ããã«åããªããç§ã¯ããªãã®ã¢ããªã±ãŒã·ã§ã³ã®ããã«ãããããŸããã§ããã ãããããã®ãããªCIã®ã¢ã€ãã¢ã¯ã©ãã§ãæ©èœããŸãã ãã ã®ã¢ã€ãã¢ã
ã¢ã€ãã¢ã¯äœã§ãã
1æ¥ãããã®ãã¹ãã«Næéãè²»ããããšãªããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒã«ãªããæ©èœã«ã€ããŠååž°çã«ãã§ãã¯ãããšããèãæ¹ã§ãã ãããå®çŸããã®ã¯ç°¡åã§ã-ãæœè±¡ãšã³ãã£ãã£ãã«å¯ŸããŠ1ã€ã®ãã¹ããèšè¿°ããå Žåããã¹ãã¯ãã¹ãŠã®ãå ·äœçãªãå®è£ ã§åæ Œããå¿ èŠããããŸãã ã³ãŒããæšæºåãã-ãã®ç°ãªãéšåãããã€ãã®æœè±¡åãããšãã°3ã€ã®å®è£ ã«ãããšãã³ãŒãå šäœã3ã€ã®ãã§ãã¯ã§ã«ããŒã§ããŸãã ã¯ãããã¹ãã§ã¯ãªãããã§ãã¯ãã䜿çšããŸã-æ©èœããã¹ãããããã³ãŒããæ©èœããã¯ã©ãã·ã¥ãããèŽåœçã§ã¯ãªããããšã確èªããŸãã é©åãªã³ãŒãã䜿çšãããšãèŽåœçãªãšã©ãŒãåŒãèµ·ãããªãããã«ããžãã¹ããžãã¯ãå£ããããšã¯ã»ãšãã©ãããŸããã å°ãªããšãç§ãã¡ãšã ãã®ãããªã³ãŒããäœæããããšããŸã-ããžãã¯ãæ£ããæ©èœããå Žå-æ©èœããªãå Žåã¯æ©èœãã-FatalExceptionãã¹ããŒããããããã®ä»ã®èŽåœçãªãšã©ãŒãçºçããŸãã ãã®ãããŒãããªæ¹æ³ãæ£ãããšæã ããããªããšãå£ããããžãã¯ãæ¢ãã®ãéåžžã«å°é£ã«ãªããŸãã
ã³ãŒãã次ã®æœè±¡æŠå¿µã«æšæºåããŸããïŒã¢ãã«ïŒYiiã§ã¯ãã§ã«ããªãæšæºã§ãããfindãsaveãdeleteã¡ãœãããšã®éåžžã«æ確ãªã€ã³ã¿ãŒãã§ãŒã¹ãæã£ãŠããŸãïŒã ã³ã³ãããŒã©ãŒïŒãããéåžžã«æšæºçã§ãïŒãã¢ã¯ã·ã§ã³ïŒã¢ã¯ã·ã§ã³ïŒãã³ã³ããŒãã³ããã©ã€ãã©ãªãŒã
ã¢ãã«ããã¹ãŠã·ã³ãã«ãªå Žåãã³ã³ãããŒã©ãŒãšã¢ã¯ã·ã§ã³ã²ãŒã ããããå¿ èŠããããŸããã å€éšåŒã³åºãïŒhttpãã³ã³ãœãŒã«ïŒã¯èŽåœçãªãšã©ãŒïŒhttp> = 500ïŒãåŒãèµ·ãããªãããšã決å®ããŸããïŒãšã³ãã£ãã£ã¯404ãæ²ç·èŠæ±ã¯400ãã¢ã¯ã»ã¹403ãæå³ããŸããååšããªãIDãŸãã¯ä»ã®ããã€ãã®äžæ£ãªãã©ã¡ãŒã¿-ããã¯ãhttpãããã³ã«ã®èŠ³ç¹ããèŠããšäžæ£ãªåäœã§ã-ãŠãŒã¶ãŒãšã©ãŒã¯5xxã§ã¯ãªã4xxã§ã-äžæ£ãªãªã¯ãšã¹ãã§èŽåœçã«ãªãå¿ èŠã¯ãããŸããã
å®éãã³ã³ãããŒã©ãŒã®ãã§ãã¯ã¯ãã®ååã«åºã¥ããŠè¡ãããŸãã-ã¢ãžã¥ãŒã«ãã³ã³ãããŒã©ãŒãäœæããã¢ã¯ã·ã§ã³ããã«ããŸã-äœãèµ·ãã£ãã®ãã確èªããŸã-ExceptionPage404-ããã¯æ£åžžã§ãïŒããŒã¿ã$ _GETã«æž¡ããªãã£ãïŒããFatalExceptionãŸãã¯PHPãšã©ãŒãæ¢ã«æªãå Žå-ãã¹ãåæ ŒããŸããã§ããã
ãŸããäœæããYiiã®ã³ã³ããŒãã³ããæšæºåããŸããã ãã®å Žåãã³ã³ããŒãã³ãã¯æ¢åã®Yiiæ©èœã®æ¡åŒµã§ãã ããšãã°ãã·ã£ãŒãã£ã³ã°ã®è¿œå ãã°ããŒãã«ããŒã¿ããŒã¹ãã£ãã·ã¥ã ãã®ãããªé¢æ°ã¯ãYiiã¢ãã«ãšæ¡åŒµã³ã³ããŒãã³ããšãã2ã€ã®æœè±¡åãåæã«å®è£ ããŸãã ãŸãã2åãã§ãã¯ãããŸã-ãã¹ãŠã®ã¢ãã«ã®äŸã§ãã³ã³ããŒãã³ããšããŠåå¥ã«ã
ã©ã€ãã©ãª-ããã¯ãYiiãšã¯é¢ä¿ãªããç§ãã¡ãäœæããå®å šã«ãå·Šãã®æ©èœã§ãããããžãã¯ã®ç¹å¥ãªã±ãŒã¹ã®ã¿ãå®è£ ããŠããŸããã»ãšãã©ã®å ŽåããµãŒãã¹æåã¢ãŒããã¯ãã£ã®ä»ã®ãµãŒãã¹ãšã®çžäºäœçšã§ãã ãããã®ãã§ãã¯ãšãã¹ãã¯å¥ã®èšäºã®ãããã¯ã§ãã1ã€ã ãèšããŸããCIã§ããããåå¥ã®ãããžã§ã¯ããšããŠãã¹ãããã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³å ã§ãçµ±åãã¹ãããçæããŸãã
äŸã§ã®å®è£
4ã€ã®çµã¿ç«ãŠæé ããããŸãã
- äŸåé¢ä¿ã®å±éã移è¡ãã€ã³ã¹ããŒã«/æŽæ°-ããã¯äžèšã®ã¢ã€ãã¢ãšã¯é¢ä¿ãããŸããã
- ã³ãŒãå質ãã§ãã¯
- ã€ã³ã¿ãŒãã§ã€ã¹ã³ãŒãã®æ€èšŒ-äžèšã®ã¢ã€ãã¢ã®å®è£ ã
- é »ç¹ã«ãããã¢ãããããã°ã®å°æ°ã®åäœãã¹ãïŒphpunitãšselenium + phpunitã®äž¡æ¹ïŒã éåžžã«ãŸãã«ããµããŒãããŸãã¯è¿œå ãããããšã¯ãªããããããã¹ãã«1æ¥Næéãè²»ãããªãã§ãã ããããšæžããŸããã
ã¹ããã1-ãããã€
ãã®ãã§ãã¯ã¯ã2ã€ã®ããŒãžã§ã³ã§å®è¡ãããŸã-åã®ããŒãžã§ã³ããã®ç§»è¡ïŒæ¬çªã®çŸåšã®ç¶æ ãšåãïŒãšãŒãããã®ã¹ãã£ã³ïŒä»®æ³ãã·ã³ã®èªåã€ã³ã¹ããŒã«ãèªåããããæ§æãã¢ããªã±ãŒã·ã§ã³ããã³ããŒã¹ã¹ãã£ã³ïŒ
å ·äœçãªããšã¯èšããŸããããªããªã ããã¯ãã®èšäºãšãŸã£ããç°ãªã話ã«ã¯åœãŠã¯ãŸããŸããã
ã¹ããã2-ã³ãŒãå質
æåã«ç¢ºèªããã®ã¯ããphp -lã-ãã¹ãŠã解æããããã©ãã-ãããªãã§ã¯æå³ããããŸããã ã³ãŒãã§2çªç®ã«æ¢ããŠããã®ã¯ãçŠæ¢ãããåŒã³åºããdieãvar_dumpãini_setãexitã§ãã 次ã«ãéåžžã®fgrepã䜿çšããŠãæ²ãã£ãããŒãžã®çµæãæ¢ããŸããã<<<<<<<ããã>>>>>>ããã======ã-ç§å¯ã®å Žæãæã§æã£ãŠãããšããã®ãããªãŽããã¹ããããããããšããããŸãæ°ã¥ããã競åã解決ããŸããã§ããã
ãŸããæ£èŠè¡šçŸã䜿çšããŠä»¥äžãæ¢ããŸãã
- ã³ãŒãã®é·ãç»é¢ã®ã¡ãœããã
- ã5ã€ã®ãã¹ããããifãã®ãããªãã¹ããããã³ãŒã
- printïŒpreg_replaceïŒ '/ @ /'ãâ /ïŒ /âãâ aâ .substrïŒ1ã5ã$ lalaïŒãïŒIntïŒïŒboolïŒ$ dïŒïŒãšãã圢åŒã®ãããŒããããã³ãŒããã -èªãã®ãé£ãããæžãã®ãé£ããããã®ãããªã³ãŒããèŠãããããŸããã
ã¹ããã3-ã€ã³ã¿ãŒãã§ã€ã¹ã³ãŒãã®æ€èšŒ
ã¢ãã«ãã³ã³ãããŒã©ãŒãã³ã³ããŒãã³ãããŠãããŒãµã«ã»ã¬ã³ãã§ãã¯ïŒã¯ãã1ã€ããããŸãïŒåŸã§èª¬æããŸãïŒãã©ã€ãã©ãªãšã®çµ±åãã¹ããªã©ãããã€ãã®ãã¹ããããã«åãããŠããŸãã
æãç°¡åã§æãèå³æ·±ããã®ã«ã€ããŠè©³ãã説æããŸãã æãåçŽãªã®ã¯ã¢ãã«ã§ãã
ã¢ãã«ã¯ãã¹ãŠä¿åãéžæãåé€ããå¿ èŠããããŸãã ååšããã®ã¯ãã®ããã§ãã ç¹ã«ãã®ãã¹ãã§ã¯ããããã©ã«ãã®æå¹ãªã¢ãã«ããäœæããåã¢ãã«ã«éçã¡ãœãããè¿œå ããŸãããããã¯ãæ€èšŒãããŒã¿ããŒã¹ããã®äœæãä¿åãåé€ãå¯èœãªã¢ãã«ã§ãã
å®éããã®ãããªã¢ãã«ãäœæããããã«250ã®ã¢ãã«ã«250ã®ã¡ãœãããèšè¿°ããŠããŸããã 芪ã䜿çšããŠ1ã€ã®ã¡ãœãããäœæããŸãããã«ãŒã«ããæ€èšŒãã©ã¡ãŒã¿ãŒãæœåºãããã£ãŒã«ãã«æå¹ãªå€ãå ¥åããŸãã ç§ã¯ããã«2æéãè²»ãããŸããã
ãã®çµæãã«ãŒãå ã®åã¢ãã«ã«å¯ŸããŠã次ã®ãããªããšãè¡ããŸãã
$model = ModelClass::createDefault(); // $this->assertNotNull($model); //? $this->assertTrue($model->save()); //? $pk = $model->getPk(); // primary key $loaded = ModelClass::model()->findByPk($pk); // primary key $this->assertNotNull($loaded); //? $this->assertTrue($model->delete()); //? $this->assertIsNull(ModelClass::model()->findByPk($pk)); //?
ãã®ããªãããŒãªãã¹ãã§æ¬¡ã®ããšãè¡ããŸããïŒã·ã£ãŒãã£ã³ã°ã¬ã€ã€ãŒãæ©èœããŠããããšãããŒã¿ããŒã¹ãã£ãã·ã¥ãéåžžã®æäœã«å¹²æžããªãããšãããŒã¿ããŒã¹å ã®ããŒãã«ãæ£åžžã«ç§»è¡ãããŠããããšããã®ã¢ãã«ããã®ããŒãã«ã«ä¿åãããŠããããšã確èªããŸããïŒ+ããªã¬ãŒã¯èœã¡ãŸããïŒã
æãèå³æ·±ãã®ã¯ãã»ã¬ã³ã®ãã§ãã¯ã§ãã
ç§ãã¡ã¯ã€ã³ã¿ãŒãã§ãŒã¹ãç 究ãã楜ããçµè«ã«éããŸãã-ããã¯å®å šã«æšæºåãããŠããŸãã ãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ã«ã¯4ã€ã®äž»ãªãªãã·ã§ã³ããããŸãã
- ã°ããŒãã«ããŒãžãå€æŽ
- ã¿ãå€æŽ
- ãã€ã¢ãã°ããã¯ã¹ãéã
- ãã€ã¢ãã°ããã¯ã¹ã§ãã©ãŒã ãéä¿¡ãã
æåã®3ã€ã®ãã€ã³ãã¯éåžžã«ç°¡åã«èªååãããŸãã-ã°ããŒãã«ããŒãžãå€æŽããAããã³Buttonã¿ã°ã«ã¯ã°ããŒãã«cssã¯ã©ã¹ããããå€æŽã¿ãã«ã¯data-tabå±æ§ããããéå§ãã€ã¢ãã°ã«ã¯data-msgboxå±æ§ããããŸãã ããŒãžãå€æŽããïŒãã¿ã³ãæãã«ã¯ãªãã¯ããïŒãã¿ããå€æŽããïŒãã¿ã³ãæŒãïŒããã€ã¢ãã°ãéãïŒã¯ãªãã¯ããã ãïŒã3ã€ã®ãã¹ããããã«ãŒããäœæããã ãã§ååã§ããã ãã¹ããããå段éã§ãããŒãžã®ã³ã³ãã³ããå€æŽããããã©ãããdivã®ã³ã³ãã³ããã¿ãã«å¯ŸããŠå€æŽããããã©ããããŸãã¯ãã€ã¢ãã°ãéãããã©ããã確èªããŸãã éäžã§ããã©ãŠã¶ããjsãšã©ãŒãåéããŸãã
ãã©ãŒã ã§ã¯ãå°ãé¢åã§ããã å¯èœæ§ã®ããæå¹ãªããŒã¿ã®å€ãæã€ããŒã¿åå±æ§ããã©ãŒã èŠçŽ ã«è¿œå ããå¿ èŠããããŸãã-data-type =â emailâãâ anyStringâãâ checkboxCheckedâãâ phoneâãâ anyFileâãªã©ã ãããŠããã«è¡ããŸãïŒ ãã©ãŒã ã¯æšæºåãããŠããããã¹ãŠã®å ¥åã«å ±éã®ã€ã³ã¿ãŒãã§ã€ã¹ããããŸã-æå¹ãªé»åã¡ãŒã«ãå ¥åããããã£ãŒã«ãã§ã¯ãé»åã¡ãŒã«ã«å ¥åããé»è©±ãå ¥åããããã£ãŒã«ãã§ã¯-é»è©±ãªã©ããã¹ãŠã®ãã£ãŒã«ãã«ãããŸãã ãã©ãŒã ãéä¿¡ãããšã©ãŒãªãã§ãã€ã¢ãã°ãéããããšã確èªããŸã-ããã¯ããŒã¿ãä¿åãããããšãæå³ããŸãã 次ã«ãç¡å¹ãªããŒã¿ã䜿çšããŠåãããšãç¹°ãè¿ããŸããããšãã°ãé»è©±ãæžãã¡ãŒã«ãã£ãŒã«ãã«-ãã©ãŒã ãéä¿¡ãããŠããªãããšãããã³ãŠãŒã¶ãŒã«ãšã©ãŒã衚瀺ãããŠããããšã確èªããŸãã
ãã©ãŒã ãã£ãŒã«ãã«å±æ§ãè¿œå ããã®ã«çŽ1.5æéããããŸããã ãããŠãç§ãã¡ã«ã¯ããã€ãã®åœ¢åŒããããŸãã-ããã¯åçŽãªä»äºã§ãããããªãã座ã£ãŠãããè¡ããªãã°ãããã¯é·ãããããŸããã
ãã®åçŽãªïŒãŸãã¯ããªãããŒãªïŒã¡ãœããã䜿çšããŠããµããžã§ã¯ãã®UIå šäœããã§ãã¯ããŸããã
- ããŒãžãã¿ãããŠã£ã³ããŠãéããšèŽåœç
- æå¹ããã³ç¡å¹ãªãã©ãŒã ãéä¿¡ãããšèŽåœçã
- æå¹ãªããŒã¿ãšãšãã«ä¿åããããã©ãŒã
- ãã®ãã©ãŒã ã¯ãç¡å¹ãªããŒã¿ã§ãšã©ãŒãåºããŸãã
åäœãã¹ããšã»ã¬ã³ãã¹ã
æ£çŽãªãšãããã»ãšãã©ãããŸããã ç¹°ãè¿ãçºçãããã°ãçºçããå Žåã«ã®ã¿ãããããè¿œå ããŸãããã¹ã¿ãŒã¯ããŸããããã¯åã³æ©èœããŸããïŒããšèšããŸããã
å€ãæžé¢ã®ãã¹ããå€æŽããããšã¯ãããŸãã-åŸæ¹äºææ§ãèæ ®ããŠã¢ããªã±ãŒã·ã§ã³ãéçºããŸãã ããã¯ãã¹ãã®ããã ãã§ãªããã¢ããªã±ãŒã·ã§ã³ã«ã¯æºåž¯é»è©±/ãã¹ã¯ãããçšã®APIããããäžäœäºææ§ãå¿ èŠã§ãã
ããã§ã¯ã次ã¯äœã§ããïŒ
å°ãåŸã«ãjsã³ãŒããæšæºåããŠã«ããŒããŸããïŒtestitåå¿titulusdesiderioã«æè¬ããŸã-nodejsããå®è¡ããããã«é©åãããããã§jsããã¹ãããŸãïŒ
åŸã§ãcss + htmlçµçãã¹ãã«ã€ããŠèª¬æããŸãã-æ²çã®åé¡ã«ã€ããŠãdiff-screenshotsã䜿çšããŠãæããããŸããçµçããã§ãã¯ããŸããã
ãã¡ããèå³ãããå Žåã¯ãããããã¹ãŠã«ã€ããŠåå¥ã«èª¬æããŸãã
PS ãããã¯ãã¹ãã§ã¯ãããŸãããããæ©èœã®5ïŒ ãã«ããŒããããªã©ã®ãã¬ãŒãºã§scãåã«ããã¹ãããŸããã ãŸãã«ããã©ãŒãã³ã¹ãã§ãã¯ãè¡ã£ãŠããŸãã
åºå ã§ã©ã€ããç¹ç¯ããŠããããšã確èªãããããªãã®ã§ãããã®ç±ããã§ãã¯ãããæŸåºãããå ã枬å®ãããééã£ãã«ãŒããªããžã«ãã蟌ãããšããªãã§ãç¹ç¯ããŠããããšã確èªããã ãã§ãã ã³ãŒãã§ãåãããšãè¡ããŸãã ã·ã³ãã«ã§ãµããŒããªãã®æ¹æ³ã
UPDã ããã§èª¬æããå®è£ äŸã¯åãªãäŸã§ããããã以äžã®ãã®ã§ã¯ãããŸããã äž»ãªãã®ã¯ãã·ã¹ãã ã®äžéšã§ããåã ã®ãšã³ãã£ãã£ãæšæºåãããšããèãæ¹ã§ãã æšæºã®ãããããã¯1ã€ã®æ¹æ³ã§ç¢ºèªã§ããŸãããéæšæºã®å Žåã¯å¥ã®æ¹æ³ãèãåºãå¿ èŠããããŸãã