{"id":71,"date":"2025-04-15T12:38:58","date_gmt":"2025-04-15T03:38:58","guid":{"rendered":"https:\/\/wordpress.koseongnam.com\/?p=71"},"modified":"2025-04-18T10:05:06","modified_gmt":"2025-04-18T01:05:06","slug":"gitlab-%ec%82%ac%ec%9a%a9%eb%b2%95-%ec%b4%88%ea%b8%89-%ec%a4%91%ea%b8%89-%f0%9f%9a%80","status":"publish","type":"post","link":"https:\/\/wordpress.koseongnam.com\/?p=71","title":{"rendered":"GitLab \uc0ac\uc6a9\ubc95 (\ucd08\uae09\/\uc911\uae09) \ud83d\ude80"},"content":{"rendered":"\n<p><strong>\uac15\uc758 \ubaa9\ud45c:<\/strong>&nbsp;\ud83c\udfaf<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>GitLab\uc758 \ud575\uc2ec \uae30\ub2a5\uacfc \uc6cc\ud06c\ud50c\ub85c\uc6b0\ub97c \uc774\ud574\ud558\uace0 \ud65c\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/li>\n\n\n\n<li>\ud504\ub85c\uc81d\ud2b8 \uc0dd\uc131, \ucf54\ub4dc \ubc84\uc804 \uad00\ub9ac, \ud611\uc5c5(\uc774\uc288, \uba38\uc9c0 \ub9ac\ud018\uc2a4\ud2b8)\uc744 GitLab\uc73c\ub85c \uc218\ud589\ud560 \uc218 \uc788\ub2e4.<\/li>\n\n\n\n<li>GitLab CI\/CD\uc758 \uae30\ubcf8 \uac1c\ub150\uc744 \uc774\ud574\ud558\uace0 \uac04\ub2e8\ud55c \ud30c\uc774\ud504\ub77c\uc778\uc744 \uacbd\ud5d8\ud55c\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p><strong>\ub300\uc0c1:<\/strong>&nbsp;\ud83e\uddd1\u200d\ud83d\udcbb<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>GitLab\uc744 \ucc98\uc74c \uc0ac\uc6a9\ud558\uac70\ub098 \uae30\ubcf8\uc801\uc778 \uc0ac\uc6a9\ubc95\uc744 \ubc30\uc6b0\uace0 \uc2f6\uc740 \uac1c\ubc1c\uc790, \uae30\ud68d\uc790, PM \ub4f1<\/li>\n\n\n\n<li>Git \uae30\ubcf8 \uc9c0\uc2dd\uc774 \uc788\ub294 \uc0ac\uc6a9\uc790 (\uad8c\uc7a5 \ud83d\udc4d)<\/li>\n<\/ul>\n\n\n\n<p><strong>\uc900\ube44\ubb3c:<\/strong>&nbsp;\ud83d\udcbb<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uac1c\uc778 \ub178\ud2b8\ubd81<\/li>\n\n\n\n<li>Git \uc124\uce58 (\uc120\ud0dd \uc0ac\ud56d, \ub85c\uceec \uc791\uc5c5 \uc2dc \ud544\uc694)<\/li>\n\n\n\n<li>GitLab.com \uacc4\uc815 (\ubb34\ub8cc \uac00\uc785 \ud83d\udd11)<\/li>\n\n\n\n<li>\uc778\ud130\ub137 \uc5f0\uacb0 \ud83c\udf10<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>\uac15\uc758 \uc2dc\uac04\ud45c (\ucd1d 180\ubd84)<\/strong>&nbsp;\u23f0<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>\uc2dc\uac04 (\ubd84)<\/td><td>\ub0b4\uc6a9<\/td><td>\uc138\ubd80 \ub0b4\uc6a9<\/td><td>\ube44\uace0<\/td><\/tr><tr><td>0:00-0:15 (15\ubd84)<\/td><td><strong>\ud83d\udc4b \uc778\ud2b8\ub85c \ubc0f GitLab \uc18c\uac1c<\/strong><\/td><td>\uac15\uc758 \ubaa9\ud45c, GitLab\uc774\ub780? (DevOps \ud50c\ub7ab\ud3fc), \uc8fc\uc694 \uae30\ub2a5 \uac1c\uc694, GitLab \uc5d0\ub514\uc158 (CE\/EE, SaaS\/Self-managed) \uc18c\uac1c<\/td><td>\uc774\ub860 \uc911\uc2ec \ud83e\udde0<\/td><\/tr><tr><td>0:15-1:05 (50\ubd84)<\/td><td><strong>Module 1: GitLab \uae30\ubcf8 &amp; \ud504\ub85c\uc81d\ud2b8 \uad00\ub9ac \ud83d\udcc1<\/strong><\/td><td>UI \ub458\ub7ec\ubcf4\uae30 (\ub300\uc2dc\ubcf4\ub4dc, \ud504\ub85c\uc81d\ud2b8, \uadf8\ub8f9), \uadf8\ub8f9 vs \ud504\ub85c\uc81d\ud2b8, \ud504\ub85c\uc81d\ud2b8 \uc0dd\uc131\/\uc124\uc815, \uc800\uc7a5\uc18c \ud30c\uc77c \ud0d0\uc0c9, \uba64\ubc84 \uad00\ub9ac<\/td><td><strong>\uc2e4\uc2b5:<\/strong>&nbsp;\ud504\ub85c\uc81d\ud2b8 \uc0dd\uc131 \u2728<\/td><\/tr><tr><td>1:05-1:15 (10\ubd84)<\/td><td><strong>\u2615 \ud734\uc2dd<\/strong><\/td><td><\/td><td><\/td><\/tr><tr><td>1:15-2:05 (50\ubd84)<\/td><td><strong>Module 2: \ubc84\uc804 \uad00\ub9ac &amp; \ud611\uc5c5 (MR) \ud83e\udd1d<\/strong><\/td><td>Git \uc6cc\ud06c\ud50c\ub85c\uc6b0\uc640 GitLab \uc5f0\ub3d9, \uc800\uc7a5\uc18c Clone, \ube0c\ub79c\uce58 \uc0dd\uc131\/\ud478\uc2dc,&nbsp;<strong>\uba38\uc9c0 \ub9ac\ud018\uc2a4\ud2b8 (MR)<\/strong>&nbsp;\uc0dd\uc131\/\ub9ac\ubdf0\/\ubcd1\ud569<\/td><td><strong>\uc2e4\uc2b5:<\/strong>&nbsp;\ucf54\ub4dc \uc218\uc815, MR \uc0dd\uc131 \u2705<\/td><\/tr><tr><td>2:05-2:15 (10\ubd84)<\/td><td><strong>\u2615 \ud734\uc2dd<\/strong><\/td><td><\/td><td><\/td><\/tr><tr><td>2:15-3:00 (45\ubd84)<\/td><td><strong>Module 3: \uc774\uc288 \ud2b8\ub798\ud0b9 &amp; CI\/CD \uae30\ucd08 \ud83e\udd16<\/strong><\/td><td><strong>\uc774\uc288 (Issue)<\/strong>&nbsp;\uc0dd\uc131\/\uad00\ub9ac (\ub77c\ubca8, \ub9c8\uc77c\uc2a4\ud1a4, \ub2f4\ub2f9\uc790), \uc774\uc288 \ubcf4\ub4dc \ud65c\uc6a9,&nbsp;<strong>CI\/CD<\/strong>&nbsp;\uac1c\ub150 \uc18c\uac1c,&nbsp;.gitlab-ci.yml&nbsp;\ud30c\uc77c \uae30\ucd08, \ud30c\uc774\ud504\ub77c\uc778 \ud655\uc778<\/td><td><strong>\uc2e4\uc2b5:<\/strong>&nbsp;\uc774\uc288 \uc0dd\uc131 \ud83d\udccc, CI \ub9db\ubcf4\uae30 \u25b6\ufe0f<\/td><\/tr><tr><td>3:00-3:15 (15\ubd84)<\/td><td><strong>\ud83c\udf89 \ub9c8\ubb34\ub9ac \ubc0f Q&amp;A<\/strong><\/td><td>\uc8fc\uc694 \ub0b4\uc6a9 \ubcf5\uc2b5, \ucd94\uac00 \ud559\uc2b5 \uc790\ub8cc \uc548\ub0b4, \uc9c8\uc758\uc751\ub2f5<\/td><td>\ud83e\udd14<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\uc138\ubd80 \uac15\uc758 \ub0b4\uc6a9<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\ud83d\udc4b \uc778\ud2b8\ub85c \ubc0f GitLab \uc18c\uac1c (15\ubd84)<\/strong><\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\uac15\uc758 \uc18c\uac1c:<\/strong>\n<ul class=\"wp-block-list\">\n<li>\uac15\uc0ac \uc18c\uac1c \ubc0f \uac15\uc758 \ubaa9\ud45c \uacf5\uc720<\/li>\n\n\n\n<li>\ucc38\uc11d\uc790 \uac04\ub2e8 \uc18c\uac1c \ubc0f GitLab \uc0ac\uc6a9 \uacbd\ud5d8 \ud655\uc778 (\uc120\ud0dd)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>GitLab\uc774\ub780? \u2753<\/strong>\n<ul class=\"wp-block-list\">\n<li>\ub2e8\uc21c \ubc84\uc804 \uad00\ub9ac \uc2dc\uc2a4\ud15c \uadf8 \uc774\uc0c1:\u00a0<strong>All-in-one DevOps Platform<\/strong>\u00a0\ud83d\ude80<\/li>\n\n\n\n<li>Source Code Management (SCM), CI\/CD, Issue Tracking, Wiki, Container Registry \ub4f1 \ud1b5\ud569 \uc81c\uacf5<\/li>\n\n\n\n<li>\uac1c\ubc1c \uc0dd\uc0b0\uc131 \ubc0f \ud611\uc5c5 \ud6a8\uc728 \uc99d\ub300 \ud83d\udcc8<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>GitLab \uc8fc\uc694 \uae30\ub2a5 \uac1c\uc694:<\/strong>\u00a0\ud83d\udca1\n<ul class=\"wp-block-list\">\n<li>Projects &amp; Groups: \ucf54\ub4dc \ubc0f \uad00\ub828 \uc791\uc5c5 \uad6c\uc131 \ub2e8\uc704 \ud83d\udcc2<\/li>\n\n\n\n<li>Repository: Git \uc800\uc7a5\uc18c \uad00\ub9ac \ud83d\udcbe<\/li>\n\n\n\n<li>Issues: \uc791\uc5c5 \ucd94\uc801 \ubc0f \uad00\ub9ac (\ubc84\uadf8 \ud83d\udc1b, \uae30\ub2a5 \uc694\uccad \u2728 \ub4f1) \ud83d\udccc<\/li>\n\n\n\n<li>Merge Requests (MRs): \ucf54\ub4dc \ub9ac\ubdf0 \ubc0f \ubcc0\uacbd \uc0ac\ud56d \ubcd1\ud569 \ud504\ub85c\uc138\uc2a4 \ud83e\udd1d<\/li>\n\n\n\n<li>CI\/CD: \ube4c\ub4dc, \ud14c\uc2a4\ud2b8, \ubc30\ud3ec \uc790\ub3d9\ud654 \ud83e\udd16<\/li>\n\n\n\n<li>Wiki, Snippets \ub4f1 \ubd80\uac00 \uae30\ub2a5 \ud83d\udcdd<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>GitLab \uc5d0\ub514\uc158 \ubc0f \ud615\ud0dc:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Community Edition (CE) vs. Enterprise Edition (EE): \uae30\ub2a5 \ucc28\uc774 (\ubb34\ub8cc \ud83c\udd93 vs. \uc720\ub8cc \ud83d\udcb0)<\/li>\n\n\n\n<li>GitLab.com (SaaS) vs. Self-managed (\uc124\uce58\ud615 \ud83d\udda5\ufe0f): \uc6b4\uc601 \uc8fc\uccb4 \ucc28\uc774<\/li>\n\n\n\n<li><em>\ubcf8 \uac15\uc758\ub294 GitLab.com \ubb34\ub8cc \ubc84\uc804\uc744 \uae30\uc900\uc73c\ub85c \uc9c4\ud589<\/em><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Module 1: GitLab \uae30\ubcf8 &amp; \ud504\ub85c\uc81d\ud2b8 \uad00\ub9ac \ud83d\udcc1 (50\ubd84)<\/strong><\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>GitLab UI \ub458\ub7ec\ubcf4\uae30:<\/strong>\u00a0\ud83e\udded\n<ul class=\"wp-block-list\">\n<li>\ub85c\uadf8\uc778 \ud6c4 \uccab \ud654\uba74 (Your Work \/ Explore)<\/li>\n\n\n\n<li>\uc0c1\ub2e8 \uba54\ub274: Projects, Groups, Activity, Milestones \ub4f1<\/li>\n\n\n\n<li>\uc0ac\uc774\ub4dc\ubc14: \uac1c\uc778 \ud504\ub85c\ud544, \uc124\uc815 \ub4f1<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\uadf8\ub8f9 (Groups) vs. \ud504\ub85c\uc81d\ud2b8 (Projects):<\/strong>\n<ul class=\"wp-block-list\">\n<li>\uadf8\ub8f9: \uc5ec\ub7ec \ud504\ub85c\uc81d\ud2b8\ub97c \ubb36\ub294 \ucee8\ud14c\uc774\ub108, \uad8c\ud55c \uad00\ub9ac \uc6a9\uc774 (\uc608: \ud68c\uc0ac \ub0b4 \ud300\ubcc4 \uadf8\ub8f9 \ud83c\udfe2) \ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66<\/li>\n\n\n\n<li>\ud504\ub85c\uc81d\ud2b8: \uac1c\ubcc4 \ucf54\ub4dc \uc800\uc7a5\uc18c \ubc0f \uad00\ub828 \uc791\uc5c5 (\uc774\uc288, MR \ub4f1) \uad00\ub9ac \ub2e8\uc704 \ud83d\udcc4<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\ud504\ub85c\uc81d\ud2b8 \uc0dd\uc131:<\/strong>\u00a0\u2728\n<ul class=\"wp-block-list\">\n<li>New Project\u00a0\ubc84\ud2bc \ud074\ub9ad<\/li>\n\n\n\n<li>\uc635\uc158: Blank project, Create from template, Import project<\/li>\n\n\n\n<li>\ud504\ub85c\uc81d\ud2b8 \uc774\ub984, \uacbd\ub85c(URL),\u00a0<strong>\uac00\uc2dc\uc131 \uc218\uc900 (Private \ud83d\udd12, Internal \ud83c\udfe2, Public \ud83c\udf0d)<\/strong>\u00a0\uc124\uc815 \uc911\uc694!<\/li>\n\n\n\n<li>Initialize repository with a README (\uc120\ud0dd)<\/li>\n\n\n\n<li><strong>(\uc2e4\uc2b5)<\/strong>\u00a0\uac04\ub2e8\ud55c README\ub97c \ud3ec\ud568\ud55c Private \ud504\ub85c\uc81d\ud2b8 \uc0dd\uc131\ud558\uae30<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\ud504\ub85c\uc81d\ud2b8 \ud398\uc774\uc9c0 \ud0d0\uc0c9:<\/strong>\u00a0\ud83d\uddfa\ufe0f\n<ul class=\"wp-block-list\">\n<li>\uc67c\ucabd \uba54\ub274: Repository, Issues, Merge requests, CI\/CD, Settings \ub4f1<\/li>\n\n\n\n<li>Repository > Files: \ucf54\ub4dc \ud30c\uc77c \ud0d0\uc0c9, \ucee4\ubc0b \ud788\uc2a4\ud1a0\ub9ac \ubcf4\uae30, \ube0c\ub79c\uce58 \uc804\ud658 \ud83c\udf3f<\/li>\n\n\n\n<li>Settings > General: \ud504\ub85c\uc81d\ud2b8 \uc774\ub984, \uc124\uba85, \uac00\uc2dc\uc131 \ub4f1 \ubcc0\uacbd \u270f\ufe0f<\/li>\n\n\n\n<li>Settings > Members: \ud504\ub85c\uc81d\ud2b8 \uba64\ubc84 \ucd08\ub300 \ubc0f \uc5ed\ud560(\uad8c\ud55c) \uc124\uc815 (Guest, Reporter, Developer, Maintainer, Owner) \ud83d\udc65<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>(\uac04\ub2e8 \uc2dc\uc5f0\/\uc548\ub0b4)<\/strong>\u00a0\uadf8\ub8f9 \uc0dd\uc131 \ubc0f \uadf8\ub8f9 \ub0b4 \ud504\ub85c\uc81d\ud2b8 \uc0dd\uc131 \ubc29\ubc95<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Module 2: \ubc84\uc804 \uad00\ub9ac &amp; \ud611\uc5c5 (MR) \ud83e\udd1d (50\ubd84)<\/strong><\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Git \uc6cc\ud06c\ud50c\ub85c\uc6b0\uc640 GitLab \uc5f0\ub3d9:<\/strong>\u00a0\ud83d\udd04\n<ul class=\"wp-block-list\">\n<li>\ub85c\uceec PC \ud83d\udcbb \uc5d0\uc11c \uc791\uc5c5 -> Git\uc73c\ub85c \ubc84\uc804 \uad00\ub9ac -> GitLab \uc6d0\uaca9 \uc800\uc7a5\uc18c \u2601\ufe0f \ub85c Push -> \ud611\uc5c5 (MR)<\/li>\n\n\n\n<li>(\uc120\ud0dd) Git \uae30\ubcf8 \uba85\ub839\uc5b4 \ubcf5\uc2b5:\u00a0clone,\u00a0add,\u00a0commit,\u00a0push,\u00a0pull,\u00a0branch,\u00a0checkout<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\uc800\uc7a5\uc18c Clone:<\/strong>\u00a0\ud83d\udce5\n<ul class=\"wp-block-list\">\n<li>\ud504\ub85c\uc81d\ud2b8 \ud398\uc774\uc9c0\u00a0Clone\u00a0\ubc84\ud2bc: HTTPS \/ SSH URL \ubcf5\uc0ac<\/li>\n\n\n\n<li>\ud130\ubbf8\ub110\uc5d0\uc11c\u00a0git clone &lt;\ubcf5\uc0ac\ud55c_URL>\u00a0\uc2e4\ud589<\/li>\n\n\n\n<li>SSH Key \uc124\uc815 \ubc29\ubc95 \uc548\ub0b4 (\uc120\ud0dd \uc0ac\ud56d, \ubcf4\uc548 \uac15\ud654 \ud83d\udd10)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\ucf54\ub4dc \uc218\uc815 \ubc0f Push:<\/strong>\u00a0\ud83d\udcbb\u27a1\ufe0f\u2601\ufe0f\n<ul class=\"wp-block-list\">\n<li><strong>(\uc2e4\uc2b5)<\/strong>\n<ul class=\"wp-block-list\">\n<li>git checkout -b &lt;\uc0c8_\ube0c\ub79c\uce58_\uc774\ub984>\u00a0(\uc608:\u00a0feature\/update-readme) \ud83c\udf3f<\/li>\n\n\n\n<li>README.md \ud30c\uc77c \ub0b4\uc6a9 \uc218\uc815 \ud83d\udcdd<\/li>\n\n\n\n<li>git add README.md<\/li>\n\n\n\n<li>git commit -m &#8220;Update README.md with project description&#8221;<\/li>\n\n\n\n<li>git push origin &lt;\uc0c8_\ube0c\ub79c\uce58_\uc774\ub984><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\uba38\uc9c0 \ub9ac\ud018\uc2a4\ud2b8 (Merge Request, MR):<\/strong>\u00a0\ud83d\ude4f\n<ul class=\"wp-block-list\">\n<li><strong>\ubaa9\uc801:<\/strong>\u00a0\ubcc0\uacbd \uc0ac\ud56d(\ube0c\ub79c\uce58)\uc744 \uba54\uc778 \ube0c\ub79c\uce58(e.g.,\u00a0main\u00a0or\u00a0master)\uc5d0 \ubcd1\ud569\ud558\uae30 \uc804 \ucf54\ub4dc \ub9ac\ubdf0 \ubc0f \ub17c\uc758 \ud83d\udc40<\/li>\n\n\n\n<li><strong>\uc0dd\uc131:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Push \ud6c4 GitLab \ud398\uc774\uc9c0\uc5d0 \ub098\ud0c0\ub098\ub294\u00a0Create merge request\u00a0\ubc84\ud2bc \ud074\ub9ad<\/li>\n\n\n\n<li>\ub610\ub294 \ud504\ub85c\uc81d\ud2b8 > Merge requests >\u00a0New merge request\u00a0\ubc84\ud2bc \ud074\ub9ad<\/li>\n\n\n\n<li>Source branch (\ub0b4 \ube0c\ub79c\uce58) \/ Target branch (\ubcd1\ud569 \ub300\uc0c1 \ube0c\ub79c\uce58, \ubcf4\ud1b5\u00a0main) \uc120\ud0dd<\/li>\n\n\n\n<li><strong>Title \/ Description \uc791\uc131 \uc911\uc694!<\/strong>\u00a0(\ubcc0\uacbd \ub0b4\uc6a9 \uc694\uc57d, \uad00\ub828 \uc774\uc288 \ubc88\ud638 \uc5b8\uae09 \ub4f1) \u270d\ufe0f<\/li>\n\n\n\n<li>Assignee (\ub2f4\ub2f9\uc790), Reviewer (\uac80\ud1a0\uc790), Labels, Milestone \uc9c0\uc815 \uac00\ub2a5<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>(\uc2e4\uc2b5)<\/strong>\u00a0\ubc29\uae08 Push\ud55c \ube0c\ub79c\uce58\uc5d0 \ub300\ud55c MR \uc0dd\uc131\ud558\uae30<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>MR \ub9ac\ubdf0 \ubc0f \ubcd1\ud569:<\/strong>\u00a0\u2705\n<ul class=\"wp-block-list\">\n<li>MR \ud398\uc774\uc9c0: Overview, Commits, Changes \ud0ed \ud655\uc778<\/li>\n\n\n\n<li>Changes \ud0ed: \ucf54\ub4dc \ubcc0\uacbd \ub0b4\uc6a9 \ud655\uc778, \ub77c\uc778\ubcc4 \ucf54\uba58\ud2b8 \uc791\uc131 \uac00\ub2a5 \ud83d\udcac<\/li>\n\n\n\n<li>\ud1a0\ub860(Discussion): MR \uc804\uccb4\uc5d0 \ub300\ud55c \uc758\uacac \uad50\ud658 \ud83d\udde3\ufe0f<\/li>\n\n\n\n<li>(\uc2dc\uc5f0) \ub9ac\ubdf0\uc5b4\uac00 \ucf54\uba58\ud2b8 \ub0a8\uae30\uace0 Approve \ud83d\udc4d \ud558\ub294 \uacfc\uc815<\/li>\n\n\n\n<li><strong>Merge:<\/strong>\u00a0Approve \ud6c4\u00a0Merge\u00a0\ubc84\ud2bc \ud074\ub9ad\ud558\uc5ec \ube0c\ub79c\uce58 \ubcd1\ud569 (\uc635\uc158: Squash commits, Delete source branch)<\/li>\n\n\n\n<li><strong>(\uc2e4\uc2b5)<\/strong>\u00a0\ubcf8\uc778 MR \uc9c1\uc811 Merge \ud558\uae30 (\uc2e4\uc81c \ud611\uc5c5 \uc2dc\uc5d0\ub294 \ub9ac\ubdf0 \ud6c4 Merge)<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Module 3: \uc774\uc288 \ud2b8\ub798\ud0b9 &amp; CI\/CD \uae30\ucd08 \ud83e\udd16 (45\ubd84)<\/strong><\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\uc774\uc288 (Issue):<\/strong>\u00a0\ud83d\udccc\n<ul class=\"wp-block-list\">\n<li><strong>\ubaa9\uc801:<\/strong>\u00a0\ubc84\uadf8 \uc2e0\uace0 \ud83d\udc1b, \uae30\ub2a5 \uc694\uccad \u2728, \uc791\uc5c5 \ud560\ub2f9 \ub4f1 \ud504\ub85c\uc81d\ud2b8 \uad00\ub828 \ubaa8\ub4e0 \ub17c\uc758 \ubc0f \ucd94\uc801<\/li>\n\n\n\n<li><strong>\uc0dd\uc131:<\/strong>\n<ul class=\"wp-block-list\">\n<li>\ud504\ub85c\uc81d\ud2b8 > Issues >\u00a0New issue\u00a0\ubc84\ud2bc \ud074\ub9ad<\/li>\n\n\n\n<li><strong>Title \/ Description \uc791\uc131 \uc911\uc694!<\/strong>\u00a0(Markdown \uc9c0\uc6d0) \u270d\ufe0f<\/li>\n\n\n\n<li>Assignees (\ub2f4\ub2f9\uc790 \ud83e\uddd1\u200d\ud83d\udcbb), Milestone (\ub9b4\ub9ac\uc988\/\uc2a4\ud504\ub9b0\ud2b8 \ud83c\udfc1), Labels (\ubc84\uadf8, \uae30\ub2a5, \ubb38\uc11c \ub4f1 \ubd84\ub958 \ud83c\udff7\ufe0f), Due date \ud83d\udcc5 \uc124\uc815<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>(\uc2e4\uc2b5)<\/strong>\u00a0&#8220;\uc0ac\uc6a9 \uac00\uc774\ub4dc \ubb38\uc11c \uc791\uc131&#8221; \uc774\uc288 \uc0dd\uc131 (\ub2f4\ub2f9\uc790: \ubcf8\uc778, \ub77c\ubca8: documentation)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\uc774\uc288 \uad00\ub9ac:<\/strong>\u00a0\u2699\ufe0f\n<ul class=\"wp-block-list\">\n<li>\ucf54\uba58\ud2b8\ub85c \uc9c4\ud589 \uc0c1\ud669 \uc5c5\ub370\uc774\ud2b8 \ubc0f \ub17c\uc758 \ud83d\udcac<\/li>\n\n\n\n<li><strong>\uc774\uc288 &lt;-> MR \uc5f0\uacb0:<\/strong>\u00a0MR \uc124\uba85\uc774\ub098 \ucee4\ubc0b \uba54\uc2dc\uc9c0\uc5d0\u00a0#&lt;\uc774\uc288\ubc88\ud638>\u00a0\ud3ec\ud568 \uc2dc \uc790\ub3d9 \uc5f0\uacb0\ud83d\udd17<\/li>\n\n\n\n<li><strong>Close Issue:<\/strong>\u00a0\uad00\ub828 MR\uc774 Merge\ub420 \ub54c \uc790\ub3d9\uc73c\ub85c \ub2eb\ud788\ub3c4\ub85d \uc124\uc815 \uac00\ub2a5 (Closes #&lt;\uc774\uc288\ubc88\ud638>) \u2611\ufe0f<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\uc774\uc288 \ubcf4\ub4dc (Issue Boards):<\/strong>\u00a0\ud83d\udcca\n<ul class=\"wp-block-list\">\n<li>\uce78\ubc18(Kanban) \uc2a4\ud0c0\uc77c\uc758 \uc2dc\uac01\uc801 \uc774\uc288 \uad00\ub9ac \ub3c4\uad6c<\/li>\n\n\n\n<li>\ud504\ub85c\uc81d\ud2b8 > Issues > Boards<\/li>\n\n\n\n<li>\uae30\ubcf8 \ubcf4\ub4dc: Open \/ Closed \ub610\ub294 \ub77c\ubca8 \uae30\ubc18 \uceec\ub7fc<\/li>\n\n\n\n<li>(\uc2dc\uc5f0) \uc0c8 \ubaa9\ub85d(\uceec\ub7fc) \ucd94\uac00, \uc774\uc288 \uce74\ub4dc \ub4dc\ub798\uadf8\uc564\ub4dc\ub86d\uc73c\ub85c \uc0c1\ud0dc \ubcc0\uacbd \u27a1\ufe0f<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>GitLab CI\/CD \uc18c\uac1c:<\/strong>\u00a0\ud83e\udd16\ud83d\ude80\n<ul class=\"wp-block-list\">\n<li><strong>CI (Continuous Integration):<\/strong>\u00a0\ucf54\ub4dc \ubcc0\uacbd \uc2dc \uc790\ub3d9\uc73c\ub85c \ube4c\ub4dc \ubc0f \ud14c\uc2a4\ud2b8 \uc218\ud589 \ud83c\udfd7\ufe0f\ud83e\uddea<\/li>\n\n\n\n<li><strong>CD (Continuous Delivery\/Deployment):<\/strong>\u00a0\ud14c\uc2a4\ud2b8 \ud1b5\uacfc \uc2dc \uc790\ub3d9\uc73c\ub85c \ubc30\ud3ec \uc900\ube44 \ub610\ub294 \uc2e4\uc81c \ubc30\ud3ec \ud83d\udce6\u27a1\ufe0f\ud83c\udf0d<\/li>\n\n\n\n<li><strong>\ud575\uc2ec \uc694\uc18c:<\/strong>\n<ul class=\"wp-block-list\">\n<li>.gitlab-ci.yml\u00a0\ud30c\uc77c: \ud30c\uc774\ud504\ub77c\uc778 \uc791\ub3d9 \ubc29\uc2dd \uc815\uc758 (\ud504\ub85c\uc81d\ud2b8 \ub8e8\ud2b8\uc5d0 \uc704\uce58) \ud83d\udcdc<\/li>\n\n\n\n<li><strong>Runner:<\/strong>\u00a0\uc2e4\uc81c CI\/CD \uc791\uc5c5\uc744 \uc218\ud589\ud558\ub294 \uc5d0\uc774\uc804\ud2b8 (GitLab.com \uc81c\uacf5 Shared Runner \uc0ac\uc6a9 \uac00\ub2a5) \ud83c\udfc3\u200d\u2642\ufe0f<\/li>\n\n\n\n<li><strong>Pipeline:<\/strong>\u00a0\uc804\uccb4 CI\/CD \ud504\ub85c\uc138\uc2a4 (\uc5ec\ub7ec Stage\uc640 Job\uc73c\ub85c \uad6c\uc131) \u26d3\ufe0f<\/li>\n\n\n\n<li><strong>Stage:<\/strong>\u00a0\ud30c\uc774\ud504\ub77c\uc778 \ub2e8\uacc4 (\uc608: build, test, deploy)<\/li>\n\n\n\n<li><strong>Job:<\/strong>\u00a0Stage \ub0b4\uc5d0\uc11c \uc2e4\ud589\ub418\ub294 \uac1c\ubcc4 \uc791\uc5c5<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\uac04\ub2e8\ud55c\u00a0.gitlab-ci.yml\u00a0\uc608\uc2dc:<\/strong><code>stages: # \uc2a4\ud14c\uc774\uc9c0 \uc815\uc758 - build - test build_job: # \uccab \ubc88\uc9f8 \uc7a1 (\ube4c\ub4dc \uc2a4\ud14c\uc774\uc9c0 \uc18c\uc18d) \ud83c\udfd7\ufe0f stage: build script: - echo \"Building the project...\" # - \uc2e4\uc81c \ube4c\ub4dc \uba85\ub839\uc5b4 (\uc608: npm run build) test_job: # \ub450 \ubc88\uc9f8 \uc7a1 (\ud14c\uc2a4\ud2b8 \uc2a4\ud14c\uc774\uc9c0 \uc18c\uc18d) \ud83e\uddea stage: test script: - echo \"Running tests...\" # - \uc2e4\uc81c \ud14c\uc2a4\ud2b8 \uba85\ub839\uc5b4 (\uc608: npm test)<\/code>content_copydownloadUse code\u00a0<a href=\"https:\/\/support.google.com\/legal\/answer\/13505487\" target=\"_blank\" rel=\"noreferrer noopener\">with caution<\/a>.Yaml<\/li>\n\n\n\n<li><strong>\ud30c\uc774\ud504\ub77c\uc778 \ud655\uc778:<\/strong>\u00a0\u25b6\ufe0f\n<ul class=\"wp-block-list\">\n<li>\ud504\ub85c\uc81d\ud2b8 > CI\/CD > Pipelines: \ud30c\uc774\ud504\ub77c\uc778 \uc2e4\ud589 \ubaa9\ub85d \ubc0f \uc0c1\ud0dc (Pending \u23f3, Running \ud83c\udfc3, Success \u2705, Failed \u274c) \ud655\uc778<\/li>\n\n\n\n<li>\ucee4\ubc0b \ub610\ub294 MR\uc5d0 \ud45c\uc2dc\ub418\ub294 \ud30c\uc774\ud504\ub77c\uc778 \uc0c1\ud0dc \uc544\uc774\ucf58<\/li>\n\n\n\n<li><strong>(\uc2e4\uc2b5\/\uc2dc\uc5f0)<\/strong>\u00a0\ud504\ub85c\uc81d\ud2b8\uc5d0 \uac04\ub2e8\ud55c\u00a0.gitlab-ci.yml\u00a0\ud30c\uc77c \ucd94\uac00 \ud6c4 \ucee4\ubc0b\/\ud478\uc2dc -> \ud30c\uc774\ud504\ub77c\uc778 \uc2e4\ud589 \ud655\uc778 (Shared Runner \uc0ac\uc6a9 \uc124\uc815 \ud544\uc694 \uc2dc \uc548\ub0b4)<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\ud83c\udf89 \ub9c8\ubb34\ub9ac \ubc0f Q&amp;A (15\ubd84)<\/strong><\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\uc8fc\uc694 \ub0b4\uc6a9 \ubcf5\uc2b5:<\/strong>\u00a0\u2728\n<ul class=\"wp-block-list\">\n<li>GitLab \ud575\uc2ec \uae30\ub2a5: \ud504\ub85c\uc81d\ud2b8 \ud83d\udcc2, \uc800\uc7a5\uc18c \ud83d\udcbe, \uc774\uc288 \ud83d\udccc, MR \ud83e\udd1d, CI\/CD \ud83e\udd16<\/li>\n\n\n\n<li>\uae30\ubcf8 \uc6cc\ud06c\ud50c\ub85c\uc6b0: \ucf54\ub4dc \uc791\uc131 \ud83d\udcbb -> Push \u2601\ufe0f -> MR \uc0dd\uc131 \ud83d\ude4f -> \ub9ac\ubdf0\/\ubcd1\ud569 \u2705 -> \uc774\uc288 \uad00\ub9ac \ud83d\udccc<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\ucd94\uac00 \ud559\uc2b5 \uc790\ub8cc \uc548\ub0b4:<\/strong>\u00a0\ud83d\udcda\n<ul class=\"wp-block-list\">\n<li>GitLab \uacf5\uc2dd \ubb38\uc11c (docs.gitlab.com)<\/li>\n\n\n\n<li>GitLab Learn (learn.gitlab.com)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Q&amp;A:<\/strong>\u00a0\ucc38\uc11d\uc790 \uc9c8\ubb38 \ub2f5\ubcc0 \ud83e\udd14<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>\uac15\uc758 \uc9c4\ud589 Tip:<\/strong>&nbsp;\ud83d\udca1<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc2e4\uc2b5 \uc2dc\uac04\uc744 \ucda9\ubd84\ud788 \ud655\ubcf4\ud558\uace0, \ucc38\uc11d\uc790\ub4e4\uc774 \ub530\ub77c\uc62c \uc218 \uc788\ub3c4\ub85d \uc18d\ub3c4\ub97c \uc870\uc808\ud569\ub2c8\ub2e4. \ud83d\udc22\ud83d\udca8<\/li>\n\n\n\n<li>\uc774\ub860 \uc124\uba85 \ud6c4 \ubc14\ub85c \uad00\ub828 \uc2e4\uc2b5\uc744 \uc9c4\ud589\ud558\uc5ec \uc774\ud574\ub3c4\ub97c \ub192\uc785\ub2c8\ub2e4. \ud83e\udde0\u27a1\ufe0f\ud83d\udd90\ufe0f<\/li>\n\n\n\n<li>\uc2e4\uc2b5 \uc911 \ubc1c\uc0dd\ud558\ub294 \ubb38\uc81c\ub294 \ud568\uaed8 \ud574\uacb0\ud558\uba70 \uc9c4\ud589\ud569\ub2c8\ub2e4. \ud83e\udd1d\ud83c\udd98<\/li>\n\n\n\n<li>\uc2dc\uac04\uc774 \ubd80\uc871\ud560 \uacbd\uc6b0, CI\/CD \ubd80\ubd84\uc740 \uac1c\ub150 \uc124\uba85 \uc704\uc8fc\ub85c \uc9c4\ud589\ud558\uace0 \uac04\ub2e8\ud55c \uc2dc\uc5f0\ub9cc \ubcf4\uc5ec\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n\n\n\n<li>GitLab.com\uc758 UI\ub294 \uc5c5\ub370\uc774\ud2b8\ub420 \uc218 \uc788\uc73c\ubbc0\ub85c \uac15\uc758 \uc804 \ucd5c\uc2e0 UI\ub97c \ud655\uc778\ud569\ub2c8\ub2e4. \ud83d\udc40\u2728<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uac15\uc758 \ubaa9\ud45c:&nbsp;\ud83c\udfaf \ub300\uc0c1:&nbsp;\ud83e\uddd1\u200d\ud83d\udcbb \uc900\ube44\ubb3c:&nbsp;\ud83d\udcbb \uac15\uc758 \uc2dc\uac04\ud45c (\ucd1d 180\ubd84)&nbsp;\u23f0 \uc2dc\uac04 (\ubd84) \ub0b4\uc6a9 \uc138\ubd80 \ub0b4\uc6a9 \ube44\uace0 0:00-0:15 (15\ubd84) \ud83d\udc4b \uc778\ud2b8\ub85c \ubc0f GitLab \uc18c\uac1c \uac15\uc758 \ubaa9\ud45c, GitLab\uc774\ub780? (DevOps \ud50c\ub7ab\ud3fc), \uc8fc\uc694 \uae30\ub2a5 \uac1c\uc694, GitLab \uc5d0\ub514\uc158 (CE\/EE, SaaS\/Self-managed) \uc18c\uac1c \uc774\ub860 \uc911\uc2ec \ud83e\udde0 0:15-1:05 (50\ubd84) Module 1: GitLab \uae30\ubcf8 &amp; \ud504\ub85c\uc81d\ud2b8 \uad00\ub9ac \ud83d\udcc1 UI \ub458\ub7ec\ubcf4\uae30 (\ub300\uc2dc\ubcf4\ub4dc, \ud504\ub85c\uc81d\ud2b8, \uadf8\ub8f9), \uadf8\ub8f9 vs \ud504\ub85c\uc81d\ud2b8, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[5],"tags":[],"class_list":["post-71","post","type-post","status-publish","format-standard","hentry","category-3-24----"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.koseongnam.com\/index.php?rest_route=\/wp\/v2\/posts\/71","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.koseongnam.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.koseongnam.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.koseongnam.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.koseongnam.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=71"}],"version-history":[{"count":2,"href":"https:\/\/wordpress.koseongnam.com\/index.php?rest_route=\/wp\/v2\/posts\/71\/revisions"}],"predecessor-version":[{"id":73,"href":"https:\/\/wordpress.koseongnam.com\/index.php?rest_route=\/wp\/v2\/posts\/71\/revisions\/73"}],"wp:attachment":[{"href":"https:\/\/wordpress.koseongnam.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=71"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.koseongnam.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=71"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.koseongnam.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=71"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}