{"id":47234,"date":"2023-12-16T16:57:41","date_gmt":"2023-12-16T16:57:41","guid":{"rendered":"https:\/\/masterskills.org\/blog\/ci-cd-la-gi-8-loi-ich-cua-ci-cd-mang-lai.html"},"modified":"2023-12-16T16:57:41","modified_gmt":"2023-12-16T16:57:41","slug":"ci-cd-la-gi-8-loi-ich-cua-ci-cd-mang-lai","status":"publish","type":"post","link":"https:\/\/masterskills.org\/blog\/ci-cd-la-gi-8-loi-ich-cua-ci-cd-mang-lai.html","title":{"rendered":"CI CD L\u00e0 G\u00ec? 8 L\u1ee3i \u00cdch C\u1ee7a CI CD Mang L\u1ea1i"},"content":{"rendered":"<div class=\"col\">\n<p><strong>CI CD l\u00e0 g\u00ec?<\/strong> L\u1ee3i \u00edch c\u1ee7a CI CD l\u00e0 g\u00ec? \u0110\u1ec3 gi\u00fap b\u1ea1n hi\u1ec3u r\u00f5 h\u01a1n v\u1ec1 c\u00e1c kh\u00e1i ni\u1ec7m n\u00e0y, c\u0169ng nh\u01b0 c\u00e1c th\u00f4ng tin li\u00ean quan \u0111\u1ebfn CI\/CD, m\u1eddi b\u1ea1n c\u00f9ng tham kh\u1ea3o b\u00e0i vi\u1ebft d\u01b0\u1edbi \u0111\u00e2y c\u1ee7a Masterskills nh\u00e9.<\/p>\n<h2 class=\"wp-block-heading\" id=\"h-ci-cd-la-gi\"><strong>CI CD l\u00e0 g\u00ec?<\/strong><\/h2>\n<p>Tr\u01b0\u1edbc khi t\u00ecm hi\u1ec3u chi ti\u1ebft h\u01a1n, ch\u00fang ta c\u1ea7n hi\u1ec3u h\u01a1n v\u1ec1 c\u00e1c kh\u00e1i ni\u1ec7m CI l\u00e0 g\u00ec, CD l\u00e0 g\u00ec, CI\/CD l\u00e0 g\u00ec.<\/p>\n<h3 class=\"wp-block-heading\"><strong>CI l\u00e0 g\u00ec?<\/strong><\/h3>\n<p>CI hay <strong>Continuous Integration<\/strong> \u0111\u00e2y l\u00e0 m\u1ed9t ph\u01b0\u01a1ng ph\u00e1p ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m, y\u00eau c\u1ea7u c\u00e1c th\u00e0nh vi\u00ean trong team c\u1ea7n t\u00edch h\u1ee3p c\u00f4ng vi\u1ec7c v\u1edbi nhau th\u01b0\u1eddng xuy\u00ean, m\u1ed7i ng\u00e0y c\u1ea7n c\u00f3 t\u1ed1i thi\u1ec3u m\u1ed9t l\u1ea7n t\u00edch h\u1ee3p.<\/p>\n<p>Qua \u0111\u00f3, nh\u1eb1m ph\u00e1t hi\u1ec7n ra nh\u1eefng l\u1ed7i sai nhanh nh\u1ea5t c\u00f3 th\u1ec3. Khi s\u1eed d\u1ee5ng CI s\u1ebd gi\u00fap gi\u1ea3m nh\u1eefng v\u1ea5n \u0111\u1ec1 v\u1ec1 t\u00edch h\u1ee3p v\u00e0 cho ph\u00e9p c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m l\u00e0m vi\u1ec7c nhanh h\u01a1n, hi\u1ec7u qu\u1ea3 h\u01a1n.<\/p>\n<p>CI c\u00f3 quy tr\u00ecnh l\u00e0m vi\u1ec7c nh\u01b0 sau:<\/p>\n<ul>\n<li>C\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m s\u1ebd commit code c\u00f3 th\u1ec3 k\u00e9o l\u00ean repo<\/li>\n<li>Ti\u1ebfp \u0111\u1ebfn, CI server s\u1ebd th\u1ef1c hi\u1ec7n gi\u00e1m s\u00e1t tr\u00ean repo v\u00e0 ki\u1ec3m tra xem c\u00f3 s\u1ef1 thay \u0111\u1ed5i n\u00e0o tr\u00ean repo kh\u00f4ng.<\/li>\n<\/ul>\n<p>CI server s\u1ebd hi\u1ec7n ra ra code m\u1edbi t\u1eeb repo v\u00e0 sau \u0111\u00f3 s\u1ebd build, ch\u1ea1y c\u00e1c unit test v\u00e0 integration test, khi x\u1ea3y ra nh\u1eefng thay \u0111\u1ed5i. Theo theo, CI server t\u1ea1o ra c\u00e1c ph\u1ea3n h\u1ed3i v\u00e0 g\u1eedi t\u1edbi c\u00e1c th\u00e0nh vi\u00ean trong d\u1ef1 \u00e1n v\u00e0 ti\u1ebfp t\u1ee5c ch\u1edd \u0111\u1ee3i nh\u1eefng thay \u0111\u1ed5i t\u1eeb repo.<\/p>\n<p>C\u00e1c l\u1eadp tr\u00ecnh vi\u00ean khi l\u00e0m xong task s\u1ebd ti\u1ebfn h\u00e0nh ch\u1ea1y th\u1eed tr\u00ean local \u0111\u1ec3 ki\u1ec3m tra tr\u01b0\u1edbc khi commit code tr\u00ean repo. C\u00f4ng \u0111o\u1ea1n n\u00e0y th\u01b0\u1eddng di\u1ec5n ra th\u01b0\u1eddng xuy\u00ean t\u1ea1i b\u1ea5t k\u1ef3 m\u1ed9t th\u1eddi \u0111i\u1ec3m n\u00e0o trong ng\u00e0y. Vi\u1ec7c t\u00edch h\u1ee3p n\u00e0y s\u1ebd kh\u00f4ng x\u1ea3y ra n\u1ebfu ch\u00fang kh\u00f4ng \u1ea3nh h\u01b0\u1edfng t\u1edbi repo.<\/p>\n<h3 class=\"wp-block-heading\"><strong>CD l\u00e0 g\u00ec?<\/strong><\/h3>\n<p>CD \u0111\u01b0\u1ee3c vi\u1ebft t\u1eaft t\u1eeb c\u1ee5m <strong>Continuous Delivery<\/strong> \u2013 chuy\u1ec3n giao li\u00ean t\u1ee5c. Qu\u00e1 tr\u00ecnh n\u00e0y ki\u1ec3m tra t\u1ea5t c\u1ea3 nh\u1eefng thay \u0111\u1ed5i v\u1ec1 code \u0111\u00e3 \u0111\u01b0\u1ee3c build v\u00e0 code trong m\u00f4i tr\u01b0\u1eddng ki\u1ec3m th\u1eed. Continuous Delivery cho ph\u00e9p c\u00e1c Dev \u2013 l\u1eadp tr\u00ecnh vi\u00ean t\u1ef1 \u0111\u1ed9ng h\u00f3a ph\u1ea7n m\u1ec1m testing, ki\u1ec3m tra ph\u1ea7n m\u1ec1m qua nhi\u1ec1u th\u01b0\u1edbc \u0111o tr\u01b0\u1edbc khi \u0111\u01b0a v\u00e0o tri\u1ec3n khai.<\/p>\n<p>C\u00e1c b\u00e0i ki\u1ec3m tra bao g\u1ed3m: UI testing, Integration testing, v.v. Quy tr\u00ecnh chuy\u1ec3n giao \u0111\u01b0\u1ee3c CD s\u1eed d\u1ee5ng Deployment Pipeline chia th\u00e0nh c\u00e1c giai \u0111o\u1ea1n. M\u1ed7i giai \u0111o\u1ea1n s\u1ebd c\u00f3 m\u1ed9t m\u1ee5c ti\u00eau \u0111\u1ec3 x\u00e1c minh ch\u1ea5t l\u01b0\u1ee3ng c\u1ee7a c\u00e1c t\u00ednh n\u0103ng t\u1eeb m\u1ed9t g\u00f3c \u0111\u1ed9 kh\u00e1c nh\u1eb1m ki\u1ec3m \u0111\u1ecbnh ch\u1ee9c n\u0103ng v\u00e0 h\u1ea1n ch\u1ebf nh\u1eefng l\u1ed7i ph\u00e1t sinh c\u00f3 th\u1ec3 g\u00e2y \u1ea3nh h\u01b0\u1edfng t\u1edbi tr\u1ea3i nghi\u1ec7m ng\u01b0\u1eddi d\u00f9ng.<\/p>\n<h3 class=\"wp-block-heading\"><strong>CI\/CD l\u00e0 g\u00ec?<\/strong><\/h3>\n<p>CI\/CD \u0111\u01b0\u1ee3c hi\u1ec3u \u0111\u01a1n gi\u1ea3n l\u00e0 qu\u00e1 tr\u00ecnh l\u00e0m vi\u1ec7c li\u00ean t\u1ee5c v\u00e0 t\u1ef1 \u0111\u1ed9ng h\u00f3a c\u1ee7a ph\u1ea7n m\u1ec1m. \u0110\u1ec3 qu\u00e1 t\u00ecnh ki\u1ec3m tra \u0111\u01b0\u1ee3c di\u1ec5n ra li\u00ean t\u1ee5c th\u00ec CI CD c\u1ea7n \u0111\u01b0\u1ee3c t\u00edch h\u1ee3p v\u00e0o v\u00f2ng \u0111\u1eddi ph\u00e1t tri\u1ec3n c\u1ee7a ph\u1ea7n m\u1ec1m.\u00a0<\/p>\n<p>Hi\u1ec7n nay, CI CD \u0111\u00e3 tr\u1edf th\u00e0nh th\u00f4ng l\u1ec7 trong qu\u00e1 tr\u00ecnh ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m, v\u00e0 l\u00e0 y\u1ebfu t\u1ed1 then ch\u1ed1t k\u1ebft h\u1ee3p c\u00e1c kh\u00e2u ki\u1ec3m th\u1eed v\u00e0 ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m l\u1ea1i v\u1edbi nhau.\u00a0<\/p>\n<p>CI\/CD c\u0169ng tr\u1edf th\u00e0nh th\u00f4ng l\u1ec7 t\u1ed1t nh\u1ea5t trong l\u0129nh v\u1ef1c IT gi\u00fap \u1ee9ng d\u1ee5ng c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c ph\u00e1t tri\u1ec3n b\u1ea5t k\u1ef3 th\u1eddi \u0111i\u1ec3m n\u00e0o, v\u00e0 \u0111\u1ea9y m\u00e3 tri\u1ec3n khai \u0111\u00f3 v\u00e0o kho s\u1ea3n xu\u1ea5t khi c\u00f3 m\u00e3 m\u1edbi.<\/p>\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"360\" src=\"https:\/\/masterskills.org\/blog\/wp-content\/uploads\/\/12\/ci-cd-medium.jpg\" alt=\"ci cd l\u00e0 g\u00ec\" class=\"wp-image-27494\" title=\"ci-cd-medium\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"360\" src=\"https:\/\/masterskills.org\/blog\/wp-content\/uploads\/\/12\/ci-cd-medium.jpg\" alt=\"ci cd l\u00e0 g\u00ec\" class=\"wp-image-27494\" title=\"ci-cd-medium\"><figcaption class=\"wp-element-caption\">CI\/CD l\u00e0 qu\u00e1 tr\u00ecnh l\u00e0m vi\u1ec7c li\u00ean t\u1ee5c v\u00e0 t\u1ef1 \u0111\u1ed9ng h\u00f3a c\u1ee7a ph\u1ea7n m\u1ec1m (credit: Medium)<\/figcaption><\/figure>\n<\/div>\n<h2 class=\"wp-block-heading\"><strong>L\u1ee3i \u00edch c\u1ee7a CI CD l\u00e0 g\u00ec?<\/strong><\/h2>\n<p>C\u00f9ng Masterskills t\u00ecm hi\u1ec3u nh\u1eefng l\u1ee3i \u00edch, c\u01a1 h\u1ed9i m\u00e0 CI CD mang l\u1ea1i trong l\u0129nh v\u1ef1c c\u00f4ng ngh\u1ec7 th\u00f4ng tin.<\/p>\n<h3 class=\"wp-block-heading\"><strong>H\u1ea1n ch\u1ebf r\u1ee7i ro<\/strong><\/h3>\n<p>Nh\u1edd vi\u1ec7c ph\u00e1t hi\u1ec7n v\u00e0 s\u1eeda l\u1ed7i s\u1edbm cho ph\u00e9p gi\u1ea3m thi\u1ec3u c\u00e1c r\u1ee7i ro, qua \u0111\u00f3 gi\u00fap n\u00e2ng cao ch\u1ea5t l\u01b0\u1ee3ng s\u1ea3n ph\u1ea9m th\u00f4ng qua kh\u1ea3 n\u0103ng t\u1ef1 \u0111\u1ed9ng ki\u1ec3m tra v\u00e0 quan s\u00e1t.<\/p>\n<p>\u0110\u1ed3ng th\u1eddi, c\u00e1c quy tr\u00ecnh th\u1ee7 c\u00f4ng l\u1eb7p \u0111i l\u1eb7p l\u1ea1i h\u00e0ng ng\u00e0y c\u0169ng \u0111\u01b0\u1ee3c gi\u1ea3m thi\u1ec3u v\u00e0 \u0111\u01b0\u1ee3c thay b\u1eb1ng x\u00e2y d\u1ef1ng v\u00e0 ki\u1ec3m th\u1eed t\u1ef1 \u0111\u1ed9ng.\u00a0<\/p>\n<p>Th\u00eam n\u1eefa CI CD c\u00f3 th\u1ec3 deploy, tri\u1ec3n khai ph\u1ea7n m\u1ec1m t\u1ea1i b\u1ea5t k\u1ef3 th\u1eddi gian n\u00e0o.<\/p>\n<h3 class=\"wp-block-heading\"><strong>Thay \u0111\u1ed5i Code nh\u1ecf<\/strong><\/h3>\n<p>CI CD cho ph\u00e9p t\u00edch h\u1ee3p nhi\u1ec1u lo\u1ea1i m\u00e3 nh\u1ecf c\u00f9ng m\u1ed9t l\u00fac. S\u1ef1 thay \u0111\u1ed5i n\u00e0y \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n m\u1ed9t c\u00e1ch \u0111\u01a1n gi\u1ea3n v\u00e0 x\u1eed l\u00fd nhanh ch\u00f3ng kh\u00f4ng gi\u1ed1ng nh\u01b0 nh\u1eefng \u0111o\u1ea1n m\u00e3 kh\u1ed5ng l\u1ed3. \u0110i\u1ec1u n\u00e0y gi\u00fap h\u1ea1n ch\u1ebf c\u00e1c v\u1ea5n \u0111\u1ec1 ph\u00e1t sinh li\u00ean quan \u0111\u1ebfn vi\u1ec7c thay \u0111\u1ed5i v\u1ec1 sau.<\/p>\n<p>Sau khi \u0111\u01b0\u1ee3c t\u00edch h\u1ee3p v\u00e0o kho m\u00e3, c\u00e1c m\u00e3 n\u00e0y c\u00f3 th\u1ec3 th\u1ef1c hi\u1ec7n ki\u1ec3m tra ngay. Nh\u1edd \u0111\u00f3, c\u00e1c l\u1eadp tr\u00ecnh vi\u00ean c\u00f3 th\u1ec3 nh\u1eadn ra v\u1ea5n \u0111\u1ec1 ngay t\u1eeb s\u1edbm tr\u01b0\u1edbc khi kh\u1ed1i l\u01b0\u1ee3ng c\u00f4ng vi\u1ec7c t\u0103ng l\u00ean. C\u00f3 th\u1ec3 th\u1ea5y \u0111\u00e2y l\u00e0 m\u1ed9t l\u1ee3i th\u1ebf tuy\u1ec7t v\u1eddi cho c\u00e1c nh\u00f3m ph\u00e1t tri\u1ec3n l\u1edbn ho\u1eb7c nh\u1eefng ng\u01b0\u1eddi l\u00e0m vi\u1ec7c t\u1eeb xa giao ti\u1ebfp hi\u1ec7u qu\u1ea3 h\u01a1n.<\/p>\n<h3 class=\"wp-block-heading\"><strong>Gi\u1ea3m thi\u1ec3u \u1ea3nh h\u01b0\u1edfng c\u1ee7a l\u1ed7i hi\u1ec7u qu\u1ea3<\/strong><\/h3>\n<p>CI\/CD \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf v\u00e0o h\u1ec7 th\u1ed1ng sao cho khi c\u00f3 l\u1ed7i x\u1ea3y ra c\u00e1c k\u1ebft qu\u1ea3 ti\u00eau c\u1ef1c s\u1ebd \u0111\u01b0\u1ee3c gi\u1edbi h\u1ea1n trong m\u1ed9t ph\u1ea1m vi \u1ea3nh h\u01b0\u1edfng nh\u1ea5t \u0111\u1ecbnh. \u0110i\u1ec1u n\u00e0y gi\u00fap gi\u1ea3m kh\u1ea3 n\u0103ng h\u01b0 h\u1ecfng v\u00e0 l\u00e0m cho h\u1ec7 th\u1ed1ng \u0111\u01b0\u1ee3c b\u1ea3o tr\u00ec v\u00e0 x\u1eed l\u00fd l\u1ed7i thu\u1eadn l\u1ee3i h\u01a1n.\u00a0<\/p>\n<h3 class=\"wp-block-heading\"><strong>\u0110\u1ea3m b\u1ea3o logic<\/strong><\/h3>\n<p>Quy tr\u00ecnh CI\/CD c\u00f3 ph\u1ea7n ki\u1ec3m tra t\u1ef1 \u0111\u1ed9ng, do \u0111\u00f3 khi l\u1eadp tr\u00ecnh vi\u00ean ph\u00e1t tri\u1ec3n t\u00ednh n\u0103ng m\u1edbi s\u1ebd kh\u00f4ng g\u00e2y \u1ea3nh h\u01b0\u1edfng t\u1edbi t\u00ednh n\u0103ng c\u0169.<\/p>\n<h3 class=\"wp-block-heading\"><strong>T\u1eadp trung c\u00f4ng vi\u1ec7c h\u01a1n<\/strong><\/h3>\n<p>C\u00e1c l\u1eadp tr\u00ecnh vi\u00ean s\u1ebd ph\u1ea3i th\u1ef1c hi\u1ec7n build v\u00e0 deploy ph\u1ea7n m\u1ec1m tr\u00ean c\u1ea3 m\u00e1y t\u00ednh c\u00e1 nh\u00e2n, do quy tr\u00ecnh CI\/CD mang t\u00ednh t\u1ef1 \u0111\u1ed9ng h\u00f3a cao.<\/p>\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/masterskills.org\/blog\/wp-content\/uploads\/\/12\/LoCC9BCCA3i-iCC81ch-cuCC89a-CI-CD-laCC80-giCC80-1024x685-1.jpg\" alt=\"T\u1eadp trung c\u00f4ng vi\u1ec7c h\u01a1n\" class=\"wp-image-27499\" width=\"500\" title=\"LoCC9BCCA3i-iCC81ch-cuCC89a-CI-CD-laCC80-giCC80-1024x685-1\"><img decoding=\"async\" src=\"https:\/\/masterskills.org\/blog\/wp-content\/uploads\/\/12\/LoCC9BCCA3i-iCC81ch-cuCC89a-CI-CD-laCC80-giCC80-1024x685-1.jpg\" alt=\"T\u1eadp trung c\u00f4ng vi\u1ec7c h\u01a1n\" class=\"wp-image-27499\" width=\"500\" title=\"LoCC9BCCA3i-iCC81ch-cuCC89a-CI-CD-laCC80-giCC80-1024x685-1\"><figcaption class=\"wp-element-caption\">CI CD \u0111em l\u1ea1i r\u1ea5t nhi\u1ec1u c\u01a1 h\u1ed9i ph\u00e1t tri\u1ec3n trong qu\u00e1 tr\u00ecnh x\u00e2y d\u1ef1ng ph\u1ea7n m\u1ec1m.<\/figcaption><\/figure>\n<\/div>\n<h3 class=\"wp-block-heading\"><strong>N\u00e2ng cao ch\u1ea5t l\u01b0\u1ee3ng Code th\u00f4ng qua quy tr\u00ecnh<\/strong><\/h3>\n<p>C\u00e1c l\u1eadp tr\u00ecnh vi\u00ean c\u00f3 th\u1ec3 c\u00e0i \u0111\u1eb7t nh\u1eefng r\u00e0ng bu\u1ed9c ngay t\u1eeb \u0111\u00e2u, ch\u1eb3ng h\u1ea1n nh\u01b0 pull request khi t\u1ea1o ra th\u00ec kh\u00f4ng \u0111\u01b0\u1ee3c qu\u00e1 l\u1edbn kh\u00f4ng \u0111\u01b0\u1ee3c qu\u00e1 x s\u1ef1 thay \u0111\u1ed5i, v.v. Qua \u0111\u00f3 gi\u00fap l\u01b0\u1ee3ng pull request \u0111\u01b0\u1ee3c t\u1ed1t h\u01a1n.<\/p>\n<h3 class=\"wp-block-heading\"><strong>Ph\u00e1t tri\u1ec3n k\u1ef9 n\u0103ng unit test cho Developer<\/strong><\/h3>\n<p>Th\u00f4ng qua c\u00e1c ch\u1ec9 s\u1ed1 r\u00e0ng bu\u1ed9c v\u1ec1 code coverage \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t trong quy tr\u00ecnh c\u1ee7a CI\/CD, c\u00e1c l\u1eadp tr\u00ecnh vi\u00ean c\u1ea7n \u00fd th\u1ee9c \u0111\u01b0\u1ee3c t\u1ea7m quan tr\u1ecdng c\u1ee7a c\u00e1c unit test \u0111\u1ec3 kh\u00f4ng l\u00e0m gi\u1ea3m ch\u1ec9 s\u1ed1 code coverage khi ph\u00e1t tri\u1ec3n t\u00ednh n\u0103ng m\u1edbi.<\/p>\n<h3 class=\"wp-block-heading\"><strong>T\u1ed1i \u01b0u t\u1ed1c \u0111\u1ed9 ph\u00e1t tri\u1ec3n c\u1ee7a s\u1ea3n ph\u1ea9m<\/strong><\/h3>\n<p>\u0110i\u1ec1u n\u00e0y \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n th\u00f4ng qua vi\u1ec7c theo d\u00f5i th\u1eddi gian build pipeline.<\/p>\n<h2 class=\"wp-block-heading\"><strong>H\u1ea1n ch\u1ebf c\u1ee7a CI CD l\u00e0 g\u00ec<\/strong><\/h2>\n<p>B\u00ean c\u1ea1nh nh\u1eefng l\u1ee3i \u00edch k\u1ec3 tr\u00ean CI\/CD v\u1eabn c\u00f3 m\u1ed9t v\u00e0i h\u1ea1n ch\u1ebf c\u1ea7n ph\u1ea3i l\u01b0u \u00fd nh\u01b0:<\/p>\n<ul>\n<li>M\u1ed9t d\u1ef1 \u00e1n c\u00f3 s\u1ef1 tham gia c\u1ee7a nhi\u1ec1u Developer s\u1ebd c\u00f3 nhi\u1ec1u pull request \u0111\u01b0\u1ee3c merge v\u00e0o branch. Khi \u0111\u00f3, c\u00e1c th\u00e0nh vi\u00ean ph\u1ea3i ch\u1edd pull request c\u1ee7a ng\u01b0\u1eddi tr\u01b0\u1edbc ho\u00e0n th\u00e0nh, sau \u0111\u00f3 th\u1ef1c hi\u1ec7n c\u1eadp nh\u1eadt l\u1ea1i source code (n\u1ebfu c\u00f3 th\u00f4ng b\u00e1o conflict t\u1eeb Git repository) v\u00e0 c\u1ea7n tr\u1ea3i qua c\u00e1c b\u01b0\u1edbc test l\u1ea1i t\u1eeb \u0111\u1ea7u. \u0110i\u1ec1u n\u00e0y g\u00e2y ra gi\u00e1n \u0111o\u1ea1n th\u1eddi gian ph\u00e1t tri\u1ec3n s\u1ea3n ph\u1ea9m.<\/li>\n<li>Khi s\u1eed d\u1ee5ng d\u1ecbch v\u1ee5 CI\/CD c\u1ee7a b\u00ean d\u1ecbch v\u1ee5 th\u1ee9 3 n\u1ebfu d\u1ecbch \u0111\u00f3 ph\u00e1t sinh v\u1ea5n \u0111\u1ec1 v\u00e0 b\u1ecb crash, b\u1ecb khai t\u1eed th\u00ec c\u00e1c d\u1ef1 \u00e1n \u0111ang \u00e1p d\u1ee5ng CI\/CD c\u0169ng b\u1ecb \u1ea3nh h\u01b0\u1edfng t\u01b0\u01a1ng \u0111\u1ed1i nghi\u00eam tr\u1ecdng.<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\"><strong>CI\/CD trong DevOps l\u00e0 g\u00ec v\u00e0 m\u1ed1i quan h\u1ec7 v\u1edbi Agile<\/strong><\/h2>\n<p>Agile, DevOps v\u00e0 CI\/CD c\u00f3 m\u1ed9t m\u1ed1i quan h\u1ec7 m\u1eadt thi\u1ebft v\u1edbi nhau trong vi\u1ec7c x\u00e2y d\u1ef1ng v\u00e0 ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m.<\/p>\n<p>Team k\u1ef9 thu\u1eadt s\u1ebd b\u1eaft \u0111\u1ea7u c\u00f4ng vi\u1ec7c v\u1edbi CI. DevOps s\u1ebd gi\u00fap c\u00e1c th\u00e0nh vi\u00ean hi\u1ec3u \u0111\u01b0\u1ee3c c\u1ea5u h\u00ecnh c\u00e1ch ph\u1ed1i h\u1ee3p ra sao \u0111\u1ec3 t\u1ea1o ra CD gi\u00e1 tr\u1ecb h\u01a1n. Vi\u1ec7c th\u1ef1c h\u00e0nh CI\/CD trong DevOps v\u00e0o Agile s\u1ebd th\u00fac \u0111\u1ea9y qu\u00e1 tr\u00ecnh ph\u00e1t tri\u1ec3n n\u00e0y.<\/p>\n<p>C\u00e1ch \u0111\u1ec3 ph\u00e2n bi\u1ec7t Agile, DevOps, v\u00e0 CI\/CD:<\/p>\n<ul>\n<li>Agile t\u1eadp trung v\u00e0o quy tr\u00ecnh, l\u00e0m n\u1ed5i b\u1eadt nh\u1eefng thay \u0111\u1ed5i khi \u0111\u1ea9y nhanh qu\u00e1 tr\u00ecnh chuy\u1ec3n giao (CD)<\/li>\n<li>CI\/CD t\u1eadp trung v\u00e0o c\u00f4ng c\u1ee5 l\u00e0m n\u1ed5i b\u1eadt v\u00f2ng \u0111\u1eddi, v\u00e0 nh\u1ea5n m\u1ea1nh s\u1ef1 t\u1ef1 \u0111\u1ed9ng h\u00f3a<\/li>\n<li>DevOps t\u1eadp trung v\u00e0o b\u1ed5 sung c\u00e1c t\u00e0i nguy\u00ean v\u00e0 nh\u00e2n m\u1ea1nh kh\u1ea3 n\u0103ng \u0111\u00e1p \u1ee9ng.<\/li>\n<\/ul>\n<p>CI\/CD l\u00e0 qu\u00e1 tr\u00ecnh l\u00e0m vi\u1ec7c li\u00ean t\u1ee5c v\u00e0 t\u1ef1 \u0111\u1ed9ng. B\u1edfi v\u1eady, \u0111\u1ec3 qu\u00e1 tr\u00ecnh ki\u1ec3m th\u1eed di\u1ec5n ra li\u00ean t\u1ee5c c\u1ea7n t\u00edch h\u1ee3p CI\/CD v\u00e0o v\u00f2ng \u0111\u1eddi ph\u00e1t tri\u1ec3n c\u1ee7a ph\u1ea7n m\u1ec1m.<\/p>\n<p>CI\/CD, DevOps, Agile c\u00f3 m\u1ed1i quan h\u1ec7 h\u1ebft s\u1ee9c m\u1eadt thi\u1ebft trong vi\u1ec7c t\u1ea1o ra m\u1ed9t quy tr\u00ecnh ph\u00e1t tri\u1ec3n v\u00e0 s\u1ea3n xu\u1ea5t ph\u1ea7n m\u1ec1m ho\u00e0n ch\u1ec9nh.<\/p>\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/masterskills.org\/blog\/wp-content\/uploads\/\/12\/CICD-DevOps-Agile-coCC81-moCC82CC81i-quan-heCCA3CC82-maCCA3CC82t-thieCC82CC81t-trong-saCC89n-xuaCC82CC81t-phaCC82CC80n-meCC82CC80m-1024x987-1.jpg\" alt=\"CI\/CD, DevOps, Agile c\u00f3 m\u1ed1i quan h\u1ec7 m\u1eadt thi\u1ebft trong s\u1ea3n xu\u1ea5t ph\u1ea7n m\u1ec1m\" class=\"wp-image-27501\" width=\"500\" title=\"CICD-DevOps-Agile-coCC81-moCC82CC81i-quan-heCCA3CC82-maCCA3CC82t-thieCC82CC81t-trong-saCC89n-xuaCC82CC81t-phaCC82CC80n-meCC82CC80m-1024x987-1\"><img decoding=\"async\" src=\"https:\/\/masterskills.org\/blog\/wp-content\/uploads\/\/12\/CICD-DevOps-Agile-coCC81-moCC82CC81i-quan-heCCA3CC82-maCCA3CC82t-thieCC82CC81t-trong-saCC89n-xuaCC82CC81t-phaCC82CC80n-meCC82CC80m-1024x987-1.jpg\" alt=\"CI\/CD, DevOps, Agile c\u00f3 m\u1ed1i quan h\u1ec7 m\u1eadt thi\u1ebft trong s\u1ea3n xu\u1ea5t ph\u1ea7n m\u1ec1m\" class=\"wp-image-27501\" width=\"500\" title=\"CICD-DevOps-Agile-coCC81-moCC82CC81i-quan-heCCA3CC82-maCCA3CC82t-thieCC82CC81t-trong-saCC89n-xuaCC82CC81t-phaCC82CC80n-meCC82CC80m-1024x987-1\"><figcaption class=\"wp-element-caption\">CI\/CD, DevOps, Agile c\u00f3 m\u1ed1i quan h\u1ec7 m\u1eadt thi\u1ebft trong s\u1ea3n xu\u1ea5t ph\u1ea7n m\u1ec1m<\/figcaption><\/figure>\n<\/div>\n<h2 class=\"wp-block-heading\"><strong>Nguy\u00ean t\u1eafc khi tri\u1ec3n khai quy tr\u00ecnh CI\/CD<\/strong><\/h2>\n<p>Theo chia s\u1ebb c\u1ee7a m\u1ed9t chuy\u00ean gia \u0111\u1ea7u ng\u00e0nh ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m, m\u1ed9t s\u1ed1 nguy\u00ean t\u1eafc tri\u1ec3n khai CI\/CD trong m\u1ed9t t\u1ed5 ch\u1ee9c m\u00e0 b\u1ea1n c\u1ea7n n\u1eafm ch\u1eafc bao g\u1ed3m:<\/p>\n<ul>\n<li>Kh\u00f4ng b\u1eaft bu\u1ed9c t\u1ea5t c\u1ea3 c\u00e1c team trong t\u1ed5 ch\u1ee9c \u00e1p d\u1ee5ng quy tr\u00ecnh CI\/CD. Team n\u00e0o ph\u00f9 h\u1ee3p c\u00f3 th\u1ec3 l\u1ef1a ch\u1ecdn tri\u1ec3n khai tr\u01b0\u1edbc ti\u00ean.<\/li>\n<li>N\u00ean b\u1eaft \u0111\u1ea7u tri\u1ec3n khai c\u00e0ng s\u1edbm c\u00e0ng t\u1ed1t l\u00fac team c\u00f2n ch\u01b0a qu\u00e1 nhi\u1ec1u ng\u01b0\u1eddi hay d\u1ef1 \u00e1n m\u1edbi b\u1eaft \u0111\u1ea7u. C\u00f3 v\u1eady, b\u1ea1n s\u1ebd \u00edt g\u1eb7p kh\u00f3 kh\u0103n h\u01a1n khi \u0111\u01b0a v\u00e0o \u1ee9ng d\u1ee5ng r\u1ed9ng r\u00e3i.<\/li>\n<li>Kh\u00f4ng n\u00ean ng\u1ea7n ng\u1ea1i th\u1eed nhi\u1ec1u b\u00ean \u0111\u1ec3 ch\u1ecdn l\u1ef1a \u0111\u01b0\u1ee3c service ph\u00f9 h\u1ee3p nh\u1ea5t, b\u1edfi s\u1ebd c\u00f3 service ph\u00f9 h\u1ee3p cho team n\u00e0y nh\u01b0ng l\u1ea1i kh\u00f3 \u0111\u00e1p \u1ee9ng \u0111\u01b0\u1ee3c nhu c\u1ea7u c\u1ee7a team kh\u00e1c.\u00a0V\u00ed d\u1ee5: team Mobile s\u1ebd y\u00eau c\u1ea7u b\u00ean service cho ph\u00e9p h\u1ed7 tr\u1ee3 build \u0111\u01b0\u1ee3c tr\u00ean iOS\/Android, c\u00f2n team Backend s\u1ebd c\u00f3 nh\u1eefng y\u00eau c\u1ea7u kh\u00e1c.<\/li>\n<li>N\u00ean \u01b0u ti\u00ean service ph\u00f9 h\u1ee3p v\u1edbi nhi\u1ec1u team, c\u00f3 th\u1ec3 chia s\u1ebb t\u00e0i nguy\u00ean \u0111\u1ec3 t\u1ed1i \u01b0u chi ph\u00ed.<\/li>\n<\/ul>\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/masterskills.org\/blog\/wp-content\/uploads\/\/12\/nguyeCC82n-taCC86CC81c-ci-cd-1024x682-1.jpg\" alt=\"Nguy\u00ean t\u1eafc khi tri\u1ec3n khai quy tr\u00ecnh CI\/CD\" class=\"wp-image-27503\" width=\"500\" title=\"nguyeCC82n-taCC86CC81c-ci-cd-1024x682-1\"><img decoding=\"async\" src=\"https:\/\/masterskills.org\/blog\/wp-content\/uploads\/\/12\/nguyeCC82n-taCC86CC81c-ci-cd-1024x682-1.jpg\" alt=\"Nguy\u00ean t\u1eafc khi tri\u1ec3n khai quy tr\u00ecnh CI\/CD\" class=\"wp-image-27503\" width=\"500\" title=\"nguyeCC82n-taCC86CC81c-ci-cd-1024x682-1\"><figcaption class=\"wp-element-caption\">Nguy\u00ean t\u1eafc khi tri\u1ec3n khai quy tr\u00ecnh CI\/CD.<\/figcaption><\/figure>\n<\/div>\n<h2 class=\"wp-block-heading\"><strong>Ti\u00eau ch\u00ed \u0111\u1ec3 l\u1ef1a ch\u1ecdn service CI\/CD ph\u00f9 h\u1ee3p<\/strong><\/h2>\n<p>C\u00e1c y\u1ebfu t\u1ed1 l\u1ef1a ch\u1ecdn service CI\/CD ph\u00f9 h\u1ee3p:<\/p>\n<ul>\n<li>\u0110\u00e1p \u1ee9ng nhu c\u1ea7u c\u1ee7a m\u00ecnh<\/li>\n<li>Tool t\u1eeb ph\u00eda service cung c\u1ea5p y\u00eau c\u1ea7u d\u1ec5 s\u1eed d\u1ee5ng, n\u1ebfu nh\u00e2n s\u1ef1 kh\u00f4ng qu\u00e1 th\u1ea1o v\u1ec1 CI\/CD<\/li>\n<li>C\u00f3 nhi\u1ec1u l\u1ef1a ch\u1ecdn c\u1ea5u h\u00ecnh v\u00ec c\u1ea5u h\u00ecnh c\u00f3 li\u00ean quan \u0111\u1ebfn build time. \u0110\u00e2y l\u00e0 m\u1ed9t y\u1ebfu t\u1ed1 quan tr\u1ecdng trong quy tr\u00ecnh, build pipeline nhanh nh\u1ea5t c\u00f3 th\u1ec3<\/li>\n<li>L\u1ef1a ch\u1ecdn service ph\u1ed5 bi\u1ebfn, v\u00ec c\u00f3 nhi\u1ec1u ng\u01b0\u1eddi bi\u1ebft c\u00e1ch s\u1eed d\u1ee5ng<\/li>\n<li>Chi ph\u00ed ph\u00f9 h\u1ee3p v\u1edbi ng\u00e2n s\u00e1ch \u0111\u01b0a ra<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\"><strong>T\u1ea1m k\u1ebft<\/strong><\/h2>\n<p>Tr\u00ean \u0111\u00e2y l\u00e0 to\u00e0n b\u1ed9 nh\u1eefng chia s\u1ebb v\u1ec1 CI CD l\u00e0 g\u00ec, c\u0169ng nh\u01b0 c\u00e1c th\u00f4ng tin li\u00ean quan m\u00e0 Masterskills mu\u1ed1n chia s\u1ebb t\u1edbi b\u1ea1n. Hy v\u1ecdng b\u00e0i vi\u1ebft n\u00e0y s\u1ebd cung c\u1ea5p cho b\u1ea1n nhi\u1ec1u gi\u00e1 tr\u1ecb h\u1eefu \u00edch, v\u00e0 c\u00e1c g\u00f3c nh\u00ecn m\u1edbi v\u1ec1 CI\/CD. N\u1ebfu b\u1ea1n c\u00f2n b\u1ea5t k\u1ef3 c\u00e2u h\u1ecfi n\u00e0o, \u0111\u1eebng ng\u1ea7n ng\u1ea1i \u0111\u1ec3 l\u1ea1i b\u00ecnh lu\u1eadn \u0111\u1ec3 \u0111\u01b0\u1ee3c Masterskills gi\u1ea3i \u0111\u00e1p chi ti\u1ebft nh\u00e9.<\/p>\n<p>Theo d\u00f5i Masterskills \u0111\u1ec3 xem th\u00eam nhi\u1ec1u th\u00f4ng tin h\u1eefu \u00edch kh\u00e1c nh\u00e9!<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>CI CD l\u00e0 g\u00ec? L\u1ee3i \u00edch c\u1ee7a CI CD l\u00e0 g\u00ec? \u0110\u1ec3 gi\u00fap b\u1ea1n hi\u1ec3u r\u00f5 h\u01a1n v\u1ec1 c\u00e1c kh\u00e1i ni\u1ec7m n\u00e0y, c\u0169ng nh\u01b0 c\u00e1c th\u00f4ng tin li\u00ean quan \u0111\u1ebfn CI\/CD, m\u1eddi b\u1ea1n c\u00f9ng tham kh\u1ea3o b\u00e0i vi\u1ebft d\u01b0\u1edbi \u0111\u00e2y c\u1ee7a Masterskills nh\u00e9. CI CD l\u00e0 g\u00ec? Tr\u01b0\u1edbc khi t\u00ecm hi\u1ec3u chi ti\u1ebft h\u01a1n, ch\u00fang [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[211],"tags":[],"_links":{"self":[{"href":"https:\/\/masterskills.org\/blog\/wp-json\/wp\/v2\/posts\/47234"}],"collection":[{"href":"https:\/\/masterskills.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/masterskills.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/masterskills.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/masterskills.org\/blog\/wp-json\/wp\/v2\/comments?post=47234"}],"version-history":[{"count":0,"href":"https:\/\/masterskills.org\/blog\/wp-json\/wp\/v2\/posts\/47234\/revisions"}],"wp:attachment":[{"href":"https:\/\/masterskills.org\/blog\/wp-json\/wp\/v2\/media?parent=47234"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/masterskills.org\/blog\/wp-json\/wp\/v2\/categories?post=47234"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/masterskills.org\/blog\/wp-json\/wp\/v2\/tags?post=47234"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}