Đăng ký Đăng nhập
Trang chủ Giáo dục - Đào tạo Cao đẳng - Đại học Công nghệ thông tin Báo cáo thực tập doanh nghiệp ứng dụng availability chat service...

Tài liệu Báo cáo thực tập doanh nghiệp ứng dụng availability chat service

.PDF
56
1
128

Mô tả:

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM o BÁO CÁO THỰC TẬP DOANH NGHIỆP ỨNG DỤNG AVAILABILITY CHAT SERVICE Công ty : DEK Technologies Việt Nam Người phụ trách : Lâm Khang Sinh viên : Hà Minh Thành MSSV : 18521401 Lớp : SE501.M21 Thành phố Hồ Chí Minh, tháng 6 năm 2022 2 LỜI CẢM ƠN Chương trình thực tập khóa 29 (18/10/2021 – 24/12/2021) tại công ty DEK Technologies Việt Nam là lần đầu tiên em được trải nghiệm một môi trường phát triển phần mềm thực tế với những kỹ thuật và công nghệ tiên tiến trên thế giới. Đây là cơ hội lớn để em không những được học các kiến thức, kỹ thuật, kỹ năng mới mà em còn có thể áp dụng những kiến thức, kỹ năng được lãnh hội ở trường áp dụng vào trong môi trường làm việc quốc tế và chuyên nghiệp tại công ty. Lời đầu tiên, em xin gửi lời cảm ơn chân thành nhất đến trường và quý thầy cô khoa Công nghệ phần mềm đã truyền đạt vốn kiến thức làm nền tảng cho em trong quá trình thực tập. Tiếp đến, em xin gửi lời cảm ơn chân thành đến quý công ty DEK Technologies Việt Nam. Không vì dịch bệnh nặng nề, công ty đã tạo cơ hội thuận lợi nhất và giành nhiều quyền lợi cho em trong thời gian thực tập. Em được hưởng quyền lợi như những nhân viên chính thức, được tham gia các buổi training của công ty, tham gia các workshop, seminar, liên hoan, giải trí khi có dịp lễ hội, ngày đặc biệt trong năm. Cũng không quên gửi lời cảm ơn chân thành đến anh Lâm Khang – PO team CBA, các anh mentor team CBA và các chị phòng nhân sự đã có nhiều chỉ bảo tận tình và giúp đỡ em trong quá trình thực tập nói chung và phát triển sản phẩm nói riêng. Cuối cùng, xin gửi lời cảm ơn đến tất cả các bạn trong team thực tập đã luôn luôn cố gắng, giúp đỡ để hoàn thành tốt sản phẩm mang tính thực tiễn cao trong quá trình thực tập. Xin chúc tất cả mọi người nhiều sức khỏe, thành công trong cuộc sống. Em xin chân thành cảm ơn! Hà Minh Thành Hồ Chí Minh, ngày 17 tháng 6 năm 2022 3 NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… 4 MỤC LỤC LỜI CẢM ƠN .................................................................................................................. 2 NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN .......................................................... 3 MỤC LỤC ........................................................................................................................ 4 DANH MỤC HÌNH ẢNH ............................................................................................... 7 CHƯƠNG 1: GIỚI THIỆU CÔNG TY DEK TECHNOLOGIES VIỆT NAM .............. 9 1.1 Thông tin chung .................................................................................................. 9 1.2 Lĩnh vực hoạt động ............................................................................................. 9 1.3 Đối tác công ty .................................................................................................... 9 CHƯƠNG 2 KIẾN THỨC- KỸ NĂNG ĐÃ ĐƯỢC TẬP HUẤN ............................... 11 2.1 Kiến thức về Linux ........................................................................................... 11 2.1.1 Tổng quan về Linux ................................................................................... 11 2.1.2 Vai trò của Linux mang lại cho doanh nghiệp ........................................... 13 2.2 Kiến thức về Scrum .......................................................................................... 14 2.2.1 Tổng quan về Scrum [1] ............................................................................ 14 2.2.2 Vai trò của Scrum mang lại cho doanh nghiệp .......................................... 17 2.3 Kiến thức về Git ............................................................................................... 17 2.3.1 Tổng quan về Git ....................................................................................... 17 2.3.2 Vai trò của Git mang lại cho doanh nghiệp ............................................... 18 2.4 Kiến thức về CI................................................................................................. 18 2.4.1 Tổng quan về CI ........................................................................................ 18 5 2.4.2 2.5 Vai trò của CI mang lại cho doanh nghiệp ................................................ 21 Kiến thức về Google Test ................................................................................. 22 2.5.1 Tổng quan về Google Test ......................................................................... 22 2.5.2 Vai trò của Google Test mang lại cho doanh nghiệp ................................ 24 2.6 Kiến thức về Docker ......................................................................................... 24 2.6.1 Tổng quan về Docker [4] ........................................................................... 24 2.6.2 Vai trò của Docker mang lại cho doanh nghiệp ........................................ 25 2.7 Kiến thức về Kubernetes .................................................................................. 26 2.7.1 Tổng quan về Kubernetes [5] .................................................................... 26 2.7.2 Vai trò của Kubernetes mang lại cho doanh nghiệp .................................. 28 2.8 Tìm hiểu và sử dụng công cụ Qt Creator và Qt Design ................................... 29 CHƯƠNG 3 TÓM TẮT QUÁ TRÌNH THỰC TẬP ..................................................... 31 3.1 Giới thiệu nhóm dự án và công việc mỗi tuần ................................................. 31 3.1.1 Nhóm dự án................................................................................................ 31 3.1.2 Lịch thực tập .............................................................................................. 31 3.1.3 Bảng chi tiết công việc mỗi tuần ............................................................... 32 3.2 Các công việc đã thực hiện ............................................................................... 33 3.2.1 Quá trình giao công việc ............................................................................ 33 3.2.2 Các công cụ sử dụng trong quá trình làm việc .......................................... 34 3.2.3 Nhiệm vụ được giao................................................................................... 34 CHƯƠNG 4 MÔ TẢ CÔNG VIỆC ............................................................................... 36 4.1 Dự án xây dựng ứng dụng Availability Chat Service ...................................... 36 6 4.1.1 Thông tin chung ......................................................................................... 36 4.1.2 Chi tiết cách hoạt động và tính năng ......................................................... 36 4.1.3 Giao diện hệ thống ..................................................................................... 44 CHƯƠNG 5 ĐÁNH GIÁ- NHẬN XÉT ........................................................................ 51 5.1 Kết quả đạt được ............................................................................................... 51 5.1.1 Những kiến thức lý thuyết đã được cũng cố: ............................................. 51 5.1.2 Những kỹ năng thực hành đã được học thêm: ........................................... 51 5.2 Những hạn chế .................................................................................................. 52 5.3 Bài học kinh nghiệm ......................................................................................... 52 5.4 Quy trình công việc và các hoạt động trong tương lai ..................................... 54 Tài liệu tham khảo:......................................................................................................... 55 7 DANH MỤC HÌNH ẢNH Hình 1:Mô hình làm việc Scrum .................................................................................. 15 Hình 2: Mô hình làm việc Cross-functional ................................................................ 16 Hình 3: Quá trình tích hợp CI...................................................................................... 19 Hình 4: Pipeline CI ....................................................................................................... 20 Hình 5: Đồ thị Pipeline ................................................................................................. 21 Hình 6: File test_server.cpp .......................................................................................... 23 Hình 7: Kết quả run file test_server.cpp ...................................................................... 24 Hình 8: Quy trình, các bước hoạt động của Docker ................................................... 25 Hình 9: Kiến trúc của Kubernetes................................................................................ 26 Hình 10: Tạo mới project demo bằng QtCreator ......................................................... 29 Hình 11: Dùng Qt Design thiết kế giao diện ............................................................... 30 Hình 12: Giao task của mỗi Sprint qua Trello ............................................................ 34 Hình 13: Biểu đồ quá trình khởi tạo kết nối client server. ......................................... 37 Hình 14: Client nhập đúng tài khoản. ......................................................................... 38 Hình 15: Client nhập sai tài khoản. ............................................................................. 38 Hình 16: Flowchart deploy Docker .............................................................................. 39 Hình 17. Flowchart deploy Kubernets ......................................................................... 40 Hình 18. Deploy trên Kubernets ................................................................................... 40 Hình 19: Pipeline CI ..................................................................................................... 41 Hình 20: Chi tiết Pipeline ............................................................................................. 41 Hình 21: Tìm kiếm user bằng một từ bất kỳ ................................................................ 42 Hình 22: Chat 1-1 ......................................................................................................... 43 Hình 23: Đổi màu tin nhắn. ......................................................................................... 43 Hình 24: Giao diện đăng nhập ..................................................................................... 44 Hình 25: Đăng nhập không thành công ...................................................................... 44 Hình 26: Đăng nhập thành công ................................................................................. 45 8 Hình 27: Giao diện đăng ký .......................................................................................... 45 Hình 28: Giao diện đăng ký không thành công .......................................................... 46 Hình 29: Giao diện điền mật khẩu không hợp lệ ........................................................ 47 Hình 30: Giao diện điền lại mật khẩu không hợp lệ ................................................... 47 Hình 31: Giao diện đăng ký thành công ...................................................................... 48 Hình 32: Giao diện màn hình chính ............................................................................ 49 Hình 33: Tìm kiếm tài khoản bạn bè ........................................................................... 49 Hình 34: Đổi màu tin nhắn .......................................................................................... 50 Hình 35: Giao diện profile ............................................................................................ 50 9 CHƯƠNG 1: GIỚI THIỆU CÔNG TY DEK TECHNOLOGIES VIỆT NAM 1.1 Thông tin chung − Tóm tắt thông tin: DEK Technologies là công ty gia công, phát triển các giải pháp phần mềm và phần cứng nước ngoài có trụ sở chính ở Melbourne - Úc, được thành lập năm 1999. Công ty hiện tại có 4 chi nhánh ở Stockholm - Thụy Điển, Rome – Ý, thành phố Hồ Chí Minh - Việt Nam và chi nhánh đang mở tại Thung lũng Silicon – Mỹ. DEK Technologies Việt Nam được thành lập vào năm 2008, là văn phòng lớn nhất với hơn 170 nhân viên người Việt và được dẫn dắt bởi một giám đốc người Úc - Daniel Tedesco. Nhờ đó, môi trường làm việc nơi đây mang đậm nét riêng của văn hóa phương Tây. − Các sản phẩm của công ty: + Telegea + IoT Platform + Các sản phẩm dựa trên mã nguồn mở − Trụ sở chính của công ty tại Việt Nam: 121/137 Lê Lợi, phường Bến Thành, quận 1, thành phố Hồ Chí Minh − Website: https://www.dektech.com.au 1.2 Lĩnh vực hoạt động − Giải pháp dịch vụ phần mềm − Thiết kế và phát triển phần mềm − Quản lý dự án phần mềm. − Dịch vụ bảo trì và hỗ trợ trọn gói sản phẩm của công ty 1.3 Đối tác công ty − Mirantis là một trong những đối tác chính cho dự án OpenStack, giúp các công ty xây dựng và quản lý cơ sở hạ tầng đám mây riêng của họ, cung cấp các dịch vụ sau: + Sản phẩm Mirantis đang bán lại 10 + Dịch vụ hỗ trợ doanh nghiệp + 100% các khóa đào tạo và chứng nhận OpenStack. 11 CHƯƠNG 2 KIẾN THỨC- KỸ NĂNG ĐÃ ĐƯỢC TẬP HUẤN 2.1 Kiến thức về Linux 2.1.1 Tổng quan về Linux − Linux là một hệ điều hành máy tính được phát dựa vào mô hình “Phần mềm tự do” (free software) và việc phát triển phần mềm mã nguồn mở (open-source software). − Ưu điểm của Linux: + Miễn phí và Mã nguồn mở + Tính ổn định và tin cậy cao: Khả năng xử lý cùng lúc một lượng lớn các tác vụ mà không bị xuống cấp trong một khoảng thời gian dài được xem là ưu điểm nổi bật nhất của Linux. + Bảo mật • Trước khi chạy một tiến trình nó yêu cầu phải thực hiện hàng loạt các thao tác cấu hình phân quyền, cho phép truy cập, tường lửa…Điều này đòi hỏi người dùng phải hiểu rõ công việc mà mình đang thực hiện. + Linh hoạt • Bên cạnh đó, Linux còn mang lại sự mạnh mẽ và linh hoạt chúng hầu như tương thích và có thể hoạt động tốt trên hầu hết tất cả các phần cứng. • Nó cung cấp hàng nghìn các tiện ích, công cụ hữu ích giúp quản lý dịch vụ, phần cứng, mạng. • Các ứng dụng luôn được cập nhật bản vá liên tục và hoạt động mượt mà không cần phải khởi động lại hệ điều hành. − Nhược điểm của Linux: + Tuy mạnh mẽ nhưng cũng có một số hạn chế: + Một số nhà sản xuất không phát triển driver hỗ trợ cho nên tảng Linux. + Một số phần mềm chuyên biệt không được phát triển dành cho Linux. + Còn quá xa lạ đối với người dùng phổ thông 12 − Một số lệnh cơ bản trong Linux: 1. pwd command − Command pwd được dùng để tìm đường dẫn của thư mục hiện tại (folder) mà ta đang ở trong đó. Command này sẽ trả về đường dẫn hoàn chỉnh (đầy đủ), bắt đầu bằng dấu gạch chéo (/). Ví dụ một đường dẫn hoàn chỉnh là /home/minhthanh 2. Command cd − Dùng để chuyển hướng trong hệ thống tập tin Linux − Ví dụ: + Ta đang ở trong /home/ minhthanh/Documents và muốn đến thư mục demo (thư mục con của Documents) thì gõ cd demo + Hoặc muốn chuyển đi một vị trí hoàn toàn mới thì cd đến đường dẫn hoàn chỉnh đó như cd /home/ minhthanh/Desktop/test 3. Command ls − Command ls được dùng để xem nội dung thư mục. Mặc định là command này sẽ hiển thị danh sách file trong thư mục hiện tại. − Nếu muốn xem nội dung thư mục khác, nhập ls và sau đó là đường dẫn thư mục. Ví dụ: nhập ls /home/username/Documents để xem nội dung của Documents. 4. Command cat − cat được dùng để xem nội dung file trên output tiêu chuẩn (sdout). Để chạy lệnh này, gõ cat theo sau là tên file và phần mở rộng. Ví dụ: cat file.txt. 5. Command cp − Sử dụng command cp để sao chép files từ thư mục hiện tại. Chẳng hạn, command cp photo1.jpg /home/username/Pictures sẽ tạo bản copy của photo1.jpg vào thư mục Pictures. 6. Command mv − Công dụng chính của command mv là di chuyển files, dù nó cũng có thể được dùng để đổi tên files. 13 − Arguments trong command này tương tự như command cp. Ta cần nhập mv, tên file và điểm đến của thư mục. Ví dụ: mv file.txt /home/username/Documents. − Để đổi tên files, cú pháp là mv oldname.ext newname.ext 7. Command mkdir − Command mkdir được dùng để tạo thư mục mới – giống như mkdir Music sẽ tạo thư mục mới gọi là Music. − Một số cách dùng cộng thêm của lệnh mkdir: + Để tạo một thư mục mới bên trong thư mục khác, sử dụng lệnh Linux cơ bản sau: mkdir Music/Newfile + Sử dụng p (parents) option để tạo thư mục giữa 2 thư mục đã tồn tại. Ví dụ, mkdir -p Music/2020/Newfile sẽ tạo thư mục “2020” 8. Command rm − Command rm được sử dụng để xóa thư mục cùng và nội dung bên trong. Nếu ta chỉ muốn xóa thư mục– sử dụng rm -r. 9. Command touch − Command touch cho phép ta tạo files mới trống thông qua dòng lệnh. − Ví dụ: nhập touch /home/username/Documents/test.txt để tạo file test.txt trong thư mục Documents. 10. Command echo − Lệnh này được dùng để chuyển dữ liệu vào một file. − Ví dụ, nếu muốn thêm text “Hello, my name is Thanh” vào trong file “name.txt”, nhập lệnh: echo Hello, my name is Thanh >> name.txt 2.1.2 Vai trò của Linux mang lại cho doanh nghiệp − Tổ chức, quản lý và vận hành các máy chủ, các dịch vụ trong hệ thống thông tin. − Tạo môi trường, cung cấp các công cụ, các chính sách giải pháp bảo vệ an toàn thông tin cho các tổ chức, doanh nghiệp và cá nhân. 14 − Linux là một hệ thống thông tin an toàn, bảo mật và miễn phí. 2.2 Kiến thức về Scrum 2.2.1 Tổng quan về Scrum [1] − Scrum là một phương pháp Agile (Phát triển phần mềm linh hoạt) dựa trên cơ chế lặp và tăng trưởng. Scrum được thiết kế để hỗ trợ việc phát triển, cung cấp và cải tiến các sản phẩm phức tạp. − Với Scrum, dự án sẽ được thực hiện trong các phân đoạn lặp đi lặp lại (được gọi là sprint) thường có khung thời gian ngắn (từ 1 – 4 tuần). Trong mỗi phân đoạn này, nhóm phát triển thực hiện đầy đủ các công việc cần thiết: lập kế hoạch, phân tích yêu cầu, thiết kế, triển khai, kiểm thử, … để cho ra các phần nhỏ của sản phẩm. Phù hợp cho những dự án có sự điều chỉnh liên tục, thay đổi trong quá trình phát triển, yêu cầu tốc độ cao. − Với mô hình phát triển lặp đi lặp lại Scrum, có 3 vai trò chính: + Product Owner: Quản lý Product Backlog. Định nghĩa các yêu cầu của khách hàng và đánh giá cuối cùng đầu ra của các nhà phát triển phần mềm. + Scrum Master: chịu trách nhiệm về hiệu quả của nhóm, đảm bảo nhóm làm đúng mô hình làm việc, cũng như đảm bảo các sprint được hoàn thành đúng mục đích. + Development Team (Dev, Test, …): lập kế hoạch cho các sprint, thiết kế, thực hiện và triển khai yêu cầu từ đầu. 15 Hình 1:Mô hình làm việc Scrum − Scrum định nghĩa quy tắc cho bốn sự kiện chủ chốt (các cuộc họp) nhằm tạo môi trường và quy cách hoạt động và cộng tác cho các thành viên trong dự án. − Sprint là một phân đoạn lặp đi lặp lại trong quy trình phát triển phần mềm, thường có khung thời gian ngắn (từ 1 – 4 tuần). + Sprint Planning (Họp Kế hoạch Sprint) • Nhóm phát triển gặp gỡ với Product Owner để lên kế hoạch làm việc cho một Sprint. Công việc lập kế hoạch bao gồm việc chọn lựa các yêu cầu cần phải phát triển, phân tích và nhận biết các công việc phải làm kèm theo các ước lượng thời gian cần thiết để hoàn tất các tác vụ. • Scrum sử dụng cách thức lập kế hoạch từng phần và tăng dần theo thời gian, theo đó, việc lập kế hoạch không diễn ra duy nhất một lần trong vòng đời của dự án mà được lặp đi lặp lại, có sự thích nghi với các tình hình thực tiễn trong tiến trình đi đến sản phẩm. + Daily Scrum (Họp Scrum hằng ngày) 16 • Scrum Master tổ chức cho Đội sản xuất họp hằng ngày trong khoảng 15 phút để Nhóm Phát triển chia sẻ tiến độ công việc cũng như chia sẻ các khó khăn gặp phải trong quá trình phát triển phần mềm suốt một Sprint. + Sprint Review (Họp Sơ kết Sprint) • Cuối Sprint, nhóm phát triển cùng với Product Owner sẽ rà soát lại các công việc đã hoàn tất (DONE) trong Sprint vừa qua và đề xuất các chỉnh sửa hoặc thay đổi cần thiết cho sản phẩm. + Sprint Retrospective (Họp Cải tiến Sprint) • Dưới sự trợ giúp của Scrum Master, nhóm phát triển sẽ rà soát lại toàn diện Sprint vừa kết thúc và tìm cách cải tiến quy trình làm việc cũng như bản thân sản phẩm. − Theo đó, công ty định sẵn đặc trưng Scrum là Cross-Functional – liên chức năng: + Các thành viên kỹ năng bổ trợ cho nhau, tự hoàn thành công việc mà không phụ thuộc người khác bên ngoài nhóm. + Không có các chức danh nào khác ngoài Team members (hoặc Developers). Hình 2: Mô hình làm việc Cross-functional 17 2.2.2 Vai trò của Scrum mang lại cho doanh nghiệp − Scrum thích ứng nhanh với sự thay đổi yêu cầu − Scrum vận hành dựa trên đặc tính tự nhiên của người phát triển nên rất dễ hiểu, dễ áp dụng, tạo nên tính tương tác cao giữa các thành viên trong nhóm thay vì chịu sự áp đặt từ phía bên ngoài − Scrum giúp team tập trung vào sản phẩm, thích ứng nhanh với các thay đổi về yêu cầu từ đó tạo nên sự tương tác cao giữa khách hàng với nhóm phát triển để sản phẩm làm ra đáp ứng đúng với các yêu cầu của khách hàng 2.3 Kiến thức về Git 2.3.1 Tổng quan về Git − Git là phần mềm quản lí mã nguồn phân tán. − Git là một hệ thống VCS (Version Control System) đi theo hướng quản lí source code phân tán, khác với SVN và CVS là hệ thống quản lí mã nguồn đi theo hướng quản lí source code tập trung. − Các hệ thống giúp quản lí dự án hiện nay như: github, gitlab, Jira ticket, Backlog. − Một số lệnh cơ bản + git init: Khởi tạo git repo, sẽ tạo ra một thư mục .git, thư mục này chứa tất cả các tập tin cần thiết cho repo. + git clone: Sao chép một remote repo về máy tính mình. + git status: để kiểm tra trạng thái của tệp tin (staged, modified, committed) + git add: Cập nhật các file lên Staging Area. + git commit: Cập nhật file lên local repository. + git push: Cập nhật file từ local repository lên remote repository. + git fetch: Cập nhật các thay đổi từ remote repo về local repo, nhưng không tiến hành merge. 18 + git pull: Cập nhật những thay đổi từ remote repo về local repo, đồng thời tiến hành merge. + git merge: Gộp các branch lại với nhau. + git rebase: Gộp các commit lại với nhau. + git branch: xem các branch + git checkout : checkout sang branch + git checkout -b : vừa tạo ra vừa checkout sang branch mới. + git commit --amend: sửa code mà không muốn tạo commit mới. 2.3.2 Vai trò của Git mang lại cho doanh nghiệp − Giúp quy trình làm việc code theo nhóm đơn giản hơn rất nhiều bằng việc kết hợp các phân nhánh (branch). − Sắp xếp công việc tốt hơn. − Linh hoạt hơn khi cùng lúc phải làm nhiều task. − Tự tin thử nghiệm những ý tưởng mới. − Dễ dàng trong việc phát triển sản phẩm. − Có thể làm việc bất cứ đâu, chỉ cần clone mã nguồn từ repo về máy. 2.4 Kiến thức về CI 2.4.1 Tổng quan về CI − CI là tên viết tắt của Continuous Integration, hay còn gọi là tích hợp liên tục. Quá trình hoạt động cho phép các thành viên trong một team liên tục lưu trữ những mã mới vào một kho nhất định. Nhờ vào số lượng dữ liệu này, CI sẽ tự động chạy test và kiểm tra độ chính xác. Cùng lúc đó cũng hỗ trợ phát triển phần mềm một cách nhanh chóng hơn bằng việc báo lỗi sai và đưa ra gợi ý giải quyết. [2] − Về chi tiết, khi bản mã được lập trình viên tải lên kho lưu trữ. CI sẽ tự động nhận dữ liệu và tiến hành kiểm tra. Bằng nhiều thước đo khác nhau, CI đảm bảo mã nguồn không còn bất kỳ lỗi nào khi chạy trong bất cứ điều kiện nào. Mỗi tiến trình đều sẽ 19 có thông báo trả về để người dùng có thể nắm rõ tiến trình phát triển của phần mềm. Cùng với đó nhận biết những lỗi sai mắc phải và rút kinh nghiệm cho lần tiếp theo. [2] Hình 3: Quá trình tích hợp CI − Quá trình tích hợp mã vào kho cũng có thể diễn ra tự động nếu được cài đặt trước. Vậy nên dây chuyền tích hợp – kiểm tra – test – report sẽ diễn ra liền mạch và tự động. Lập trình viên có thể tiết kiệm thời gian để phát triển những phần khác và quay trở lại xem báo cáo sau khi phần này đã được build và test xong. [2] − Các yêu cầu cơ bản cho một hệ thống CI đó là: [2] + Build được chạy tự động. + Test được chạy tự động. + Thường xuyên commits các thay đổi tới repository của dự án. + Cung cấp giao diện dễ nhìn cho các tiền trình của hệ thống cũng như real-time status cho cả team có thể theo dõi. + Bên cạnh đó cũng cần một Version Control System (VCS). Xem như một nơi tập trung hóa cũng như lưu giữ các thay đổi mà chúng ta tạo ra cho dự án theo thời gian. Ngoài ra cũng cần một server hoặc máy ảo để có thể chạy hệ thống CI tại chỗ. − CI với Gitlab CI [3] + Gitlab có tính năng Gitlab CI, code để ở Gitlab, rồi trong đó có cho cài đặt CI để test và deploy code tự động. 20 + Để GitLab CI cỏ thể hoạt động được chúng ta sẽ cần 02 thành phần: • File .gitlab-ci.yml: nằm trong thư mục gốc của repo, file này sẽ định nghĩa các Job để thực hiện, các Job sẽ chạy như thế nào, ở đâu và cấu hình project sử dụng các Runner. • Gitlab Runner: Có nhiệm vụ clone project về, đọc file .gitlab-ci.yml và thực hiện các hưởng dẫn trong file. Luồng thực hiện như sau: ▪ Khi chúng ta chạy git push hoặc click vào pipeline thì gitlab repo sẽ thông báo đến cho gitlab runner, khi đó gitlab runner sẽ pull code mới về, đọc file gitlab-ci.yml và thực hiện theo các bước đã được định nghĩa trong đó. ▪ Một Pipeline CI sinh ra và report sẽ được hiển thị giao diện sau. Hình 4: Pipeline CI + Pipelines là thành phần cấp cao nhất của tích hợp, phân phối và triển khai liên tục. Pipeline bao gồm: • Jobs: Các công việc được giao thực thi. (Ví dụ: biên dịch mã hoặc chạy test) • Stage: Xác định các thời điểm và cách thực hiện. (Ví dụ: test chỉ chạy sau khi biên dịch thành công) • Pipeline hoạt động theo nguyên tắc sau: ▪ Tất cả các công việc trong cùng một stage được Runner thực hiện song song, nếu có đủ số lượng Runner đồng thời. ▪ Nếu Success, pipeline chuyển sang stage tiếp theo.
- Xem thêm -

Tài liệu liên quan