ÃֽŠ°Ô½Ã±Û(JAVA)
2018.06.15 / 19:58

Á¨Å²½º »ç¿ëÇÏ¿© ÀÚµ¿ ¹èÆ÷ȯ°æ ¸¸µé¾îº¸±â

¸®¾ó¸®
Ãßõ ¼ö 202

±²ÀåÈ÷ ÁÖ°üÀûÀ¸·Î ȯ°æÀ» ±¸ÃàÇß½À´Ï´Ù. Æ©Å丮¾ó¼º ±ÛÀ̶ó±âº¸´Ü Çǵå¹éÀ» ¹Þ°íÀÚ ±ÛÀ» ÀÛ¼ºÇÏ°Ô µÇ¾ú½À´Ï´Ù. ¸¹Àº Çǵå¹é ºÎŹµå¸³´Ï´Ù..!

Á¨Å²½º »ç¿ëÇÏ¿© ÀÚµ¿ ¹èÆ÷ȯ°æ ¸¸µé±â!

(GitÀ¸·Î Çü»ó°ü¸®°¡ µÇ°í ÀÖ´Â Gradle ÇÁ·ÎÁ§Æ®¸¦ ±âÁØÀ¸·Î ÀÌ ±ÛÀÌ ÀÛ¼ºµÇ¾ú½À´Ï´Ù.)

°³¹ßȯ°æ°ú ¾îÇø®ÄÉÀÌ¼Ç ¼­¹ö°¡ ºÐ¸®µÇ¾î ÀÖ°í, ¿©·¯ ¿ø°Ý ¼­¹ö¸¦ °¡Áö°í ÀÖ´Â ±¸¼º¿¡¼­ ¾îÇø®ÄÉÀ̼ÇÀ» ¹èÆ÷Çϱâ´Â ±²ÀåÈ÷ ±î´Ù·Ó½À´Ï´Ù.

ÇöÀç »óȲ

  • GitlabÀ¸·Î Çü»ó°ü¸®
  • ÀÛ¾÷¸Á°ú °³¹ß¸Á ºÐ¸®(´ë·« °³¹ßÇÏ´Â PC¿¡¼­ºÎÅÍ °¢ ¾îÇø®ÄÉÀÌ¼Ç ¼­¹ö±îÁö 3~4 Depth·Î ¸Á ºÐ¸®)
  • Spring Framework
  • Gradle or Maven Project

±¸½Ã´ëÀû ¹èÆ÷(?)!

Á¦°¡ °Þ¾îº» ȯ°æ ±âÁØÀ¸·Î ¿ø½ÃÀûÀÎ ¹èÆ÷ ¹æ¹ýÀ» ¸ÕÀú »ìÆ캸°Ú½À´Ï´Ù. (ÀÚ¼¼ÇÑ git flow³ª ¼­¹ö ȯ°æÀº »ý·«)

  1. ¼öÁ¤µÈ »çÇ×À» Git¿¡ feature ºê·£Ä¡¿¡ Push ÇÕ´Ï´Ù.
  2. ·ÎÄà ȯ°æ¿¡¼­ ÇÁ·ÎÁ§Æ®¸¦ ºôµå ÇÕ´Ï´Ù.
  3. ºôµå ¿Ï·áµÈ ÃßÃâ¹°(jar ¶Ç´Â war)¸¦ Å×½ºÆ® ¼­¹ö·Î Àü¼Û ÇÕ´Ï´Ù.
  4. ¹èÆ÷ ½ºÅ©¸³Æ®¸¦ ÅëÇØ ¹èÆ÷ ÇÕ´Ï´Ù.
  5. Å×½ºÆ®¸¦ ÁøÇàÇÕ´Ï´Ù.(¼öÁ¤ »çÇ×ÀÌ ÀÖ´Ù¸é 1~5 ¹Ýº¹)
  6. Å×½ºÆ® ¿Ï·áµÈ ¹öÀüÀ» release ºê·£Ä¡¿¡ Push ÇÕ´Ï´Ù.
  7. ¹öÀú´× ÈÄ ·ÎÄà ȯ°æ¿¡¼­ ÇÁ·ÎÁ§Æ®¸¦ ºôµå ÇÕ´Ï´Ù.
  8. ´Ù½Ã ºôµå ¿Ï·áµÈ ÃßÃâ¹°À» Áß¾Ó °ü¸® ¼­¹ö·Î Àü¼Û ÇÕ´Ï´Ù.
  9. Áß¾Ó ¹èÆ÷ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ¿© QA ¼­¹ö·Î º¹»ç ¹× ¹èÆ÷ ÇÕ´Ï´Ù.
  10. QA°¡ ÁøÇàµË´Ï´Ù.(¼öÁ¤»çÇ×ÀÌ ÀÖ´Ù¸é 6~10 ¹Ýº¹)
  11. Áß¾Ó ¹èÆ÷ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ¿© Product·Î º¹»ç ¹× ¹èÆ÷ ÇÕ´Ï´Ù.(¹«Áß´Ü ¹èÆ÷ Æ÷ÇÔ)

ÀÚ¼¼ÇÑ °úÁ¤Àº °ÅÀÇ »ý·«ÇÏ¿´°í ºôµå³ª ¿ø°Ý ¼­¹ö·Î Àü¼Û µîÀ» ÁßÁ¡À¸·Î ±â¼úÇÏ¿´½À´Ï´Ù. À§ °úÁ¤À» º¸¸é Çª½Ã-ºôµå-Àü¼Û-¹èÆ÷ °úÁ¤ÀÌ ±²ÀåÈ÷ ¸¹½À´Ï´Ù. ¹Ýº¹ÀûÀÎ °úÁ¤ÀÌ ¸¹½À´Ï´Ù.

new Item

¹®Á¦Á¡

¹èÆ÷ flow ¹× history

ÇöÀç ÁøÇàµÇ°í ÀÖ´Â ¹èÆ÷ÀÇ ÁøÇà»çÇ×À» ³»°¡ Á÷Á¢ ¸»·Î Çؾ߸¸ ÇÑ´Ù. ³ª ¶ÇÇÑ Çê°¥¸± ¼ö ÀÖ´Ù.

´©°¡ ¾ðÁ¦ ¹èÆ÷Çß°í, ¾î¶² À̽´°¡ ÀÖ¾ú´ÂÁö¸¦ ¼ö±â·Î ÀÛ¼ºÇÏ¿© È®ÀÎÇØ¾ß ÇÑ´Ù. Áï, ±²ÀåÈ÷ ±ÍÂù°í ¼ÓÀ̱⠽¬¿î ȯ°æÀÌ´Ù.

°³¹ß ȯ°æ

·ÎÄÿ¡¼­ ºôµå°¡ µÇ±â ¶§¹®¿¡ ´Ù¸¥ »ç¶÷ÀÌ Äڵ带 ÇÑ ±ÛÀÚ¶óµµ ¼öÁ¤ÇÏ¿© ¹èÆ÷ÇÏ·Á¸é ÇØ´ç ÇÁ·ÎÁ§Æ®¿¡ ¸Â´Â °³¹ß ȯ°æÀ» ¼ÂÆÃÇؾ߸¸ ÇÑ´Ù.

Å×½ºÆ®

ÅëÇÕ Å×½ºÆ®¸¦ ÁøÇàÇÔ¿¡ ·ÎÄà ȯ°æÀ» ¹ÏÀ» ¼ö ÀÖÀ»±î?

±ÍÂú´Ù

Ǫ½Ã-ºôµå-Àü¼Û-¹èÆ÷¸¦ °è¼ÓÇØ¾ß ÇÑ´Ù. Á¤¸» ±ÍÂú´Ù. ¾ð±ÞÇÏÁö ¾Ê¾ÒÁö¸¸ ¿ø°Ý ¼­¹ö·Î ºôµå ÃßÃâ¹°À» º¹»çÇÏ´Â depth°¡ ±²ÀåÈ÷ ±íÀº ȯ°æÀÌ ÀÖ´Ù.

new Item

±×·¡¼­ Àú´Â ¹èÆ÷ ÀÚµ¿È­¸¦ Çغ¸·Á Çß½À´Ï´Ù


Jenkins·Î ÀÚµ¿ ¹èÆ÷ ȯ°æ ¸¸µé±â

Jenkins¿¡ ´ëÇÑ ¼³¸íÀº ±²ÀåÈ÷ ¸¹±â ¶§¹®¿¡ »ý·«ÇÏ°Ú½À´Ï´Ù.

ÀÏ´Ü Jenkins¸¦ ¿Ã·Á¾ßÇÏ°í, Git°ú ¿¬µ¿ÀÌ ÇÊ¿äÇÕ´Ï´Ù. ÀÌ¿¡ ´ëÇؼ­µµ Àß Á¤¸®µÈ

âõÇâ·Î´ÔÀÇ docker¸¦ È°¿ëÇÑ CI ±¸Ãà ¿¬½ÀÇϱâ(Á¨Å²½º,½½·¢)¸¦

ÃßõÇÏ¿© ´ë½ÅÇÕ´Ï´Ù.



Jenkins 2.0ºÎÅÍ Áö¿øµÇ´Â Jenkins PipelineÀº ¾Æ·¡ ÀÛ¼ºÇÑ ³»¿ëº¸´Ù °­·ÂÇÕ´Ï´Ù. ±ÛÀ» ÀçÀÛ¼ºÇßÀ¸´Ï, Jenkins Pipeline±â¹ÝÀ¸·Î ÀÛ¼ºÀ» ¿øÇϽô ºÐµé²²¼­´Â 

http://kingbbode.tistory.com/42 

·Î À̵¿ÇØÁÖ½Ã±æ ¹Ù¶ø´Ï´Ù.



Á¨Å²½ºÀÇ ¹èÆ÷ Ç÷ο츦 Áß½ÉÀ¸·Î ÀÌ ±ÛÀ» ÀÛ¼ºÇϸç Áö±ØÈ÷ °³ÀÎÀûÀ¸·Î »ý°¢ÇÏ¿© ÁøÇàÇÑ Ç÷οìÀ̱⿡ Çǵå¹éÀ» ±â´ëÇÕ´Ï´Ù.

ÁÖ »ç¿ë Jenkins ±â´É ¹× Ç÷α×ÀÎ

  • Build Pipeline Plugin

    • ½±°Ô ¸»Çϸé Jobµé °£¿¡ °ü°è¸¦ Á¦°øÇÕ´Ï´Ù. Job °£ÀÇ ¼ø¼­¿Í Æ®¸®°Å ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù.
  • Parameterized Trigger Plugin

    • Build Pipeline Plugin¿¡ Á¾¼Ó¼ºÀ» °¡Áö°í ÀÖ´Â Ç÷¯±×ÀÎÀ¸·Î, Æ®¸®°Å¿¡ Parameter¸¦ º¸³¾ ¼ö ÀÖ´Â ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù.
  • dashboard-view

    • Build Pipeline Plugin¿¡ Á¾¼Ó¼ºÀ» °¡Áö°í ÀÖ´Â Ç÷¯±×ÀÎÀ¸·Î ¿¬°ü °ü°è°¡ ÀÖ´Â Jobµé °£ÀÇ Dashboard¸¦ Á¦°øÇÕ´Ï´Ù.
  • Parameterized Build

    • Parameter¸¦ »ç¿ëÇÏ¿© ºôµåÇÒ ¼ö Àִ ȯ°æÀ» Á¦°øÇÕ´Ï´Ù.

Step 1. ÇÁ·ÎÁ§Æ® Job »ý¼º

°¢ ÇÁ·ÎÁ§Æ®¸¦ ºôµåÇÏ´Â JobÀÌ ÇÊ¿äÇÕ´Ï´Ù. new ItemÀ» Ŭ¸¯ÇÑ ÈÄ

new Item

freestyle project¸¦ »ý¼ºÇÕ´Ï´Ù.

freestyle project


git ƯÁ¤ ºê·£Ä¡¿Í Trigger ¿¬µ¿

1. Build TriggersÀÇ Build when a change is pushed to GitÀ» ¼±ÅÃÇÕ´Ï´Ù.

freestyle project

2. Allowed brances¿¡ Filter branches by regex¸¦ ¼±ÅÃÇÏ°í Á¤±Ô½ÄÀ» »ç¿ëÇÏ¿© TriggerµÇ´Â ºê·£Ä¡¿Í ¿¬µ¿ÇÕ´Ï´Ù. Àú °°Àº °æ¿ì´Â ¸ðµç feature ÇÏÀ§ ºê·£Ä¡¸¦ ´ë»óÀ¸·Î Çß½À´Ï´Ù.

freestyle project

3. Source Code Management¿¡¼­´Â Brances to build¿¡ feature ÇÏÀ§ ºê·£Ä¡¸¦ ºôµåÇϵµ·Ï ¼³Á¤ÇÕ´Ï´Ù.

freestyle project

Build

Àú °°Àº °æ¿ì´Â Invoke Gradle script¸¦ »ç¿ëÇÏ¿© Gradle VersionÀ» ÁöÁ¤ÇØÁÖ°í, Task ¹× Build FileÀ» ÁöÁ¤ÇØÁÖ¾ú½À´Ï´Ù. Wrapper¸¦ »ç¿ëÇÏ¿© ´Ù¸¥ ¹æ¹ýÀ¸·Î ºôµåÇصµ »ó°ü¾ø½À´Ï´Ù. °¢ ÇÁ·ÎÁ§Æ®¿¡ ¸Â´Â Build ¼³Á¤À» ÇÕ´Ï´Ù.

freestyle project

ÀÌ °úÁ¤±îÁö´Â ¿©´À ÀÏ¹Ý Á¨Å²½º »ç¿ë°ú °°½À´Ï´Ù.

Step 2. °ø¿ë Job »ý¼º

°ø¿ë JobÀ̶õ ºôµå ÈÄ ÁøÇàµÉ °úÁ¤¿¡ ´ëÇÑ JobÀ» ¸»ÇÕ´Ï´Ù.

Á¦ ±âÁØÀ¸·Î ÀÛ¼ºÇÏÀÚ¸é

  • ºôµå ÃßÃâ¹°À» Áß¾Ó ¿ø°Ý ¼­¹ö·Î Àü¼ÛÇϴ scp Job
  • Áß¾Ó ¿ø°Ý ¼­¹öÀÇ ¹èÆ÷½ºÅ©¸³Æ®¸¦ ½ÇÇàÇϴ deploy Job

À§ 2°¡Áö JobÀ» ¸¸µå·Á°í ÇÕ´Ï´Ù. ºôµå ÈÄ¿¡ ÁøÇàµÇ´Â °úÁ¤ÀÌ µ¿ÀÏÇϱ⠶§¹®¿¡ °¡´ÉÇÑ ±¸¼ºÀÔ´Ï´Ù.

°ø¿ë JobÀÌÁö¸¸, Àü¼ÛÇؾßÇÒ ÆÄÀÏÀÌ ´Ù¸£°í ¹èÆ÷ÇؾßÇÒ ¿ø°Ý ¼­¹ö°¡ ´Ù¸¦ÅÙµ¥ ¾î¶»°Ô¶ó°í »ý°¢ÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.

ÀÌ ¶§ À¯¿ëÇÑ ±â´ÉÀÌ JenkinsÀÇ Parameterized ±â´ÉÀÔ´Ï´Ù.

´ÙÀ½ JobÀ¸·Î Parameter¸¦ ³Ñ±æ¼öµµ ÀÖ°í, ÇöÀç Job¿¡¼­ »ç¿ëµÉ Parameter¸¦ Á¤ÀÇÇÒ ¼öµµ ÀÖ½À´Ï´Ù. Áï Àç»ç¿ëÀÌ °¡´ÉÇÏ´Ù´Â!

°øÅë

1. JobÀ» »ý¼ºÇÏ´Â ¹æ¹ýÀº ±âÁ¸°ú °°ÀÌ »ý¼ºÀ» ÇÕ´Ï´Ù.

2. This project is parameterized¸¦ ¼±ÅÃÇÏ¿© ÀÌ ÇÁ·ÎÁ§Æ®°¡ ÆĶó¹ÌÅ͸¦ »ç¿ëÇÏ´Â JobÀÓÀ» üũÇÏ°í, ÇØ´ç ÀÛ¾÷¿¡¼­ »ç¿ëÇÒ ÆĶó¹ÌÅ͸¦ Á¤ÀÇÇÕ´Ï´Ù.(¿©±â¼­ Á¤ÀǵǴ ÆĶó¹ÌÅÍ´Â ÀÌÀü JobÀ» ÅëÇØ °ªÀ» ÁÖÀÔ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù.)

freestyle project

3. °ø¿ë JobÀº Git°ú ¹«°üÇϹǷΠSource Code Management¸¦ NoneÀ¸·Î üũÇÕ´Ï´Ù.

Scp Job

Scp JobÀº ºôµå ÃßÃâ¹°À» Áß¾Ó ¿ø°Ý ¼­¹ö·Î Àü¼ÛÇÏ´Â ¿ªÇÒÀ» ÇÏ°Ô µË´Ï´Ù.

This project is parameterizedÀÇ Add Parameter¸¦ »ç¿ëÇÏ¿© ÀÌ Job¿¡¼­ ÇÊ¿äÇÑ ÆĶó¹ÌÅ͸¦ Á¤ÀÇÇÕ´Ï´Ù.

Àú´Â Scp¸¦ À§ÇØ ÇÊ¿äÇÑ Á¤º¸¸¦

  • ¾î´À À§Ä¡¿¡ ÀÖ´Â war ÆÄÀÏÀÎÁö ¾Ë·ÁÁִ TARGET
  • ¿ø°Ý ¼­¹öÀÇ ¾î¶² °æ·Î·Î Àü¼ÛÇØ¾ß ÇÏ´ÂÁö ¾Ë·ÁÁִ REMOTE_PATH

·Î »ý°¢ÇÏ¿´½À´Ï´Ù.

1. »ç¿ëÇÒ ÆĶó¹ÌÅÍ Á¤ÀÇ

freestyle project

2. ÆĶó¹ÌÅ͸¦ »ç¿ëÇϴ Execute shell Build Step ÀÛ¼º

freestyle project

Àú´Â Scp JOBÀÌ ³¡³­ ÈÄ¿¡´Â ´ÙÀ½¿¡ ¼³¸íÇÒ Deploy JOBÀ» ÀÚµ¿ ÁøÇà½ÃÅ°·Á°í ÇÕ´Ï´Ù. Deploy Job¿¡¼­µµ ¾Æ¸¶ JobÀ» ±¸µ¿½ÃÅ°±â À§ÇÑ Á¤º¸°¡ ÇÊ¿äÇÒ °Í ÀÔ´Ï´Ù. ÀÌ ¶§ »ç¿ëÇÒ °ÍÀÌ Trigger parameterized build on other projects ±â´É ÀÔ´Ï´Ù.

3. Post-build Actions¿¡ Trigger parameterized build on other projects StepÀ» Ãß°¡ÇÕ´Ï´Ù. Predefined parameters¿¡ ´ÙÀ½°ú °°ÀÌ ³Ñ±æ ÆĶó¹ÌÅ͸¦ ÀÛ¼ºÇØÁÝ´Ï´Ù. 

ÀÌ ¶§ ³Ñ°Ü¹ÞÀº ÆĶó¹ÌÅ͸¦ ±×´ë·Î »ç¿ë °¡´ÉÇÕ´Ï´Ù. Trigger¸¦ À§ÇØ ÇÊ¿äÇÑ ÆĶó¹ÌÅ͵µ ÃÖÃÊ Job¿¡°Ô ¹ÞÀ» ¼ö ÀÖµµ·Ï This project is parameterizedÀÇ Add Parameter¸¦ ÅëÇØ ÀÛ¼ºÇÕ´Ï´Ù.

freestyle project

´ÙÀ½ ´Ü°è ÀÚµ¿ ÁøÇàÀÌ ¾Æ´Ñ Dashboard¸¦ ÅëÇÑ ¼öµ¿ ÁøÇàÀ» ÇÏ·Á¸é, Trigger parameterized build on other projects ´ë½Å Build other projects (manual step)À» »ç¿ëÇÏ¸é µË´Ï´Ù.

freestyle project

Deploy Job

Deploy JobÀº Áß¾Ó ¿ø°Ý ¼­¹öÀÇ ¹èÆ÷ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. ÀÌ ¹èÆ÷ ½ºÅ©¸³Æ®´Â argument·Î config ÆÄÀÏÀ» ¹Þ¾Æ ƯÁ¤ ¼­¹ö·Î ¹èÆ÷¸¦ Çϵµ·Ï µÇ¾îÀÖ½À´Ï´Ù.

¿©±â¿¡¼­´Â ÇÊ¿äÇÑ Á¤º¸¸¦, ¹èÆ÷ ½ºÅ©¸³Æ®¿¡¼­ »ç¿ëµÉ argument¸¦ ¾Ë·ÁÁִ CONFIG·Î »ý°¢ÇÏ¿´½À´Ï´Ù.

ÀÛ¼º °úÁ¤Àº Scp Job°ú °°½À´Ï´Ù.

1. »ç¿ëÇÒ ÆĶó¹ÌÅÍ Á¤ÀÇ

freestyle project

2. ÆĶó¹ÌÅ͸¦ »ç¿ëÇϴ Execute shell Build Step ÀÛ¼º

freestyle project

Step 3. ÇÁ·ÎÁ§Æ® Job¿¡ Scp Job ¿¬µ¿

Scp Job°ú Deploy JobÀ» ¿¬µ¿ÇÒ ¶§ »ç¿ëÇß´ø Post-build ActionsÀÇ Trigger parameterized build on other projects StepÀ» »ç¿ëÇÏ¿© Scp Job°ú ¿¬µ¿ÇÕ´Ï´Ù.

Scp Job¿¡¼­ ÇÊ¿äÇÑ TARGETREMOTE_PATH ÆĶó¹ÌÅÍ¿Í Deploy Job¿¡¼­ ÇÊ¿äÇÑ CONFIG Æĸ®¹ÌÅÍ°¡ ÇÊ¿äÇÕ´Ï´Ù.

Jenkins´Â °¢ ºôµå ȯ°æ¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â º¯¼ö¸¦ Á¦°øÇÕ´Ï´Ù. Jenkins Wiki¿¡¼­ Jenkins Set Environment Variables¸¦ Âü°íÇÏ¸é µË´Ï´Ù.

TARGET ÆĶó¹ÌÅÍ¿¡¼­´Â ${WORKSPACE} º¯¼ö¸¦ »ç¿ëÇÏ¿´°í ±× ¿Ü ¼³Á¤ °ªÀº ÇÊ¿äÇÑ ³»¿ëÀ» ÀÛ¼ºÇÏ¿´½À´Ï´Ù.

freestyle project

Dashboard

¿©±â±îÁö ±¸¼ºÇß´Ù¸é ¾Æ¸¶ ¾Æ·¡¿Í °°ÀÌ Dashboard°¡ »ý¼ºµÉ °Í ÀÔ´Ï´Ù!

freestyle project

ºôµå È÷½ºÅ丮¸¦ º¼ ¼ö ÀÖ°í, °¢ Job¿¡¼­ ½ÇÇàµÈ ³»¿ëÀ» Console·Î Live È®ÀÎÀÌ °¡´ÉÇϸç, ¼öµ¿ ºôµå¸¦ ¼±ÅÃÇß´Ù¸é ÁøÇà ¹öÆ°À» ÅëÇØ ´ÙÀ½ ´Ü°è¸¦ ÁøÇà ½Ãų ¼ö ÀÖ½À´Ï´Ù.

¸¶¹«¸®

ÀÌ·¸°Ô Çؼ­ GitÀÇ Æ¯Á¤ ºê·£Ä¡¿¡ Push¸¦ ÇßÀ» ¶§ ÀÚµ¿À¸·Î ¿ø°Ý ¼­¹ö±îÁö ¹èÆ÷ÇÏ´Â °úÁ¤À» ¸¸µé¾î º¸¾Ò½À´Ï´Ù.

¾Æ·¡´Â Á¦°¡ ¸¸µç 꺿°ú ¿¬µ¿ÇÑ ºôµå °úÁ¤!

freestyle project

´Ù¸¥ ¾î´À °÷µµ º¥Ä¡¸¶Å·ÇÏÁö ¸øÇ߱⶧¹®¿¡(Á¤º¸°¡ ¾ø½À´Ï´Ù¤Ì¤Ì) Á¦ ¸¶À½´ë·Î ±¸¼ºÀ» Çغ¸¾Ò½À´Ï´Ù.. ´õ ³ªÀº ¹èÆ÷ ȯ°æÀ» À§ÇØ Çǵå¹é ÁÖ½Ã¸é °¨»çÈ÷ Àû¿ëÇغ¸°Ú½À´Ï´Ù. °¨»çÇÕ´Ï´Ù.



Ãâó: http://kingbbode.tistory.com/35?category=782132 [°³¹ß³ëÆ® - kingbbode]