{"id":23832,"date":"2022-07-22T16:32:13","date_gmt":"2022-07-22T09:32:13","guid":{"rendered":"https:\/\/itviec.com\/blog\/?p=23832"},"modified":"2024-09-28T22:06:56","modified_gmt":"2024-09-28T15:06:56","slug":"ci-cd-la-gi","status":"publish","type":"post","link":"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/","title":{"rendered":"CI\/CD l\u00e0 g\u00ec? L\u1ee3i \u00edch v\u00e0 c\u00e1c nguy\u00ean t\u1eafc tri\u1ec3n khai CI\/CD v\u00e0o quy tr\u00ecnh ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">N\u1ed9i dung b\u00e0i vi\u1ebft<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/#CICD_la_gi\" >CI\/CD l\u00e0 g\u00ec?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/#Su_khac_biet_khi_phat_trien_phan_mem_ap_dung_CICD_la_gi\" >S\u1ef1 kh\u00e1c bi\u1ec7t khi ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m \u00e1p d\u1ee5ng CI\/CD l\u00e0 g\u00ec?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/#Cach_thuc_hoat_dong_cua_CICD\" >C\u00e1ch th\u1ee9c ho\u1ea1t \u0111\u1ed9ng c\u1ee7a CI\/CD<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/#Uu_diem_va_nhuoc_diem_cua_CICD_la_gi\" >\u01afu \u0111i\u1ec3m v\u00e0 nh\u01b0\u1ee3c \u0111i\u1ec3m c\u1ee7a CI\/CD l\u00e0 g\u00ec?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/#Khi_nao_nen_dung_va_khi_nao_khong_nen_dung_quy_trinh_CICD\" >Khi n\u00e0o n\u00ean d\u00f9ng v\u00e0 khi n\u00e0o kh\u00f4ng n\u00ean d\u00f9ng quy tr\u00ecnh CI\/CD?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/#CICD_va_Agile_co_moi_lien_he_ra_sao\" >CI\/CD v\u00e0 Agile c\u00f3 m\u1ed1i li\u00ean h\u1ec7 ra sao?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/#Cac_nguyen_tac_khi_trien_khai_quy_trinh_CICD_cho_to_chuc\" >C\u00e1c nguy\u00ean t\u1eafc khi tri\u1ec3n khai quy tr\u00ecnh CI\/CD cho t\u1ed5 ch\u1ee9c?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/#Kho_khan_hoac_thach_thuc_khi_trien_khai_quy_trinh_CICD_la_gi\" >Kh\u00f3 kh\u0103n ho\u1eb7c th\u00e1ch th\u1ee9c khi tri\u1ec3n khai quy tr\u00ecnh CI\/CD l\u00e0 g\u00ec?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/#Tieu_chi_de_lua_chon_service_CICD_tot_nhat\" >Ti\u00eau ch\u00ed \u0111\u1ec3 l\u1ef1a ch\u1ecdn service CI\/CD t\u1ed1t nh\u1ea5t?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/#Quy_trinh_lam_viec_dien_hinh_theo_mo_hinh_CICD\" >Quy tr\u00ecnh l\u00e0m vi\u1ec7c \u0111i\u1ec3n h\u00ecnh theo m\u00f4 h\u00ecnh CI\/CD<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/#Co_nen_test_tool_CICD_tren_du_an_nho\" >C\u00f3 n\u00ean test tool CI\/CD tr\u00ean d\u1ef1 \u00e1n nh\u1ecf?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/#Tai_lieu_CICD_tham_khao\" >T\u00e0i li\u1ec7u CI\/CD tham kh\u1ea3o<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/#Thong_tin_ve_anh_Nguyen_Truong_Giang\" >Th\u00f4ng tin v\u1ec1 anh Nguy\u1ec5n Tr\u01b0\u1eddng Giang<\/a><\/li><\/ul><\/nav><\/div>\n<p><strong><i>CI\/CD l\u00e0 g\u00ec? CI\/CD l\u00e0 vi\u1ebft t\u1eaft c\u1ee7a <\/i><i>Continuous Integration v\u00e0 Continuous Delivery\/Deployment, \u0111\u01b0\u1ee3c xem nh\u01b0 m\u1ed9t quy tr\u00ecnh ki\u1ec3u m\u1edbi, k\u1ebft h\u1ee3p t\u1ef1 \u0111\u1ed9ng ho\u00e1 gi\u00fap \u0111\u1ea9y nhanh ti\u1ebfn \u0111\u1ed9 ph\u00e1t tri\u1ec3n s\u1ea3n ph\u1ea9m v\u00e0 \u0111\u01b0a s\u1ea3n ph\u1ea9m \u0111\u1ebfn ng\u01b0\u1eddi d\u00f9ng cu\u1ed1i c\u00f9ng.<\/i><\/strong><\/p>\r\n<p><span style=\"font-weight: 400;\">\u0110\u1ec3 hi\u1ec3u r\u00f5 h\u01a1n v\u1ec1 CI\/CD, c\u00e1c nguy\u00ean t\u1eafc tri\u1ec3n khai c\u0169ng nh\u01b0 m\u1ed1i li\u00ean h\u1ec7 gi\u1eefa CI\/CD v\u1edbi Agile trong b\u1ed1i c\u1ea3nh th\u1ef1c t\u1ebf, ITviec \u0111\u00e3 c\u00f3 bu\u1ed5i chia s\u1ebb th\u00fa v\u1ecb v\u1edbi c\u00e1c th\u00f4ng tin \u0111\u1ea7y b\u1ed5 \u00edch c\u00f9ng anh <\/span><b>Nguy\u1ec5n Tr\u01b0\u1eddng Giang &#8211; Mobile Tech Lead<\/b><span style=\"font-weight: 400;\"> t\u1ea1i <\/span><b>Amanotes<\/b><span style=\"font-weight: 400;\"> qua b\u00e0i vi\u1ebft sau \u0111\u00e2y.<\/span><\/p>\r\n<blockquote>\r\n<p>Tham kh\u1ea3o <a href=\"https:\/\/itviec.com\/viec-lam-it\/ci-cd?utm_medium=anchor_text_high&amp;utm_source=blog&amp;utm_campaign=viec_lam_ci_cd&amp;utm_content=ci_cd_la_gi\" target=\"_blank\" rel=\"noopener\">Vi\u1ec7c l\u00e0m CI CD<\/a> tr\u00ean ITviec<\/p>\r\n<p>Tham kh\u1ea3o <a href=\"https:\/\/itviec.com\/nha-tuyen-dung\/amanotes?utm_medium=anchor_text_high&amp;utm_source=blog&amp;utm_campaign=viec_lam_amanotes&amp;utm_content=ci_cd_la_gi\" target=\"_blank\" rel=\"noopener\">Vi\u1ec7c l\u00e0m Amanotes<\/a> tr\u00ean ITviec<\/p>\r\n<\/blockquote>\r\n<h2><span class=\"ez-toc-section\" id=\"CICD_la_gi\"><\/span><strong>CI\/CD l\u00e0 g\u00ec?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\r\n<p><span style=\"font-weight: 400;\">CI l\u00e0 vi\u1ebft t\u1eaft c\u1ee7a Continuous Integration (t\u00edch h\u1ee3p li\u00ean t\u1ee5c), CD l\u00e0 vi\u1ebft t\u1eaft c\u1ee7a Continuous Delivery (chuy\u1ec3n giao li\u00ean t\u1ee5c) ho\u1eb7c Continuous Deployment (tri\u1ec3n khai li\u00ean t\u1ee5c).<\/span><\/p>\r\n<p><span style=\"font-weight: 400;\">Kh\u00e1i ni\u1ec7m CI\/CD th\u01b0\u1eddng \u0111\u1ec1 c\u1eadp \u0111\u1ebfn vi\u1ec7c t\u1ef1 \u0111\u1ed9ng h\u00f3a trong quy tr\u00ecnh ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m v\u00e0 chuy\u1ec3n giao s\u1ea3n ph\u1ea9m, gi\u00fap cho vi\u1ec7c t\u00edch h\u1ee3p di\u1ec5n ra nhanh h\u01a1n v\u00e0 s\u1ea3n ph\u1ea9m ho\u00e0n thi\u1ec7n \u0111\u01b0\u1ee3c chuy\u1ec3n \u0111\u1ebfn ng\u01b0\u1eddi d\u00f9ng trong th\u1eddi gian ng\u1eafn nh\u1ea5t. <\/span><\/p>\r\n<p><span style=\"font-weight: 400;\">Hi\u1ec7n nay, CI\/CD \u0111\u00e3 \u0111\u01b0\u1ee3c \u00e1p d\u1ee5ng r\u1ed9ng r\u00e3i v\u00e0o quy tr\u00ecnh l\u00e0m vi\u1ec7c c\u1ee7a c\u00e1c doanh nghi\u1ec7p l\u00e0m trong l\u0129nh v\u1ef1c IT, song h\u00e0nh c\u00f9ng v\u1edbi DevOps v\u00e0 Agile.<\/span> <span style=\"font-weight: 400;\">M\u1ed9t quy tr\u00ecnh CI\/CD ho\u00e0n ch\u1ec9nh c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c h\u00ecnh dung nh\u01b0 sau:\u00a0<\/span><\/p>\r\n<ol>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Developer commit code (\u0111\u1ea9y code l\u00ean server).<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Quy tr\u00ecnh CI\/CD s\u1ebd t\u1ef1 \u0111\u1ed9ng ch\u1ea1y build, ch\u1ea1y test v\u00e0 deploy s\u1ea3n ph\u1ea9m.<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Ti\u1ebfp t\u1ee5c chuy\u1ec3n giao s\u1ea3n ph\u1ea9m \u0111\u1ebfn ng\u01b0\u1eddi d\u00f9ng.<\/span><\/li>\r\n<\/ol>\r\n<h2><span class=\"ez-toc-section\" id=\"Su_khac_biet_khi_phat_trien_phan_mem_ap_dung_CICD_la_gi\"><\/span><b>S\u1ef1 kh\u00e1c bi\u1ec7t khi ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m \u00e1p d\u1ee5ng CI\/CD l\u00e0 g\u00ec?<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\r\n<p><span style=\"font-weight: 400;\">V\u1edbi m\u1ed9t quy tr\u00ecnh ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m, t\u1ea5t c\u1ea3 c\u00e1c b\u01b0\u1edbc l\u00e0m vi\u1ec7c c\u1ee7a Developer c\u00f3 ph\u1ea7n th\u1ee7 c\u00f4ng v\u00e0 m\u1ea5t kh\u00e1 nhi\u1ec1u th\u1eddi gian. Anh Giang \u0111\u01b0a ra v\u00ed d\u1ee5:<\/span><\/p>\r\n<p><i><span style=\"font-weight: 400;\">Developer sau khi code xong th\u00ec s\u1ebd build tr\u1ef1c ti\u1ebfp tr\u00ean m\u00e1y t\u00ednh\/laptop c\u00e1 nh\u00e2n, sau \u0111\u00f3 ch\u1edd code \u0111\u01b0\u1ee3c build ho\u00e0n t\u1ea5t. Ti\u1ebfp theo \u0111\u00f3, h\u1ecd ph\u1ea3i upload th\u1ee7 c\u00f4ng file n\u00e0y l\u00ean TestFlight v\u00e0 tr\u1ea3i qua 3,4 b\u01b0\u1edbc thao t\u00e1c, r\u1ed3i l\u1ea1i ti\u1ebfp t\u1ee5c ch\u1edd cho \u0111\u1ebfn khi k\u1ebft th\u00fac. File \u0111\u01b0\u1ee3c upload xong h\u1ebft th\u00ec Developer m\u1edbi th\u00f4ng b\u00e1o \u0111\u1ebfn team Tester\/QA QC v\u00e0 l\u00fac n\u00e0y, team m\u1edbi b\u1eaft \u0111\u1ea7u th\u1ef1c hi\u1ec7n c\u00f4ng t\u00e1c ki\u1ec3m th\u1eed cho to\u00e0n b\u1ed9 s\u1ea3n ph\u1ea9m.<\/span><\/i><\/p>\r\n<p><i><span style=\"font-weight: 400;\">N\u1ebfu x\u1ea3y ra sai s\u00f3t th\u00ec quy tr\u00ecnh g\u1ea7n nh\u01b0 s\u1ebd quay l\u1ea1i t\u1eeb \u0111\u1ea7u, th\u1eddi gian ch\u1edd gi\u1eefa 2 b\u00ean Developer v\u00e0 Tester\/QA QC t\u01b0\u01a1ng \u0111\u1ed1i d\u00e0i, khi\u1ebfn cho d\u1ef1 \u00e1n c\u0169ng b\u1ecb tr\u00ec ho\u00e3n theo. \u0110\u00f3 l\u00e0 ch\u01b0a k\u1ec3 \u0111\u1ebfn vi\u1ec7c Developer khi ph\u00e1t tri\u1ec3n m\u1ed9t t\u00ednh n\u0103ng m\u1edbi c\u00f3 th\u1ec3 l\u00e0m h\u1ecfng t\u00ednh n\u0103ng c\u0169 \u0111ang ch\u1ea1y tr\u00ean \u1ee9ng d\u1ee5ng, m\u00e0 ch\u1ec9 khi deploy m\u1edbi ph\u00e1t hi\u1ec7n ra.<\/span><\/i><\/p>\r\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-23836 size-full\" src=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/ci-cd-la-gi-quote.jpg\" alt=\"ci-cd-la-gi-02\" width=\"1600\" height=\"1200\" srcset=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/ci-cd-la-gi-quote.jpg 640w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/ci-cd-la-gi-quote-300x225.jpg 300w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/ci-cd-la-gi-quote-200x150.jpg 200w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/ci-cd-la-gi-quote-768x576.jpg 768w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/ci-cd-la-gi-quote-1536x1152.jpg 1536w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/ci-cd-la-gi-quote-100x75.jpg 100w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/ci-cd-la-gi-quote-600x450.jpg 600w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><\/p>\r\n<p><span style=\"font-weight: 400;\">\u00c1p d\u1ee5ng CI\/CD l\u00e0 c\u00e1ch tri\u1ec7t ti\u00eau hi\u1ec7u qu\u1ea3 c\u00e1c b\u01b0\u1edbc th\u1ee7 c\u00f4ng trong quy tr\u00ecnh ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m\/\u1ee9ng d\u1ee5ng. Vi\u1ec7c c\u1ee7a Developer ch\u1ec9 l\u00e0 commit code, c\u00f2n l\u1ea1i t\u1ea5t c\u1ea3 quy tr\u00ecnh bao g\u1ed3m ch\u1ea1y build, test, deploy s\u1ebd \u0111\u01b0\u1ee3c t\u1ef1 \u0111\u1ed9ng th\u1ef1c hi\u1ec7n ho\u00e0n to\u00e0n b\u1edfi c\u00f4ng c\u1ee5 (tool) CI\/CD. N\u1ebfu c\u00f3 th\u1ec3 k\u1ebft h\u1ee3p th\u00eam v\u1edbi automation test th\u00ec quy tr\u00ecnh s\u1ebd ch\u1eb7t ch\u1ebd v\u00e0 h\u1ea1n ch\u1ebf \u0111\u01b0\u1ee3c t\u1ed1i \u0111a c\u00e1c l\u1ed7i ph\u00e1t sinh (v\u00ed d\u1ee5: l\u1ed7i ph\u00e1t tri\u1ec3n t\u00ednh n\u0103ng m\u1edbi l\u00e0m h\u1ecfng t\u00ednh n\u0103ng c\u0169).<\/span><\/p>\r\n<h2><span class=\"ez-toc-section\" id=\"Cach_thuc_hoat_dong_cua_CICD\"><\/span><strong>C\u00e1ch th\u1ee9c ho\u1ea1t \u0111\u1ed9ng c\u1ee7a CI\/CD<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\r\n<p><span style=\"font-weight: 400;\">Theo anh Giang chia s\u1ebb th\u00ec trong quy tr\u00ecnh CI\/CD t\u1ea1i Amanotes s\u1ebd c\u00f3 s\u1ef1 ph\u1ed1i h\u1ee3p c\u1ee7a (1) l\u00e0 Git repository v\u00e0 (2) l\u00e0 CI\/CD tool.<\/span><\/p>\r\n<p><i><span style=\"font-weight: 400;\">Khi Developer t\u1ea1o ra b\u1ea5t k\u1ef3 s\u1ef1 thay \u0111\u1ed5i tr\u00ean Git repository (v\u00ed d\u1ee5: t\u1ea1o pull request) th\u00ec Git repository s\u1ebd ph\u00e1t \u0111i th\u00f4ng b\u00e1o \u0111\u1ebfn CI\/CD tool l\u00e0 c\u00f3 thay \u0111\u1ed5i nh\u01b0 th\u1ebf. Ph\u1ea3n h\u1ed3i v\u1edbi th\u00f4ng b\u00e1o, ph\u00eda CI\/CD s\u1ebd t\u1ef1 \u0111\u1ed9ng th\u1ef1c hi\u1ec7n c\u00e1c thao t\u00e1c \u0111\u00e3 \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t tr\u01b0\u1edbc \u0111\u00f3 cho h\u00e0nh \u0111\u1ed9ng pull request.\u00a0<\/span><\/i><\/p>\r\n<p><i><span style=\"font-weight: 400;\">Sau khi th\u1ef1c hi\u1ec7n t\u1ea5t c\u1ea3 c\u00e1c l\u1ec7nh \u0111\u00e3 \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t k\u1ec3 tr\u00ean th\u00ec CI\/CD s\u1ebd c\u1eadp nh\u1eadt k\u1ebft qu\u1ea3 ng\u01b0\u1ee3c l\u1ea1i cho Git repository bi\u1ebft l\u00e0 pull request \u0111\u01b0\u1ee3c t\u1ea1o c\u00f3 v\u01b0\u1ee3t qua (pass) h\u1ebft c\u00e1c quy tr\u00ecnh (bao g\u1ed3m testing) ph\u00eda CI\/CD hay kh\u00f4ng.\u00a0<\/span><\/i><\/p>\r\n<p><i><span style=\"font-weight: 400;\">Theo \u0111\u00f3, khi review code, Reviewer ch\u1ec9 c\u1ea7n nh\u00ecn v\u00e0o tr\u1ea1ng th\u00e1i cu\u1ed1i c\u00f9ng c\u1ee7a pull request (passed ho\u1eb7c failed) \u0111\u1ec3 bi\u1ebft pull request \u0111\u00e3 \u0111\u00e1p \u1ee9ng \u0111\u01b0\u1ee3c ch\u1ea5t l\u01b0\u1ee3ng, \u0111\u00e3 t\u1ed1i \u01b0u hay ch\u01b0a.<\/span><\/i><\/p>\r\n<p><span style=\"font-weight: 400;\">Anh Giang nh\u1eadn \u0111\u1ecbnh th\u00eam r\u1eb1ng quy tr\u00ecnh CI\/CD ch\u1ec9 c\u00f3 th\u1ec3 cover m\u1ed9t ph\u1ea7n logic, Developer v\u1eabn ph\u1ea3i d\u00e0nh th\u1eddi gian \u0111\u1ec3 review code th\u1ee7 c\u00f4ng nh\u1eb1m \u0111\u1ea3m b\u1ea3o s\u1ef1 ph\u00f9 h\u1ee3p v\u1edbi ti\u00eau chu\u1ea9n c\u1ee7a c\u1ea3 team, v\u00e0 v\u00ec th\u1ef1c t\u1ebf v\u1eabn c\u00f3 m\u1ed9t s\u1ed1 l\u1ed7i m\u00e0 qu\u00e1 tr\u00ecnh t\u1ef1 \u0111\u1ed9ng (automation) v\u1eabn ch\u01b0a cover h\u1ebft \u0111\u01b0\u1ee3c.<\/span><\/p>\r\n<blockquote>\r\n<p><a href=\"https:\/\/itviec.com\/it-jobs\/developer\/ho-chi-minh-hcm?utm_medium=anchor_text_mid&amp;utm_source=blog&amp;utm_campaign=viec_lam_it_developer_tai_tphcm&amp;utm_content=ci_cd_la_gi\" target=\"_blank\" rel=\"noopener\">Vi\u1ec7c l\u00e0m IT Developer t\u1ea1i TP.HCM<\/a> tr\u00ean ITviec<\/p>\r\n<p><a href=\"https:\/\/itviec.com\/it-jobs\/developer\/ha-noi?utm_medium=anchor_text_mid&amp;utm_source=blog&amp;utm_campaign=viec_lam_it_developer_tai_ha_noi&amp;utm_content=ci_cd_la_gi\" target=\"_blank\" rel=\"noopener\">Vi\u1ec7c l\u00e0m IT Developer t\u1ea1i H\u00e0 N\u1ed9i<\/a> tr\u00ean ITviec<\/p>\r\n<\/blockquote>\r\n<h2><span class=\"ez-toc-section\" id=\"Uu_diem_va_nhuoc_diem_cua_CICD_la_gi\"><\/span><strong>\u01afu \u0111i\u1ec3m v\u00e0 nh\u01b0\u1ee3c \u0111i\u1ec3m c\u1ee7a CI\/CD l\u00e0 g\u00ec?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\r\n<p><span style=\"font-weight: 400;\">Theo tr\u1ea3i nghi\u1ec7m c\u1ee7a b\u1ea3n th\u00e2n, anh Giang chia s\u1ebb m\u1ed9t s\u1ed1 \u01b0u \u0111i\u1ec3m m\u00e0 quy tr\u00ecnh CI\/CD mang l\u1ea1i cho Developer bao g\u1ed3m:<\/span><\/p>\r\n<ul>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Tr\u00e1nh \u0111\u01b0\u1ee3c nh\u1eefng l\u1ed7i kh\u00f4ng \u0111\u00e1ng c\u00f3<\/b><span style=\"font-weight: 400;\">: ch\u1eb3ng h\u1ea1n nh\u01b0 l\u1ed7i compile (khi \u0111\u1ea9y code l\u00ean) ho\u1eb7c c\u00e1c l\u1ed7i ph\u00e1t sinh li\u00ean quan \u0111\u1ebfn m\u00f4i tr\u01b0\u1eddng build s\u1ea3n ph\u1ea9m. <\/span><i><span style=\"font-weight: 400;\">V\u00ed d\u1ee5: khi l\u00e0m th\u1ee7 c\u00f4ng, c\u00f9ng 1 source code nh\u01b0ng s\u1ebd c\u00f3 s\u1ef1 kh\u00e1c bi\u1ec7t khi b\u1ea1n A build tr\u00ean m\u00e1y b\u1ea1n A, b\u1ea1n B build tr\u00ean m\u00e1y b\u1ea1n B.<\/span><\/i><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>\u0110\u1ea3m b\u1ea3o logic <\/b><span style=\"font-weight: 400;\">(v\u00ec quy tr\u00ecnh CI\/CD c\u00f3 ph\u1ea7n automation test), khi Developer x\u00e2y d\u1ef1ng t\u00ednh n\u0103ng m\u1edbi s\u1ebd kh\u00f4ng g\u00e2y \u1ea3nh h\u01b0\u1edfng \u0111\u1ebfn t\u00ednh n\u0103ng c\u0169.<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Gi\u00fap t\u1eadp trung v\u00e0o c\u00f4ng vi\u1ec7c<\/b><span style=\"font-weight: 400;\"> b\u1edfi quy tr\u00ecnh CI\/CD mang t\u00ednh t\u1ef1 \u0111\u1ed9ng cao n\u00ean Developer kh\u00f4ng c\u1ea7n ph\u1ea3i th\u1ef1c hi\u1ec7n vi\u1ec7c build v\u00e0 deploy ph\u1ea7n m\u1ec1m\/\u1ee9ng d\u1ee5ng tr\u00ean m\u00e1y c\u00e1 nh\u00e2n n\u1eefa.<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>N\u00e2ng cao ch\u1ea5t l\u01b0\u1ee3ng code<\/b><span style=\"font-weight: 400;\"> th\u00f4ng qua quy tr\u00ecnh, Developer c\u00f3 th\u1ec3 c\u00e0i \u0111\u1eb7t nh\u1eefng r\u00e0ng bu\u1ed9c ngay t\u1eeb \u0111\u1ea7u. <\/span><i><span style=\"font-weight: 400;\">V\u00ed d\u1ee5: pull request khi \u0111\u01b0\u1ee3c t\u1ea1o ra th\u00ec kh\u00f4ng \u0111\u01b0\u1ee3c qu\u00e1 l\u1edbn, kh\u00f4ng \u0111\u01b0\u1ee3c v\u01b0\u1ee3t qu\u00e1 X thay \u0111\u1ed5i\u2026, \u0111i\u1ec1u n\u00e0y g\u00f3p ph\u1ea7n gi\u00fap ch\u1ea5t l\u01b0\u1ee3ng pull request ng\u00e0y c\u00e0ng t\u1ed1t h\u01a1n.<\/span><\/i><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Ph\u00e1t tri\u1ec3n k\u1ef9 n\u0103ng unit test cho Developer<\/b><span style=\"font-weight: 400;\"> th\u00f4ng qua c\u00e1c ch\u1ec9 s\u1ed1 r\u00e0ng bu\u1ed9c v\u1ec1 code coverage (% code \u0111\u00e3 \u0111\u01b0\u1ee3c cover) \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t trong quy tr\u00ecnh CI\/CD. Ngh\u0129a l\u00e0 khi ph\u00e1t tri\u1ec3n t\u00ednh n\u0103ng m\u1edbi, \u0111\u1ec3 kh\u00f4ng l\u00e0m gi\u1ea3m ch\u1ec9 s\u1ed1 code coverage, Developer ph\u1ea3i \u00fd th\u1ee9c \u0111\u01b0\u1ee3c t\u1ea7m quan tr\u1ecdng c\u1ee7a unit test v\u00e0 ch\u1ee7 \u0111\u1ed9ng h\u1ecdc h\u1ecfi, n\u00e2ng cao c\u00e1c k\u1ef9 n\u0103ng li\u00ean quan.<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>T\u1ed1i \u01b0u t\u1ed1c \u0111\u1ed9 ph\u00e1t tri\u1ec3n c\u1ee7a s\u1ea3n ph\u1ea9m<\/b><span style=\"font-weight: 400;\"> th\u00f4ng qua vi\u1ec7c theo d\u00f5i th\u1eddi gian build pipeline (c\u00e1c b\u01b0\u1edbc ch\u1ea1y test, build, ch\u1ea1y static code analytics (lint check)).<\/span><\/li>\r\n<\/ul>\r\n<p><span style=\"font-weight: 400;\">B\u00ean c\u1ea1nh nh\u1eefng \u01b0u \u0111i\u1ec3m gi\u00fap quy tr\u00ecnh CI\/CD \u0111\u00e1ng \u0111\u01b0\u1ee3c c\u00e2n nh\u1eafc \u0111\u1ec3 \u00e1p d\u1ee5ng trong t\u1ed5 ch\u1ee9c th\u00ec CI\/CD v\u1eabn c\u00f3 nh\u1eefng h\u1ea1n ch\u1ebf c\u1ea7n ph\u1ea3i l\u01b0u \u00fd nh\u01b0:<\/span><\/p>\r\n<ul>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Trong m\u1ed9t d\u1ef1 \u00e1n n\u1ebfu c\u00f3 qu\u00e1 nhi\u1ec1u Developer c\u00f9ng tham gia ph\u00e1t tri\u1ec3n s\u1ea3n ph\u1ea9m, s\u1ebd c\u00f3 th\u1eddi \u0111i\u1ec3m ph\u00e1t sinh nhi\u1ec1u pull request c\u1ea7n \u0111\u01b0\u1ee3c merge v\u00e0o branch. L\u00fac n\u00e0y, c\u00e1c th\u00e0nh vi\u00ean ph\u1ea3i ch\u1edd pull request c\u1ee7a ng\u01b0\u1eddi tr\u01b0\u1edbc \u0111\u01b0\u1ee3c merge ho\u00e0n t\u1ea5t, sau \u0111\u00f3 th\u1ef1c hi\u1ec7n update (c\u1eadp nh\u1eadt) l\u1ea1i source code (trong tr\u01b0\u1eddng h\u1ee3p c\u00f3 th\u00f4ng b\u00e1o conflict t\u1eeb Git repository) v\u00e0 ph\u1ea3i tr\u1ea3i qua c\u00e1c b\u01b0\u1edbc test l\u1ea1i t\u1eeb \u0111\u1ea7u. H\u1ec7 qu\u1ea3 l\u00e0 l\u00e0m <\/span><span style=\"font-weight: 400;\">gi\u00e1n \u0111o\u1ea1n th\u1eddi gian ph\u00e1t tri\u1ec3n s\u1ea3n ph\u1ea9m.<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">V\u00ec s\u1eed d\u1ee5ng d\u1ecbch v\u1ee5 CI\/CD c\u1ee7a b\u00ean service th\u1ee9 3 n\u00ean n\u1ebfu service \u0111\u00f3 g\u1eb7p v\u1ea5n \u0111\u1ec1 v\u00e0 b\u1ecb crash, b\u1ecb khai t\u1eed th\u00ec nh\u1eefng d\u1ef1 \u00e1n \u00e1p d\u1ee5ng CI\/CD c\u0169ng b\u1ecb \u1ea3nh h\u01b0\u1edfng kh\u00e1 nghi\u00eam tr\u1ecdng.<\/span><\/li>\r\n<\/ul>\r\n<h2><span class=\"ez-toc-section\" id=\"Khi_nao_nen_dung_va_khi_nao_khong_nen_dung_quy_trinh_CICD\"><\/span><strong>Khi n\u00e0o n\u00ean d\u00f9ng v\u00e0 khi n\u00e0o kh\u00f4ng n\u00ean d\u00f9ng quy tr\u00ecnh CI\/CD?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\r\n<p><span style=\"font-weight: 400;\">Anh Giang khuy\u1ebfn kh\u00edch c\u00e1c t\u1ed5 ch\u1ee9c n\u00ean \u00e1p d\u1ee5ng quy tr\u00ecnh CI\/CD v\u00e0 vi\u1ec7c t\u00edch h\u1ee3p n\u00ean th\u1ef1c hi\u1ec7n c\u00e0ng s\u1edbm c\u00e0ng t\u1ed1t. Quan \u0111i\u1ec3m c\u1ee7a anh l\u00e0 khi c\u00f3 quy tr\u00ecnh t\u1ed1t th\u00ec ch\u1ea5t l\u01b0\u1ee3ng c\u00f4ng vi\u1ec7c c\u1ee7a Developer c\u0169ng t\u1ed1i \u01b0u h\u01a1n. K\u1ec3 c\u1ea3 khi th\u1ef1c hi\u1ec7n d\u1ef1 \u00e1n theo c\u00e1 nh\u00e2n th\u00ec v\u1eabn n\u00ean t\u00edch h\u1ee3p CI\/CD (c\u00f3 th\u1ec3 l\u1ef1a ch\u1ecdn nh\u1eefng service mi\u1ec5n ph\u00ed) \u0111\u1ec3 t\u1eadn d\u1ee5ng nh\u1eefng \u01b0u \u0111i\u1ec3m \u0111\u00e3 \u0111\u01b0\u1ee3c li\u1ec7t k\u00ea.<\/span><\/p>\r\n<p><span style=\"font-weight: 400;\">Tuy nhi\u00ean, trong m\u1ed9t s\u1ed1 tr\u01b0\u1eddng h\u1ee3p nh\u01b0: t\u1ed5 ch\u1ee9c kh\u00f4ng c\u00f3 ng\u01b0\u1eddi \u0111\u1ee7 kh\u1ea3 n\u0103ng v\u1eadn h\u00e0nh quy tr\u00ecnh CI\/CD, Developer ch\u01b0a l\u00e0m ch\u1ee7 v\u00e0 ch\u01b0a n\u1eafm r\u00f5 v\u1ec1 tool ho\u1eb7c kh\u00f4ng bi\u1ebft l\u00e0m sao \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o quy tr\u00ecnh CI\/CD\u2026 th\u00ec c\u00f3 th\u1ec3 c\u00e2n nh\u1eafc ch\u01b0a s\u1eed d\u1ee5ng. V\u00ec n\u1ebfu c\u00f3 v\u1ea5n \u0111\u1ec1 kh\u00f4ng mong mu\u1ed1n x\u1ea3y ra nh\u01b0ng l\u1ea1i kh\u00f4ng c\u00f3 ng\u01b0\u1eddi \u0111\u1ee7 ki\u1ebfn th\u1ee9c chuy\u00ean m\u00f4n \u0111\u1ec3 x\u1eed l\u00fd th\u00ec s\u1ebd m\u1ea5t r\u1ea5t nhi\u1ec1u th\u1eddi gian, g\u00e2y ra nhi\u1ec1u gi\u00e1n \u0111o\u1ea1n kh\u00f4ng c\u1ea7n thi\u1ebft.<\/span><\/p>\r\n<h2><span class=\"ez-toc-section\" id=\"CICD_va_Agile_co_moi_lien_he_ra_sao\"><\/span><strong>CI\/CD v\u00e0 Agile c\u00f3 m\u1ed1i li\u00ean h\u1ec7 ra sao?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\r\n<p><span style=\"font-weight: 400;\">Theo anh Giang th\u00ec CI\/CD gi\u1ed1ng nh\u01b0 m\u1ed9t quy tr\u00ecnh b\u1ed5 sung, gi\u00fap cho vi\u1ec7c th\u1ef1c hi\u1ec7n Agile t\u1ed1t h\u01a1n. N\u1ebfu nh\u01b0 Agile thi\u00ean v\u1ec1 quy tr\u00ecnh qu\u1ea3n l\u00fd c\u00f4ng vi\u1ec7c th\u00ec CI\/CD l\u1ea1i thi\u00ean v\u1ec1 technical (k\u1ef9 thu\u1eadt), gi\u00fap cho vi\u1ec7c ph\u00e1t tri\u1ec3n s\u1ea3n ph\u1ea9m nhanh ch\u00f3ng h\u01a1n.<\/span><\/p>\r\n<h2><span class=\"ez-toc-section\" id=\"Cac_nguyen_tac_khi_trien_khai_quy_trinh_CICD_cho_to_chuc\"><\/span><strong>C\u00e1c nguy\u00ean t\u1eafc khi tri\u1ec3n khai quy tr\u00ecnh CI\/CD cho t\u1ed5 ch\u1ee9c?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\r\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-23834 size-full\" src=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/ci-cd-la-gi-1.jpg\" alt=\"ci-cd-la-gi-03\" width=\"800\" height=\"600\" srcset=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/ci-cd-la-gi-1.jpg 640w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/ci-cd-la-gi-1-300x225.jpg 300w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/ci-cd-la-gi-1-200x150.jpg 200w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/ci-cd-la-gi-1-768x576.jpg 768w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/ci-cd-la-gi-1-100x75.jpg 100w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/ci-cd-la-gi-1-600x450.jpg 600w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/> <span style=\"font-weight: 400;\">Tu\u1ef3 thu\u1ed9c v\u00e0o t\u1eebng t\u1ed5 ch\u1ee9c, nh\u01b0ng theo anh Giang chia s\u1ebb th\u00ec hi\u1ec7n t\u1ea1i Amanotes \u0111ang \u00e1p d\u1ee5ng nh\u1eefng nguy\u00ean t\u1eafc nh\u01b0 sau:<\/span><\/p>\r\n<ul>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Kh\u00f4ng b\u1eaft bu\u1ed9c to\u00e0n b\u1ed9 c\u00e1c team trong t\u1ed5 ch\u1ee9c \u00e1p d\u1ee5ng quy tr\u00ecnh CI\/CD, n\u1ebfu th\u1ea5y team n\u00e0o ph\u00f9 h\u1ee3p th\u00ec c\u00f3 th\u1ec3 tri\u1ec3n khai \u0111\u1ea7u ti\u00ean.<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">N\u00ean b\u1eaft \u0111\u1ea7u c\u00e0ng s\u1edbm c\u00e0ng t\u1ed1t (l\u00fac team \u00edt ng\u01b0\u1eddi ho\u1eb7c l\u00fac m\u1edbi b\u1eaft \u0111\u1ea7u d\u1ef1 \u00e1n) th\u00ec khi \u0111\u01b0a v\u00e0o \u1ee9ng d\u1ee5ng r\u1ed9ng r\u00e3i s\u1ebd g\u1eb7p \u00edt kh\u00f3 kh\u0103n h\u01a1n.<\/span><\/li>\r\n<\/ul>\r\n<ul>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">\u0110\u1eebng ng\u1ea1i th\u1eed nhi\u1ec1u b\u00ean service \u0111\u1ec3 l\u1ef1a ch\u1ecdn ra \u0111\u01b0\u1ee3c service ph\u00f9 h\u1ee3p nh\u1ea5t v\u00ec s\u1ebd c\u00f3 service ph\u00f9 h\u1ee3p cho team n\u00e0y nh\u01b0ng kh\u00f4ng \u0111\u00e1p \u1ee9ng \u0111\u01b0\u1ee3c nhu c\u1ea7u c\u1ee7a team kh\u00e1c. <\/span><i><span style=\"font-weight: 400;\">V\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.<\/span><\/i><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">N\u00ean l\u1ef1a ch\u1ecdn 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 h\u01a1n.<\/span><\/li>\r\n<\/ul>\r\n<h2><span class=\"ez-toc-section\" id=\"Kho_khan_hoac_thach_thuc_khi_trien_khai_quy_trinh_CICD_la_gi\"><\/span><strong>Kh\u00f3 kh\u0103n ho\u1eb7c th\u00e1ch th\u1ee9c khi tri\u1ec3n khai quy tr\u00ecnh CI\/CD l\u00e0 g\u00ec?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\r\n<p><span style=\"font-weight: 400;\">\u0110i\u1ec1u \u0111\u00e1ng m\u1eebng v\u1edbi anh Giang v\u00e0 team khi tri\u1ec3n khai quy tr\u00ecnh CI\/CD t\u1ea1i Amanotes l\u00e0 h\u1ea7u nh\u01b0 kh\u00f4ng c\u00f3 kh\u00f3 kh\u0103n g\u00ec c\u1ea3. M\u1ed7i team c\u00f3 quy\u1ec1n t\u1ef1 quy\u1ebft \u0111\u1ecbnh service t\u1ed1t nh\u1ea5t v\u00e0 ph\u00f9 h\u1ee3p nh\u1ea5t v\u1edbi team m\u00ecnh n\u00ean c\u0169ng kh\u00f4ng c\u00f3 r\u00e0ng bu\u1ed9c, qu\u00e1 tr\u00ecnh \u0111\u1ec1 xu\u1ea5t v\u1edbi c\u1ea5p tr\u00ean c\u0169ng nhanh ch\u00f3ng v\u00e0 \u0111\u01b0\u1ee3c ch\u1ea5p thu\u1eadn d\u1ec5 d\u00e0ng. Ch\u1ee7 y\u1ebfu \u1edf kho\u1ea3ng th\u1eddi gian \u0111\u1ea7u th\u00ec c\u00e1c team ph\u1ea3i t\u1ed1n th\u1eddi gian test tr\u00ean nhi\u1ec1u service \u0111\u1ec3 ch\u1ecdn ra \u0111\u01b0\u1ee3c \u201c\u1ee9ng c\u1eed vi\u00ean\u201d xu\u1ea5t s\u1eafc nh\u1ea5t.<\/span><\/p>\r\n<p><i><span style=\"font-weight: 400;\">V\u00ed d\u1ee5: L\u00fac \u0111\u1ea7u team anh Giang test tr\u00ean CircleCI v\u00e0 App Center c\u1ee7a Microsoft nh\u01b0ng CircleCI th\u00ec kh\u00f3 s\u1eed d\u1ee5ng c\u00f2n App Center th\u00ec c\u1ea5u h\u00ecnh y\u1ebfu v\u00e0 kh\u00f4ng c\u00f3 l\u1ef1a ch\u1ecdn c\u1ea5u h\u00ecnh, d\u1eabn \u0111\u1ebfn th\u1eddi gian build l\u00e2u. Sau \u0111\u00f3 team chuy\u1ec3n sang test tr\u00ean Bitrise v\u00e0 l\u1ef1a ch\u1ecdn s\u1eed d\u1ee5ng l\u00e2u d\u00e0i.<\/span><\/i><\/p>\r\n<p><span style=\"font-weight: 400;\">Ngo\u00e0i ra, anh Giang c\u0169ng l\u01b0u \u00fd r\u1eb1ng khi anh l\u1ea7n \u0111\u1ea7u th\u00f4ng b\u00e1o v\u1ec1 vi\u1ec7c tri\u1ec3n khai quy tr\u00ecnh CI\/CD, m\u1ed9t s\u1ed1 th\u00e0nh vi\u00ean trong team anh c\u1ea3m th\u1ea5y kh\u00f4ng quen v\u00e0 c\u00f3 ph\u1ea7n h\u01a1i g\u00f2 b\u00f3. Tuy nhi\u00ean, sau khi anh di\u1ec5n gi\u1ea3i v\u1ec1 c\u00e1c \u01b0u \u0111i\u1ec3m c\u0169ng nh\u01b0 nh\u1eefng l\u1ee3i \u00edch m\u00e0 c\u00e1c b\u1ea1n c\u00f3 th\u1ec3 \u0111\u1ea1t \u0111\u01b0\u1ee3c khi \u00e1p d\u1ee5ng quy tr\u00ecnh CI\/CD th\u00ec team c\u0169ng d\u1ea7n c\u1edfi m\u1edf h\u01a1n v\u00e0 h\u00e0o h\u1ee9ng v\u1edbi tool m\u1edbi.\u00a0<\/span><\/p>\r\n<p><i><span style=\"font-weight: 400;\">Ch\u1eb3ng h\u1ea1n: Theo quy tr\u00ecnh CI\/CD th\u00ec k\u1ef9 n\u0103ng code c\u1ee7a b\u1ea1n s\u1ebd t\u1ed1t h\u01a1n, \u00e1p d\u1ee5ng CI\/CD th\u00ec \u0111\u1ee1 m\u1ea5t th\u1eddi gian build v\u00ec \u0111\u00e3 c\u00f3 h\u1ec7 th\u1ed1ng t\u1ef1 \u0111\u1ed9ng\u2026<\/span><\/i><\/p>\r\n<p><span style=\"font-weight: 400;\">T\u1ea5t nhi\u00ean khi m\u1ecdi ng\u01b0\u1eddi \u0111\u1ec1u \u0111\u1ed3ng thu\u1eadn v\u1edbi vi\u1ec7c tri\u1ec3n khai quy tr\u00ecnh CI\/CD th\u00ec c\u1ea3 team c\u0169ng ph\u1ea3i b\u1ecf th\u00eam th\u1eddi gian t\u00ecm t\u00f2i, h\u1ecdc h\u1ecfi, ho\u00e0n thi\u1ec7n d\u1ea7n quy tr\u00ecnh v\u00e0 h\u1ecdc th\u00eam v\u1ec1 unit test\u2026<\/span><\/p>\r\n<h2><span class=\"ez-toc-section\" id=\"Tieu_chi_de_lua_chon_service_CICD_tot_nhat\"><\/span><strong>Ti\u00eau ch\u00ed \u0111\u1ec3 l\u1ef1a ch\u1ecdn service CI\/CD t\u1ed1t nh\u1ea5t?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\r\n<p><span style=\"font-weight: 400;\">Theo anh Giang, tr\u01b0\u1edbc khi l\u1ef1a ch\u1ecdn \u0111\u01b0\u1ee3c service CI\/CD ph\u00f9 h\u1ee3p nh\u1ea5t th\u00ec c\u1ea7n ph\u1ea3i c\u00e2n nh\u1eafc d\u1ef1a tr\u00ean nhi\u1ec1u y\u1ebfu t\u1ed1. V\u1edbi anh, m\u1ee9c \u0111\u1ed9 \u01b0u ti\u00ean c\u1ee7a c\u00e1c y\u1ebfu t\u1ed1 \u0111\u01b0\u1ee3c s\u1eafp x\u1ebfp nh\u01b0 sau:<\/span><\/p>\r\n<ol>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Ph\u1ea3i \u0111\u00e1p \u1ee9ng \u0111\u01b0\u1ee3c nh\u1eefng nhu c\u1ea7u m\u00ecnh c\u1ea7n.<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">N\u1ebfu nh\u00e2n s\u1ef1 kh\u00f4ng qu\u00e1 chuy\u00ean v\u1ec1 CI\/CD th\u00ec tool m\u00e0 ph\u00eda service cung c\u1ea5p y\u00eau c\u1ea7u ph\u1ea3i d\u1ec5 s\u1eed d\u1ee5ng.<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">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 &#8211; y\u1ebfu t\u1ed1 quan tr\u1ecdng trong quy tr\u00ecnh, build pipeline ph\u1ea3i c\u00e0ng nhanh c\u00e0ng t\u1ed1t.<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">L\u1ef1a ch\u1ecdn service c\u00e0ng ph\u1ed5 bi\u1ebfn c\u00e0ng t\u1ed1t v\u00ec nhi\u1ec1u ng\u01b0\u1eddi bi\u1ebft c\u00e1ch s\u1eed d\u1ee5ng. Ch\u1eb3ng h\u1ea1n: Circle CI, <\/span><span style=\"font-weight: 400;\">Bitrise, Gitlab, TeamCity, Github Actions, TravisCI\u2026<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Chi ph\u00ed ph\u00f9 h\u1ee3p v\u1edbi ng\u00e2n s\u00e1ch c\u1ee7a t\u1ed5 ch\u1ee9c. <\/span><i><span style=\"font-weight: 400;\">(\u1ede Amanotes, chi ph\u00ed s\u1eed d\u1ee5ng service CI\/CD quan tr\u1ecdng nh\u01b0ng kh\u00f4ng ph\u1ea3i l\u00e0 y\u1ebfu t\u1ed1 ti\u00ean quy\u1ebft).<\/span><\/i><\/li>\r\n<\/ol>\r\n<h2><span class=\"ez-toc-section\" id=\"Quy_trinh_lam_viec_dien_hinh_theo_mo_hinh_CICD\"><\/span><strong>Quy tr\u00ecnh l\u00e0m vi\u1ec7c \u0111i\u1ec3n h\u00ecnh theo m\u00f4 h\u00ecnh CI\/CD<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\r\n<p><span style=\"font-weight: 400;\">Anh Giang chia s\u1ebb r\u1eb1ng m\u1ed9t quy tr\u00ecnh l\u00e0m vi\u1ec7c v\u1edbi CI\/CD t\u1ea1i Amanotes s\u1ebd g\u1ed3m 2 workflow ch\u00ednh:<\/span><\/p>\r\n<p><strong>(1) Development <\/strong><\/p>\r\n<p><span style=\"font-weight: 400;\">Khi Developer ph\u00e1t tri\u1ec3n m\u1ed9t t\u00ednh n\u0103ng n\u00e0o \u0111\u00f3 th\u00ec h\u1ecd s\u1ebd t\u1ea1o m\u1ed9t branch. Sau khi l\u00e0m xong th\u00ec s\u1ebd t\u1ea1o pull request \u0111\u1ec3 merge branch n\u00e0y v\u00e0o development branch t\u1ed5ng. Trong tr\u01b0\u1eddng h\u1ee3p pull request \u0111\u01b0\u1ee3c kh\u1edfi t\u1ea1o, quy tr\u00ecnh CI\/CD \u0111\u01b0\u1ee3c thi\u1ebft l\u1eadp s\u1eb5n s\u1ebd ch\u1ea1y build, ch\u1ea1y test, ch\u1ea1y lint check v\u00e0 report.<\/span><\/p>\r\n<p><strong>(2) Deployment<\/strong><\/p>\r\n<p><span style=\"font-weight: 400;\">Khi pull request \u0111\u01b0\u1ee3c merge v\u00e0o branch th\u00ec s\u1ebd th\u1ef1c hi\u1ec7n build s\u1ea3n ph\u1ea9m, sau \u0111\u00f3 upload l\u00ean Test Flight cho iOS ho\u1eb7c Fire App Distribution cho Android. Khi quy tr\u00ecnh upload th\u00e0nh c\u00f4ng, s\u1ebd c\u00f3 th\u00f4ng b\u00e1o hi\u1ec3n th\u1ecb qua Slack \u0111\u1ec3 c\u00e1c b\u1ea1n QC bi\u1ebft v\u00e0 l\u00ean TestFlight t\u1ea3i v\u1ec1, ti\u1ebfp t\u1ee5c th\u1ef1c hi\u1ec7n manual test.<\/span><\/p>\r\n<h2><span class=\"ez-toc-section\" id=\"Co_nen_test_tool_CICD_tren_du_an_nho\"><\/span><strong>C\u00f3 n\u00ean test tool CI\/CD tr\u00ean d\u1ef1 \u00e1n nh\u1ecf?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\r\n<p><span style=\"font-weight: 400;\">Nh\u1eadn \u0111\u1ecbnh v\u1ec1 quan \u0111i\u1ec3m <\/span><b><i>\u201cB\u1eaft bu\u1ed9c ph\u1ea3i test th\u1eed tool CI ti\u1ec1m n\u0103ng trong m\u1ed9t d\u1ef1 \u00e1n nh\u1ecf tr\u01b0\u1edbc khi quy\u1ebft \u0111\u1ecbnh s\u1eed d\u1ee5ng v\u00e0 \u0111\u01b0a v\u00e0o to\u00e0n b\u1ed9 h\u1ec7 th\u1ed1ng&#8221;<\/i><\/b><span style=\"font-weight: 400;\">, anh Giang cho r\u1eb1ng anh ho\u00e0n to\u00e0n \u0111\u1ed3ng t\u00ecnh v\u1edbi vi\u1ec7c n\u00ean test tr\u00ean m\u1ed9t (ho\u1eb7c th\u1eadm ch\u00ed nhi\u1ec1u) d\u1ef1 \u00e1n \u0111\u1ec3 ch\u1ecdn \u0111\u01b0\u1ee3c tool v\u00e0 service ph\u00f9 h\u1ee3p cho d\u1ef1 \u00e1n. Tuy nhi\u00ean, vi\u1ec7c d\u1ef1a tr\u00ean k\u1ebft qu\u1ea3 test t\u1eeb d\u1ef1 \u00e1n nh\u1ecf \u0111\u1ec3 \u00e1p d\u1ee5ng cho to\u00e0n b\u1ed9 t\u1ed5 ch\u1ee9c th\u00ec ch\u01b0a h\u1ee3p l\u00fd l\u1eafm v\u00ec \u0111\u1ed9 ph\u1ee9c t\u1ea1p v\u00e0 y\u00eau c\u1ea7u c\u1ee7a t\u1eebng d\u1ef1 \u00e1n kh\u00e1c nhau. M\u1eb7c d\u00f9 v\u1eady, t\u00ednh nhanh ch\u00f3ng v\u00e0 kinh nghi\u1ec7m test tr\u00ean d\u1ef1 \u00e1n nh\u1ecf v\u1eabn l\u00e0 \u0111i\u1ec3m c\u1ed9ng gi\u00fap \u0111\u1ea9y nhanh ti\u1ebfn \u0111\u1ed9 v\u00e0 h\u1ea1n ch\u1ebf sai s\u00f3t khi tri\u1ec3n khai tr\u00ean c\u00e1c d\u1ef1 \u00e1n l\u1edbn h\u01a1n.<\/span><\/p>\r\n<p><span style=\"font-weight: 400;\">Anh Giang g\u1ee3i \u00fd n\u00ean chia theo team \u0111\u1ec3 test c\u00e1c tool v\u00e0 service CI\/CD (v\u00ed d\u1ee5: team Mobile, team NodeJS, team Java\u2026). Theo anh, vi\u1ec7c ph\u00e2n chia testing t\u1eebng team d\u1ef1a tr\u00ean ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh s\u1ebd kh\u1ea3 thi v\u00e0 \u00edt x\u1ea3y ra l\u1ed7i h\u01a1n so v\u1edbi vi\u1ec7c ch\u1ec9 d\u1ef1a v\u00e0o quy m\u00f4 d\u1ef1 \u00e1n \u0111\u1ec3 quy\u1ebft \u0111\u1ecbnh.<\/span><\/p>\r\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-23838 size-full\" src=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/220720_LAB_RETOUCH_hi\u0300nh-anh-Giang_3.jpg\" alt=\"ci-cd-la-gi-04\" width=\"2110\" height=\"1688\" srcset=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/220720_LAB_RETOUCH_hi\u0300nh-anh-Giang_3.jpg 640w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/220720_LAB_RETOUCH_hi\u0300nh-anh-Giang_3-300x240.jpg 300w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/220720_LAB_RETOUCH_hi\u0300nh-anh-Giang_3-200x160.jpg 200w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/220720_LAB_RETOUCH_hi\u0300nh-anh-Giang_3-100x80.jpg 100w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/220720_LAB_RETOUCH_hi\u0300nh-anh-Giang_3-563x450.jpg 563w\" sizes=\"auto, (max-width: 2110px) 100vw, 2110px\" \/><\/p>\r\n<p style=\"text-align: center;\"><em>Anh Giang c\u00f9ng c\u00e1c \u0111\u1ed3ng nghi\u1ec7p t\u1ea1i Amanotes<\/em><\/p>\r\n<h2><span class=\"ez-toc-section\" id=\"Tai_lieu_CICD_tham_khao\"><\/span><strong>T\u00e0i li\u1ec7u CI\/CD tham kh\u1ea3o<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\r\n<p><span style=\"font-weight: 400;\">Anh Giang cho bi\u1ebft c\u00e1c b\u00ean service CI\/CD s\u1ebd cung c\u1ea5p t\u00e0i li\u1ec7u, k\u00e8m h\u01b0\u1edbng d\u1eabn \u0111\u1ea7y \u0111\u1ee7, chi ti\u1ebft v\u1ec1 c\u00e1c thao t\u00e1c s\u1eed d\u1ee5ng li\u00ean quan n\u00ean trong qu\u00e1 tr\u00ecnh tham kh\u1ea3o \u0111\u1ec3 l\u1ef1a ch\u1ecdn service ph\u00f9 h\u1ee3p cho t\u1ed5 ch\u1ee9c, b\u1ea1n c\u00f3 th\u1ec3 tham kh\u1ea3o tr\u01b0\u1edbc \u0111\u1ec3 c\u00f3 th\u00eam nh\u1eadn \u0111\u1ecbnh.<\/span> <span style=\"font-weight: 400;\">Anh \u0111\u00e1nh gi\u00e1 cao t\u00e0i li\u1ec7u \u0111\u01b0\u1ee3c chu\u1ea9n b\u1ecb b\u1edfi Bitrise (service CI\/CD m\u00e0 Amanotes \u0111ang s\u1eed d\u1ee5ng) b\u1edfi UI UX th\u00e2n thi\u1ec7n v\u00e0 d\u1ec5 s\u1eed d\u1ee5ng. Ngo\u00e0i ra, anh c\u0169ng g\u1ee3i \u00fd th\u00eam m\u1ed9t s\u1ed1 t\u00e0i li\u1ec7u t\u1eeb c\u00e1c service uy t\u00edn ngay b\u00ean d\u01b0\u1edbi:<\/span><\/p>\r\n<ul>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/devcenter.bitrise.io\/\"><span style=\"font-weight: 400;\">https:\/\/devcenter.bitrise.io\/<\/span><\/a><span style=\"font-weight: 400;\">\u00a0<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/circleci.com\/docs\/migrating-from-buildkite\"><span style=\"font-weight: 400;\">https:\/\/circleci.com\/docs\/migrating-from-buildkite<\/span><\/a><span style=\"font-weight: 400;\">\u00a0<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/docs.gitlab.com\/ee\/ci\/\"><span style=\"font-weight: 400;\">https:\/\/docs.gitlab.com\/ee\/ci\/<\/span><\/a><\/li>\r\n<\/ul>\r\n<h2><span class=\"ez-toc-section\" id=\"Thong_tin_ve_anh_Nguyen_Truong_Giang\"><\/span><strong>Th\u00f4ng tin v\u1ec1 anh Nguy\u1ec5n Tr\u01b0\u1eddng Giang<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\r\n<p><span style=\"font-weight: 400;\">Anh Giang \u0111\u00e3 c\u00f3 h\u01a1n 10 n\u0103m kinh nghi\u1ec7m trong l\u0129nh v\u1ef1c ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng Mobile (Mobile development) v\u00e0 hi\u1ec7n t\u1ea1i \u0111ang gi\u1eef v\u1ecb tr\u00ed Mobile Tech Lead t\u1ea1i Amanotes k\u1ec3 t\u1eeb n\u0103m 2020.<\/span> <span style=\"font-weight: 400;\">Tr\u01b0\u1edbc \u0111\u00f3, anh c\u0169ng t\u1eebng g\u1eafn b\u00f3 v\u1edbi nhi\u1ec1u c\u00f4ng ty l\u1edbn nh\u01b0 TIKI, Umbala, eSoftHead \u1edf nhi\u1ec1u c\u01b0\u01a1ng v\u1ecb nh\u01b0 Android Lead, Senior Android Developer\u2026<\/span><\/p>\r\n<p><span style=\"font-weight: 400;\">T\u00ednh \u0111\u1ebfn nay anh \u0111\u00e3 l\u00e0m vi\u1ec7c theo quy tr\u00ecnh CI\/CD \u0111\u01b0\u1ee3c h\u01a1n 6 n\u0103m. V\u1ed1n hi\u1ec3u bi\u1ebft phong ph\u00fa c\u00f9ng nh\u1eefng tr\u1ea3i nghi\u1ec7m th\u1ef1c chi\u1ebfn qua th\u1eddi gian \u0111\u00e3 \u0111\u00fac k\u1ebft n\u00ean nh\u1eefng chia s\u1ebb trong b\u00e0i vi\u1ebft.<\/span><\/p>\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"300\" class=\"wp-image-5668 aligncenter\" src=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2015\/07\/Robby2.png\" alt=\"robby-2\" srcset=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2015\/07\/Robby2.png 300w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2015\/07\/Robby2-200x200.png 200w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2015\/07\/Robby2-60x60.png 60w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/figure>\r\n<\/div>\r\n<!-- \/wp:post-content -->\r\n\r\n<!-- wp:paragraph {\"align\":\"center\"} -->\r\n<p id=\"block-bdf220a1-3635-4794-9101-81d879939b92\" class=\"has-text-align-center\" style=\"text-align: center;\"><strong>B\u1ea1n th\u1ea5y b\u00e0i vi\u1ebft hay v\u00e0 c\u1ea7n thi\u1ebft v\u1edbi nhi\u1ec1u ng\u01b0\u1eddi? \u0110\u1eebng ng\u1ea1i nh\u1ea5n n\u00fat Share b\u00ean d\u01b0\u1edbi nh\u00e9.<\/strong><\/p>\r\n<p class=\"has-text-align-center\" style=\"text-align: center;\"><strong>V\u00e0 \u0111\u1eebng qu\u00ean tham kh\u1ea3o <a href=\"https:\/\/itviec.com\/viec-lam-it\/ci-cd?utm_medium=anchor_text_low&amp;utm_source=blog&amp;utm_campaign=viec_lam_ci_cd&amp;utm_content=ci_cd_la_gi\" target=\"_blank\" rel=\"noopener\">vi\u1ec7c l\u00e0m CI CD<\/a> tr\u00ean ITviec<\/strong>!<\/p>\r\n<p style=\"text-align: center;\"><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:paragraph {\"align\":\"center\"} --><\/p>","protected":false},"excerpt":{"rendered":"<p>CI\/CD l\u00e0 g\u00ec? CI\/CD l\u00e0 vi\u1ebft t\u1eaft c\u1ee7a Continuous Integration v\u00e0 Continuous Delivery\/Deployment, \u0111\u01b0\u1ee3c xem nh\u01b0 m\u1ed9t quy tr\u00ecnh ki\u1ec3u m\u1edbi, k\u1ebft h\u1ee3p t\u1ef1 \u0111\u1ed9ng ho\u00e1 gi\u00fap \u0111\u1ea9y nhanh ti\u1ebfn \u0111\u1ed9 ph\u00e1t tri\u1ec3n s\u1ea3n ph\u1ea9m v\u00e0 \u0111\u01b0a s\u1ea3n ph\u1ea9m \u0111\u1ebfn ng\u01b0\u1eddi d\u00f9ng cu\u1ed1i c\u00f9ng. \u0110\u1ec3 hi\u1ec3u r\u00f5 h\u01a1n v\u1ec1 CI\/CD, c\u00e1c nguy\u00ean t\u1eafc tri\u1ec3n khai [&hellip;]<\/p>\n","protected":false},"author":87,"featured_media":23837,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_gspb_post_css":"","footnotes":""},"categories":[109],"tags":[],"class_list":["post-23832","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-chuyen-mon-it"],"blocksy_meta":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.8 (Yoast SEO v27.8) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>CI CD l\u00e0 g\u00ec? C\u00e1c nguy\u00ean t\u1eafc khi tri\u1ec3n khai quy tr\u00ecnh CI CD<\/title>\n<meta name=\"description\" content=\"CI\/CD l\u00e0 g\u00ec? CI\/CD l\u00e0 vi\u1ebft t\u1eaft c\u1ee7a Continuous Integration v\u00e0 Continuous Delivery\/Deployment, \u0111\u01b0\u1ee3c xem nh\u01b0 m\u1ed9t quy tr\u00ecnh ki\u1ec3u m\u1edbi, k\u1ebft h\u1ee3p...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CI\/CD l\u00e0 g\u00ec? L\u1ee3i \u00edch v\u00e0 c\u00e1c nguy\u00ean t\u1eafc tri\u1ec3n khai CI\/CD v\u00e0o quy tr\u00ecnh ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m\" \/>\n<meta property=\"og:description\" content=\"CI\/CD l\u00e0 g\u00ec? CI\/CD l\u00e0 vi\u1ebft t\u1eaft c\u1ee7a Continuous Integration v\u00e0 Continuous Delivery\/Deployment, \u0111\u01b0\u1ee3c xem nh\u01b0 m\u1ed9t quy tr\u00ecnh ki\u1ec3u m\u1edbi, k\u1ebft h\u1ee3p t\u1ef1 \u0111\u1ed9ng ho\u00e1 gi\u00fap\" \/>\n<meta property=\"og:url\" content=\"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/\" \/>\n<meta property=\"og:site_name\" content=\"ITviec Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ITviec\" \/>\n<meta property=\"article:published_time\" content=\"2022-07-22T09:32:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-28T15:06:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/ci-cd-la-gi-thumbnail.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"337\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Tinh To\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ITviec\" \/>\n<meta name=\"twitter:site\" content=\"@ITviec\" \/>\n<meta name=\"twitter:label1\" content=\"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tinh To\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 ph\u00fat\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"CI CD l\u00e0 g\u00ec? C\u00e1c nguy\u00ean t\u1eafc khi tri\u1ec3n khai quy tr\u00ecnh CI CD","description":"CI\/CD l\u00e0 g\u00ec? CI\/CD l\u00e0 vi\u1ebft t\u1eaft c\u1ee7a Continuous Integration v\u00e0 Continuous Delivery\/Deployment, \u0111\u01b0\u1ee3c xem nh\u01b0 m\u1ed9t quy tr\u00ecnh ki\u1ec3u m\u1edbi, k\u1ebft h\u1ee3p...","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/","og_locale":"vi_VN","og_type":"article","og_title":"CI\/CD l\u00e0 g\u00ec? L\u1ee3i \u00edch v\u00e0 c\u00e1c nguy\u00ean t\u1eafc tri\u1ec3n khai CI\/CD v\u00e0o quy tr\u00ecnh ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m","og_description":"CI\/CD l\u00e0 g\u00ec? CI\/CD l\u00e0 vi\u1ebft t\u1eaft c\u1ee7a Continuous Integration v\u00e0 Continuous Delivery\/Deployment, \u0111\u01b0\u1ee3c xem nh\u01b0 m\u1ed9t quy tr\u00ecnh ki\u1ec3u m\u1edbi, k\u1ebft h\u1ee3p t\u1ef1 \u0111\u1ed9ng ho\u00e1 gi\u00fap","og_url":"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/","og_site_name":"ITviec Blog","article_publisher":"https:\/\/www.facebook.com\/ITviec","article_published_time":"2022-07-22T09:32:13+00:00","article_modified_time":"2024-09-28T15:06:56+00:00","og_image":[{"width":640,"height":337,"url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/ci-cd-la-gi-thumbnail.jpg","type":"image\/jpeg"}],"author":"Tinh To","twitter_card":"summary_large_image","twitter_creator":"@ITviec","twitter_site":"@ITviec","twitter_misc":{"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi":"Tinh To","\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"16 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/#article","isPartOf":{"@id":"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/"},"author":{"name":"Tinh To","@id":"https:\/\/itviec.com\/blog\/#\/schema\/person\/6580f1be8090663be6e793f5d5f14d6c"},"headline":"CI\/CD l\u00e0 g\u00ec? L\u1ee3i \u00edch v\u00e0 c\u00e1c nguy\u00ean t\u1eafc tri\u1ec3n khai CI\/CD v\u00e0o quy tr\u00ecnh ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m","datePublished":"2022-07-22T09:32:13+00:00","dateModified":"2024-09-28T15:06:56+00:00","mainEntityOfPage":{"@id":"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/"},"wordCount":4115,"publisher":{"@id":"https:\/\/itviec.com\/blog\/#organization"},"image":{"@id":"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/#primaryimage"},"thumbnailUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/ci-cd-la-gi-thumbnail.jpg","articleSection":["Chuy\u00ean m\u00f4n IT"],"inLanguage":"vi"},{"@type":"WebPage","@id":"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/","url":"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/","name":"CI CD l\u00e0 g\u00ec? C\u00e1c nguy\u00ean t\u1eafc khi tri\u1ec3n khai quy tr\u00ecnh CI CD","isPartOf":{"@id":"https:\/\/itviec.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/#primaryimage"},"image":{"@id":"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/#primaryimage"},"thumbnailUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/ci-cd-la-gi-thumbnail.jpg","datePublished":"2022-07-22T09:32:13+00:00","dateModified":"2024-09-28T15:06:56+00:00","description":"CI\/CD l\u00e0 g\u00ec? CI\/CD l\u00e0 vi\u1ebft t\u1eaft c\u1ee7a Continuous Integration v\u00e0 Continuous Delivery\/Deployment, \u0111\u01b0\u1ee3c xem nh\u01b0 m\u1ed9t quy tr\u00ecnh ki\u1ec3u m\u1edbi, k\u1ebft h\u1ee3p...","breadcrumb":{"@id":"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/itviec.com\/blog\/ci-cd-la-gi\/"]}]},{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/#primaryimage","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/ci-cd-la-gi-thumbnail.jpg","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/07\/ci-cd-la-gi-thumbnail.jpg","width":640,"height":337,"caption":"ci-cd-la-gi-thumbnail"},{"@type":"BreadcrumbList","@id":"https:\/\/itviec.com\/blog\/ci-cd-la-gi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Chuy\u00ean m\u00f4n IT","item":"https:\/\/itviec.com\/blog\/chuyen-mon-it\/"},{"@type":"ListItem","position":2,"name":"CI\/CD l\u00e0 g\u00ec? L\u1ee3i \u00edch v\u00e0 c\u00e1c nguy\u00ean t\u1eafc tri\u1ec3n khai CI\/CD v\u00e0o quy tr\u00ecnh ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m"}]},{"@type":"WebSite","@id":"https:\/\/itviec.com\/blog\/#website","url":"https:\/\/itviec.com\/blog\/","name":"ITviec Blog","description":"IT Jobs &amp; People in Vietnam","publisher":{"@id":"https:\/\/itviec.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/itviec.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"},{"@type":"Organization","@id":"https:\/\/itviec.com\/blog\/#organization","name":"ITviec","url":"https:\/\/itviec.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2018\/12\/itviec-black-square-facebook.png","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2018\/12\/itviec-black-square-facebook.png","width":1800,"height":1800,"caption":"ITviec"},"image":{"@id":"https:\/\/itviec.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ITviec","https:\/\/x.com\/ITviec","https:\/\/www.linkedin.com\/company\/itviec","https:\/\/www.youtube.com\/channel\/UCYthAQ3bcGr57M_ag5gHDvQ"]},{"@type":"Person","@id":"https:\/\/itviec.com\/blog\/#\/schema\/person\/6580f1be8090663be6e793f5d5f14d6c","name":"Tinh To","image":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/secure.gravatar.com\/avatar\/a67154fc44dbb2d39713d4bb3a2591ba69ced8c6bb191b9af5305b02054b21ae?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a67154fc44dbb2d39713d4bb3a2591ba69ced8c6bb191b9af5305b02054b21ae?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a67154fc44dbb2d39713d4bb3a2591ba69ced8c6bb191b9af5305b02054b21ae?s=96&d=mm&r=g","caption":"Tinh To"},"description":"T\u00ecnh c\u00f3 h\u01a1n 4 n\u0103m kinh nghi\u1ec7m l\u00e0m vi\u1ec7c, vi\u1ebft b\u00e0i ph\u1ecfng v\u1ea5n v\u1ec1 ki\u1ebfn th\u1ee9c chuy\u00ean m\u00f4n IT v\u1edbi c\u00e1c chuy\u00ean gia c\u00f4ng ngh\u1ec7 \u1edf \u0111a d\u1ea1ng v\u1ecb tr\u00ed nh\u01b0 Front-end Developer, Data Analyst, Data Scientist, CTO\u2026 v\u00e0 c\u00e1c ch\u1ee7 \u0111\u1ec1 ph\u00e1t tri\u1ec3n s\u1ef1 nghi\u1ec7p IT, th\u00f4ng tin th\u1ecb tr\u01b0\u1eddng ng\u00e0nh IT t\u1ea1i Vi\u1ec7t Nam. Qua s\u1ef1 t\u00ecm hi\u1ec3u, trao \u0111\u1ed5i li\u00ean t\u1ee5c v\u1edbi Nh\u00e0 tuy\u1ec3n d\u1ee5ng IT &amp; Chuy\u00ean gia IT, T\u00ecnh cung c\u1ea5p c\u00e1c g\u00f3c nh\u00ecn kh\u00e1ch quan nh\u1ea5t trong c\u00e1c b\u00e0i vi\u1ebft v\u00e0 \u0111\u1ea3m b\u1ea3o t\u00ednh trung th\u1ef1c nh\u1ea5t c\u1ee7a c\u00e1c n\u1ed9i dung \u0111\u01b0\u1ee3c th\u00f4ng tin \u0111\u1ebfn \u0111\u1ed9c gi\u1ea3.","url":"https:\/\/itviec.com\/blog\/author\/tinh-to\/"}]}},"_links":{"self":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/23832","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/users\/87"}],"replies":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/comments?post=23832"}],"version-history":[{"count":0,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/23832\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/media\/23837"}],"wp:attachment":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/media?parent=23832"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/categories?post=23832"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/tags?post=23832"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}