{"id":33837,"date":"2017-07-04T11:12:12","date_gmt":"2017-07-04T02:12:12","guid":{"rendered":"https:\/\/blog.jetbrains.com\/kr\/?p=93"},"modified":"2017-07-04T11:14:51","modified_gmt":"2017-07-04T02:14:51","slug":"ci","status":"publish","type":"post","link":"https:\/\/blog.jetbrains.com\/ko\/2017\/07\/04\/ci\/","title":{"rendered":"\uad6c\uae00 \ud074\ub77c\uc6b0\ub4dc\uc5d0\uc11c \ud300\uc2dc\ud2f0 CI\ube4c\ub354 \uc2e4\ud589"},"content":{"rendered":"TeamCity \uac00 \uad6c\uae00 \ud074\ub77c\uc6b0\ub4dc \uc11c\ube44\uc2a4\uc5d0 \uc644\ubcbd\ud788 \ud1b5\ud569\ub41c\ub2e4\ub294 \uae30\uc05c \uc18c\uc2dd\uc744 \uc54c\ub824 \ub4dc\ub9bd\ub2c8\ub2e4. Google Cloud Agents\u00a0\ud50c\ub7ec\uadf8\uc778\uc744 \uc0ac\uc6a9\ud558\uba74 Google Compute Engine \uc744 \uc0ac\uc6a9\ud558\uc5ec \ud544\uc694\ud55c \uacbd\uc6b0 \ud06c\ub77c\uc6b0\ub4dc \uc778\uc2a4\ud134\ud2b8\ub97c \uc2dc\uc791\ud558\uc5ec cloud build agents\u00a0\ud480\uc744 \ud655\uc7a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \u00a0\ub610\ud55c \ud6a8\uc728\uc801\uc778 \ube44\uc6a9\uc758 preemptible virtual machines\u00a0\uc0ac\uc6a9\uc744 \uc9c0\uc6d0\ud569\ub2c8\ub2e4. Google Artifact Storage\u00a0\ud50c\ub7ec\uadf8\uc778\uc740 \u00a0external build\u00a0artifacts\u00a0\uc720\uc9c0\ub97c \uc704\ud558\uc5ec \uad6c\uae00 \ud074\ub77c\uc6b0\ub4dc \uc2a4\ud1a0\ub9ac\uc9c0 \uc0ac\uc6a9 \uad8c\ud55c\uc744 \uc81c\uacf5\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.\r\n\uc124\uce58\r\n\uad6c\uae00 \ud074\ub77c\uc6b0\ub4dc\uc5d0 \ud300\uc2dc\ud2f0\ub97c \ud1b5\ud569\ud558\ub824\uba74, Google Cloud Agents\u00a0\uc640\u00a0Google Artifact Storage\u00a0\ub97c \ud50c\ub7ec\uadf8\uc778 \uac24\ub7ec\ub9ac\uc5d0\uc11c \ub2e4\uc6b4\ub85c\ub4dc \ud55c \ub2e4\uc74c, additional TeamCity plugins\u00a0\uc5d0\uc11c \ub458 \ub2e4 \uc124\uce58\ud574\uc57c \ud569\ub2c8\ub2e4.\u00a0\uc774 \ub54c \ud300\uc2dc\ud2f0 \uc11c\ubc84 \uc7ac\uc2dc\uc791\ud574\uc57c \ud569\ub2c8\ub2e4.\r\n\uad6c\uae00 \ud074\ub77c\uc6b0\ub4dc \uc5d0\uc774\uc804\ud2b8 \uad6c\uc131\r\n\uad6c\uae00 \ud074\ub77c\uc6b0\ub4dc \uc774\ubbf8\uc9c0 \uc900\ube44\r\n\uc774\uc81c \uc0c8\ub85c\uc6b4 \ud074\ub77c\uc6b0\ub4dc \ube4c\ub4dc \uc5d0\uc774\uc804\ud2b8\ub97c \uc2dc\uc791\ud558\uae30 \uc704\ud574 \ud074\ub77c\uc6b0\ub4dc \uc774\ubbf8\uc9c0\ub97c \ub9cc\ub4e4\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uc774\ub97c \uc704\ud574, \uc0ac\uc6a9 \uac00\ub2a5\ud55c \u00a0public boot disks\u00a0\uc73c\ub85c\ubd80\ud130 \uc0c8\ub85c\uc6b4 \ud074\ub77c\uc6b0\ub4dc \uc778\uc2a4\ud134\uc2a4\ub97c \uc0dd\uc131\ud558\uace0,\u00a0\u00a0 \u201cManagement, disk, networking, SSH keys\u201d \uc139\uc158\uc5d0 \uc788\ub294 \u201cDelete boot disk when instance is deleted\u201d \ud56d\ubaa9 \uc120\ud0dd\uc744 \ucde8\uc18c\ud569\ub2c8\ub2e4. \uadf8\ub7f0 \ub2e4\uc74c, \u00a0\ud074\ub77c\uc6b0\ub4dc \uc778\uc2a4\ud134\uc2a4\ub97c \uc2dc\uc791\ud55c \ud6c4, \uc120\ud0dd\ud55c \uc774\ubbf8\uc9c0\uc5d0 \ub530\ub978 SSH\u00a0\ub610\ub294\u00a0RDP\u00a0\ub97c \ud1b5\ud574 \uc5f0\uacb0\ud558\uace0,\u00a0TeamCity build agent\u00a0\ub97c \uc124\uce58\ud569\ub2c8\ub2e4. \ud50c\ub7ec\uadf8\uc778\uc744 \uc5c5\ub370\uc774\ud2b8\ud558\uace0 \uc790\ub3d9\uc73c\ub85c \uc2dc\uc791\ud558\uae30 \uc704\ud574\uc11c\ub294 \uc5d0\uc774\uc804\ud2b8 \uc124\uc815\uc5d0\uc11c TeamCity \uc11c\ubc84\uc5d0 \ube4c\ub4dc \uc5d0\uc774\uc804\ud2b8\ub97c \uac00\ub9ac\ud0a4\ub3c4\ub85d \ud574\uc57c \ud569\ub2c8\ub2e4.\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n\uadf8 \ub2e4\uc74c \uc694\uad6c\ub418\ub294 \ud544\ub4dc \ub3c4\uad6c\ub97c \uc124\uce58\ud558\uace0, \uc784\uc2dc \ud30c\uc77c \uc81c\uac70(remove temporary files), \ud074\ub77c\uc6b0\ub4dc \uc778\uc2a4\ud134\uc2a4 \uc81c\uac70\ud55c \ub2e4\uc74c, \ud074\ub77c\uc6b0\ub4dc \uc778\uc2a4\ud134\uc2a4 \ubd80\ud2b8 \ub514\uc2a4\ud06c\uc5d0\uc11c\u00a0new custom image\u00a0\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.\r\n\r\n\r\n\r\n\uc11c\ube44\uc2a4 \uacc4\uc815 \ubc0f \ud0a4 \ub9cc\ub4e4\uae30\r\n\uc774\uc81c Compute Engine Instance Admin\u00a0\uc5ed\ud560 \uc124\uc815\uc5d0\uc11c new service account\u00a0\uc640\u00a0\ud574\ub2f9 \uacc4\uc815\uc5d0 \ub300\ud55c \uc0c8\ub85c\uc6b4\u00a0JSON private key\u00a0\ub97c \uc0dd\uc131\ud574\uc57c \ud569\ub2c8\ub2e4.\r\n\r\n\r\n\r\n\uad6c\uae00 \uc5d0\uc774\uc804\ud2b8 \ud504\ub85c\ud544 \uc0dd\uc131\r\nGoogle agent cloud profile\u00a0\uc744 \uc0dd\uc131\ud558\uae30 \uc704\ud558\uc5ec, \ud504\ub85c\ud544\uc744 \uc124\uc815\ud560 \ud504\ub85c\uc81d\ud2b8\ub85c \uc774\ub3d9\ud55c \ub2e4\uc74c, \ud074\ub77c\uc6b0\ub4dc \ud504\ub85c\ud544 \ub9c1\ud06c\ub97c \uc120\ud0dd\ud569\ub2c8\ub2e4. \uadf8\ub7f0 \ub2e4\uc74c \u201cCreate new profile\u201d \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uace0, \ud074\ub77c\uc6b0\ub4dc \ud0c0\uc785\uc73c\ub85c \u201cGoogle Compute\u201d \ub97c \uc120\ud0dd\ud569\ub2c8\ub2e4. \ud504\ub85c\ud544 \ub124\uc784\uacfc \ud574\ub2f9 \ud544\ub4dc\uc5d0 \uc788\ub294 JSON \ud504\ub77c\uc774\ube44\ud2b8 \ud0a4 \uac12\uc744 \uc124\uc815\ud569\ub2c8\ub2e4.\r\n\r\n\ud504\ub85c\ud544\uc5d0 \uc0c8\ub85c\uc6b4 \uc774\ubbf8\uc9c0\ub97c \ucd94\uac00\ud558\uae30 \uc704\ud574, \u201cAdd image\u201d \ubc84\ud2bc\uc744 \ucd94\uac00\ud558\uace0, \ucd5c\uadfc\uc5d0 \uc0dd\uc131\ud55c \ud074\ub77c\uc6b0\ub4dc \uc774\ubbf8\uc9c0\ub97c \uc120\ud0dd\ud55c \ub2e4\uc74c, \ub2e4\ub978 \uc18d\uc131\ub4e4\uc744 \uc791\uc131\ud569\ub2c8\ub2e4. \ub2e4\uc74c\uc73c\ub85c \uc774\ubbf8\uc9c0\uc640 \ud504\ub85c\ud544 \uc124\uc815\uc744 \uc800\uc7a5\ud569\ub2c8\ub2e4. \uc774\uac8c \uc804\ubd80\uc785\ub2c8\ub2e4.\r\n\r\n\r\n\r\n\uad6c\uae00 \uc544\ud2f0\ud329\ud2b8 \uc800\uc7a5\uc18c \uad6c\uc131\r\n\uc11c\ube44\uc2a4 \uacc4\uc815 \ubc0f \ud0a4 \ub9cc\ub4e4\uae30\r\n\uad6c\uae00 \ud074\ub77c\uc6b0\ub4dc \uc2a4\ud1a0\ub9ac\uc9c0\uc5d0 \uc5d1\uc138\uc2a4\ud558\ub824\uba74, \ud50c\ub7ec\uadf8\uc778\uc5d0\uc11c \uad6c\uae00 \uc5d4\uc9c4 \uc778\uc2a4\ud134\uc2a4 \uc5b4\ub4dc\ubbfc \uad8c\ud55c\uc774 \uc788\ub294 \uc11c\ube44\uc2a4 \uacc4\uc815\uacfc \uacc4\uc815\uc5d0 \ub300\ud55c \uc0c8\ub85c\uc6b4 JSON \ud504\ub77c\uc774\ube44\ud2b8 \ud0a4\ub97c \ud544\uc694\ub85c \ud569\ub2c8\ub2e4.\r\n\r\n\r\n\r\n\uc544\ud2f0\ud329\ud2b8 \uc800\uc7a5\uc18c \uad6c\uc131\r\n\uc544\ud2f0\ud329\ud2b8 \uc800\uc7a5\uc18c \ud504\ub85c\uc81d\ud2b8 \ud0ed\uc73c\ub85c \uc774\ub3d9\ud558\uc5ec \uc0c8\ub85c\uc6b4 \uc2a4\ud1a0\ub9ac\uc9c0 \ucd94\uac00 \ubc84\ud2bc\uc744 \ud074\ub9ad\ud569\ub2c8\ub2e4. \uad6c\uae00 \uc800\uc7a5\uc18c \ud0c0\uc785\uc744 \uc120\ud0dd\ud558\uace0, \uc774\ub984, JSON \ud504\ub77c\uc774\ube44\ud2b8 \ud0a4, \ubc84\ud0b7 \uc774\ub984\uc744 \uc785\ub825\ud558\uace0 \uc800\uc7a5\uc744 \ub204\ub985\ub2c8\ub2e4. \uadf8\ub7f0 \ub2e4\uc74c, Active \ub9c1\ud06c\ub97c \ud074\ub9ad\ud558\uc5ec \ud300\uc2dc\ud2f0\uc5d0 \uc788\ub294 \uc544\ud2f0\ud329\ud2b8 \uc800\uc7a5\uc18c\ub97c \ud65c\uc131\ud654\ud569\ub2c8\ub2e4.\r\n\r\n\r\n\r\n&nbsp;\r\n\r\n\uc774\uac83\uc774 \uc804\ubd80\uc785\ub2c8\ub2e4. \ud504\ub85c\uc81d\ud2b8\uc5d0 \uc788\ub294 \uc0c8\ub85c\uc6b4 \ube4c\ub4dc\ub294 \uad6c\uae00 \ud074\ub77c\uc6b0\ub4dc \uc800\uc7a5\uc18c\uc5d0 \uc544\ud2f0\ud329\ud2b8\ub4e4\uc744 \uc800\uc7a5\ud560 \uac83\uc785\ub2c8\ub2e4.\r\n\r\n&nbsp;\r\n\ud53c\ub4dc\ubc31\r\n\ud300\uc2dc\ud2f0\uc758 \ud50c\ub7ec\uadf8\uc778 \uc0ac\uc6a9 \uc2dc\ub3c4\ub97c \ud658\uc601\ud569\ub2c8\ub2e4. \uc5ec\ub7ec\ubd84\ub4e4\uc758 \ud53c\ub4dc\ubc31\uc744 \uc9c4\uc2ec\uc73c\ub85c \uac10\uc0ac\ud558\uac8c \uc0dd\uac01\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.\u00a0issue tracker\u00a0\ub97c \ud1b5\ud574 \uc774 \ube14\ub85c\uadf8 \uac8c\uc2dc\ubb3c\uc5d0 \ub300\ud55c \uc758\uacac \uacf5\uc720\ub97c \ubd80\ud0c1 \ub4dc\ub9bd\ub2c8\ub2e4.\r\n\r\n&nbsp;","protected":false},"excerpt":{"rendered":"TeamCity \uac00 \uad6c\uae00 \ud074\ub77c\uc6b0\ub4dc \uc11c\ube44\uc2a4\uc5d0 \uc644\ubcbd\ud788 \ud1b5\ud569\ub41c\ub2e4\ub294 \uae30\uc05c \uc18c\uc2dd\uc744 \uc54c\ub824 \ub4dc\ub9bd\ub2c8\ub2e4. Google Cloud Agents\u00a0\ud50c\ub7ec\uadf8\uc778\uc744 \uc0ac\uc6a9\ud558\uba74 Google Compute Engine \uc744 \uc0ac\uc6a9\ud558\uc5ec \ud544\uc694\ud55c \uacbd\uc6b0 \ud06c\ub77c\uc6b0\ub4dc \uc778\uc2a4\ud134\ud2b8\ub97c \uc2dc\uc791\ud558\uc5ec cloud build agents\u00a0\ud480\uc744 \ud655\uc7a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \u00a0\ub610\ud55c \ud6a8\uc728\uc801\uc778 \ube44\uc6a9\uc758 preemptible virtual","protected":false},"author":{"name":"JetBrains","link":"https:\/\/blog.jetbrains.com\/ko\/author\/jetbrains"},"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[3991],"tags":[5584,5355],"cross-post-tag":[],"acf":[],"featured_image":null,"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/posts\/33837"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/users\/1152"},{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/users\/1152"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/comments?post=33837"}],"version-history":[{"count":0,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/posts\/33837\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media?parent=33837"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/categories?post=33837"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/tags?post=33837"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/cross-post-tag?post=33837"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}