báo cáo tiểu luận game engine unity engine in a nutshell

25 0 0
Tài liệu đã được kiểm tra trùng lặp
báo cáo tiểu luận game engine unity engine in a nutshell

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Cũng từ đây, những bài toán mới đã được đặt ra trong việchợp tác giữa hai giai đoạn, cũng như nâng cao khả năng mở rộng và tăng hiệu suấtlàm việc.Vì vậy, khái niệm DevOps ra đời nhằm tối

Trang 1

TRƯỜNG ĐẠI HỌC THỦ DẦU MỘTVIỆN KỸ THUẬT – CÔNG NGHỆ

BÁO CÁO TIỂU LUẬNGAME ENGINEUNITY ENGINE IN A NUTSHELL

GVHD: Th.S HỒ ĐẮC HƯNGSVTH: NGUYỄN NGỌC SÂMMSSV: 1924801030248

BÌNH DƯƠNG – 07/2023

Trang 2

LỜI MỞ ĐẦU

Sự ra đời và phát triển của công nghệ thông tin là một trong những thành tựuvĩ đại nhất của con người Nhập đà phát triển công nghệ thông tin đang là một xuhướng được các ngành khoa học, giáo dục, kinh tế,… quan tâm Nó hiện đang pháttriển mạnh mẽ, to lớn và không ngừng phát triển.

Khoản thời gian gần đây, trước nhu cầu phát triển và cải tiến sản phẩm liên tụcđể đáp ứng thị trường, sẽ chia tách giữa giai đoạn phát triển và giai đoạn vân hànhđang dần thể hiện rõ ràng Cũng từ đây, những bài toán mới đã được đặt ra trong việchợp tác giữa hai giai đoạn, cũng như nâng cao khả năng mở rộng và tăng hiệu suấtlàm việc.

Vì vậy, khái niệm DevOps ra đời nhằm tối ưu chu trình phát triển phần mềm,giúp sản phẩm công nghệ thông tin được phát triển nhanh và thường xuyên hơn.Trong đồ án này, em sẽ triển khai giới thiệu về quy trình CI/CD Pipeline, một quytrình đang được áp dụng rộng rãi ngày nay.

Để hoàn thành đồ án này, ngoài việc cố gắng học hỏi cũng như được sự giúpđỡ tận tình của thầy Hồ Đắc Hưng Em xin bày tỏ lòng cảm ơn đến thầy.

Tuy nhiên, trong quá trình nghiên cứu đề tài, do kiến thức và thời gian thựchiện đồ án còn hạn chế nên bài báo cáo của em còn khá nhiều thiếu sót Mong nhậnđược góp ý của thầy.

Em xin chân thành cảm ơn.

Trang 3

MỤC LỤC

CHƯƠNG I GIỚI THIỆU VỀ CI/CD PIPELINE 4

1.1 Khái niệm CI/CD Pipeline 4

1.1.1 Khái niệm CI 4

1.1.2 Khái niệm CD 4

1.1.3 CI/CD 5

1.1.4 Pipeline trong CI/CD 5

1.2 Lợi ích của CI/CD Pipeline 6

1.3 Hạn chế của CI/CD Pipeline 8

1.4 Các thành phần chính của CI/CD Pipeline 8

1.5 Nguyên tắc và tiêu chí lựa chọn service khi triển khai mô hìnhCI/CD Pipeline 9

1.6 Kiến trúc CI/ CD Pipeline 10

1.7 Ứng dụng của CI/CD Pipeline trong thực tế 11

CHƯƠNG II TRIỂN KHAI DỰ ÁN THEO QUY TRÌNH CI/CD PIPELINE 12

2.1 Giới thiệu công cụ và phần mềm hỗ trợ thực hiện 12

2.1.1 GitHub 12

2.1.2 Jenkins 12

2.2 Quy trình triển khai dự án thực tế theo CI /CD Pipeline 14

2.3 Các bước thực hiện chi tiết 14

CHƯƠNG III KẾT LUẬN 23

3.1 Kết quả đạt được 23

3.2 Thuận lợi và khó khăn khi thực hiện triển khai 23

Trang 4

CHƯƠNG I GIỚI THIỆU VỀ CI/CD PIPELINE1.1 Khái niệm CI/CD Pipeline

1.1.1 Khái niệm CI

CI hay\Continuous Integration\đây là một phương pháp pháttriển phần mềm, yêu cầu các thành viên trong team cần tích hợpcông việc với nhau thường xuyên, mỗi ngày cần có tối thiểu một lầntích hợp.

Qua đó, nhằm phát hiện ra những lỗi sai nhanh nhất có thể.Khi sử dụng CI sẽ giúp giảm những vấn đề về tích hợp và cho phépcác nhà phát triển phần mềm làm việc nhanh hơn, hiệu quả hơn.

CI có quy trình làm việc như sau:

Các developer sẽ commit code (mã cam kết) có thể lên repo(repository - kho).

Tiếp theo, CI server sẽ thực hiện giám sát trên repo và kiểmtra xem có bất kỳ sự thay đổi nào trên repo hay không.

Khi xảy ra những thay đổi, CI server sẽ phải hiện ra code mớinhất từ repo và sau đó sẽ build, chạy các unit test và integrationtest Tiếp sau đó, CI server sẽ tạo ra những phản hồi và gửi đến chocác thành viên trong dự án Và CI server lại tiếp tục chờ đợi nhữngthay đổi từ repo.Mỗi lần mà Dev làm xong các task của mình, họ sẽchạy trên local trước để kiểm tra trước khi commit code lên repo.Đây là một công đoạn thường xuyên diễn ra tại bất cứ thời điểm nàotrong ngày Việc xây dựng tích hợp sẽ không xảy ra nếu chúngkhông ảnh hưởng đến repo.

1.1.2 Khái niệm CD

Trang 5

CD được viết tắt từ cụm\Continuous Delivery\– chuyển giaoliên tục Quá trình này kiểm tra tất cả những thay đổi về code đãđược build và code trong môi trường kiểm thử Continuous Deliverycho phép các Dev – lập trình viên tự động hóa phần mềm testing,kiểm tra phần mềm qua nhiều thước đo trước khi đưa vào triển khai.

Các bài kiểm tra bao gồm: UI testing,\Integration testing, v.v.Quy trình chuyển giao được CD sử dụng Deployment Pipeline chiathành các giai đoạn Mỗi giai đoạn sẽ có một mục tiêu để xác minhchất lượng của các tính năng từ một góc độ khác nhằm kiểm địnhchức năng và hạn chế những lỗi phát sinh có thể gây ảnh hưởng tớitrải nghiệm người dùng.

1.1.3 CI/CD

Từ hai khái niệm trên ta có thể hiểu một cách đơn giản thì CI/CDchính là quá trình làm việc liên tục và tự động hóa của phần mềm.Để quá trình kiểm thử được diễn ra liên tục thì CI CD phải được tíchhợp vào trong vòng đời phát triển phần mềm Trong những năm gầnđây, CI CD đã trở thành thông lệ trong quá trình phát triển phầnmềm, đây là chìa khóa kết hợp các khâu kiểm thử và phát triểnphần mềm lại với nhau

Ngoài ra, CI/CD cũng trở thành thông lệ tốt nhất trong ngànhcông nghệ thông tin để giữ cho ứng dụng có thể được triển khai bấtcứ lúc nào cũng như đẩy mã triển khai đó vào kho sản xuất khi cómã mới.

1.1.4 Pipeline trong CI/CD

Trong phát triển phần mềm, pipeline là một hệ thống các quytrình và công cụ tự động cho phép các nhà phát triển (Develop) và

Trang 6

chuyên gia vận hành (Operation) cộng tác để xây dựng và triển khaicode cho môi trường production.

Sự ra đời của tự động hóa trong quy trình triển khai cho phépcác nhóm phát triển tập trung nhiều hơn vào việc đổi mới và cảithiện sản phẩm cuối cho người dùng Bằng cách giảm thiểu các tácvụ thủ công, các team có thể triển khai các bản cập nhật code mớinhanh hơn nhiều và giảm thiểu lỗi do con người.

CI/CD Pipeline

CI/CD pipeline là một tập hợp các công cụ và quy trình đượccác nhà phát triển, kỹ sư kiểm thử và chuyên viên vận hành CNTTsử dụng trong suốt vòng đời phát triển, phân phối và triển khai phầnmềm liên tục.

Quy trình phân phối CI/CD bao gồm hai thành phần riêng biệt:tích hợp liên tục và phân phối liên tục, kết hợp với nhau giúp tăngtốc quy trình làm việc cho DevOps CI/CD pipeline giúp các nhómDevOps đẩy nhanh thời gian đưa phần mềm ra thị trường, cải thiệnchất lượng và giảm chi phí bằng cách tự động hóa các chức năngxây dựng, kiểm tra, phân phối và triển khai phần mềm, đồng thờiloại bỏ các quy trình làm việc thủ công dễ xảy ra lỗi do con người.

Trang 7

1.2 Lợi ích của CI/CD PipelineHạn chế rủi ro

Nhờ việc phát hiện và sửa lỗi sớm cho phép giảm thiểu các rủiro, qua đó giúp nâng cao chất lượng sản phẩm thông qua khả năngtự động kiểm tra và quan sát.

Đồng thời, các quy trình thủ công lặp đi lặp lại hàng ngày cũng đượcgiảm thiểu và được thay bằng xây dựng và kiểm thử tự động.\Thêm nữa CI/CD có thể deploy, triển khai phần mềm tại bất kỳ thờigian nào.

Thay đổi code nhỏ

CI/CD cho phép tích hợp nhiều loại mã nhỏ cùng một lúc Sựthay đổi này được thực hiện một cách đơn giản và xử lý nhanhchóng không giống như những đoạn mã khổng lồ Điều này giúp hạnchế các vấn đề phát sinh liên quan đến việc thay đổi về sau.

Sau khi được tích hợp vào kho mã, các mã này có thể thựchiện kiểm tra ngay Nhờ đó, các lập trình viên có thể nhận ra vấn đềngay từ sớm trước khi khối lượng công việc tăng lên Có thể thấyđây là một lợi thế tuyệt vời cho các nhóm phát triển lớn hoặc nhữngngười\làm việc từ xa\giao tiếp hiệu quả hơn.

Hạn chế những ảnh hưởng của lỗi hiệu quả

CI/CD được thiết kế với hệ thống sao cho khi có lỗi nào đó xảyra thì những kết quả tiêu cực sẽ bị giới hạn trong phạm vi ảnhhưởng nhất định nào đó Việc hạn chế các vấn đề này giúp làm giảmkhả năng hư hỏng từ đó làm cho hệ thống được bảo trì và xử lý mộtcách dễ dàng hơn.Với hệ thống CI CD, có thể đảm bảo cho việc cáchly lỗi sẽ được phát hiện một cách nhanh chóng và dễ dàng thực hiện

Trang 8

hơn Chính vì vậy, hậu quả của các lỗi trong ứng dụng sẽ được giớihạn trong phạm vi ảnh hưởng của nó.

Đảm bảo tính logic

Quy trình CI/CD có phần kiểm tra tự động, do đó khi lập trìnhviên phát triển tính năng mới sẽ không gây ảnh hưởng tới tính năngcũ.

Tập trung công việc hơn

Các lập trình viên sẽ phải thực hiện build và deploy phần mềmtrên cả máy tính cá nhân, do quy trình CI/CD mang tính tự động hóacao.

Nâng cao chất lượng Code thông qua quy trình

Các lập trình viên có thể cài đặt những ràng buộc ngay từ đâu,chẳng hạn như pull request khi tạo ra thì không được quá lớn khôngđược quá xa sự thay đổi, v.v Qua đó giúp lượng pull request đượctốt hơn.

Phát triển kỹ năng unit test cho Developer

Thông qua các chỉ số ràng buộc về code coverage được cài đặttrong quy trình của CI/CD, các lập trình viên cần ý thức được tầmquan trọng của các unit test để không làm giảm chỉ số codecoverage khi phát triển tính năng mới.

Tối ưu tốc độ phát triển của sản phẩm

Thông qua các chỉ số ràng buộc về code coverage được cài đặttrong quy trình của CI/CD, các lập trình viên cần ý thức được tầmquan trọng của các unit test để không làm giảm chỉ số codecoverage khi phát triển tính năng mới.

Trang 9

1.3 Hạn chế của CI/CD Pipeline

Bên cạnh những lợi ích kể trên CI/CD vẫn có một vài hạn chếcần phải lưu ý như:

Một dự án có sự tham gia của nhiều Developer sẽ có nhiều pullrequest được merge vào branch Khi đó, các thành viên phảichờ pull request của người trước hoàn thành, sau đó thực hiệncập nhật lại source code (nếu có thông báo conflict từ Gitrepository) và cần trải qua các bước test lại từ đầu Điều nàygây ra gián đoạn thời gian phát triển sản phẩm.

Khi sử dụng dịch vụ CI/CD của bên dịch vụ thứ 3 nếu dịch đóphát sinh vấn đề và bị crash, bị khai tử thì các dự án đang ápdụng CI/CD cũng bị ảnh hưởng tương đối nghiêm trọng.

1.4 Các thành phần chính của CI/CD Pipeline

Một CI/CD pipeline hoàn chỉnh sẽ bao gồm đầy đủ các bước màthành viên trong nhóm phát triển phần mềm cần phải tuân thủ vàthực hiện nhằm triển khai một phiên bản sản phẩm mới.

Lập trình viên sẽ bắt đầu phát triển lần lượt từng bước một đểhoàn thiện chương trình Nếu có một bước nào đó xảy ra lỗi sẽ đượcgửi về email hoặc tin nhắn để thông báo cho dev nắm được và sửalỗi một cách nhanh nhất.

Các bước đầy đủ trong CI/CD Pipeline:

Source stage: Đây là bước đầu tiên trong quy trình Các lập

trình viên sẽ thay đổi code trên kho tài nguyên code Khi đó,các pipeline tương ứng với từng thay đổi sẽ được tiến hành.

Build stage: Code sẽ được biên dịch và triển khai qua nền

tảng Docker Nếu trong trường hợp có lỗi xảy ra, lập trình viên

Trang 10

sẽ sửa lỗi ngay trước khi chuyển sang bước tiếp theo của CI/CDpipeline.

Test stage: Đây là một bước quan trọng cần được thực hiện

sau khi nhận code để chạy thử chương trình Phần test giúpđảm bảo chương trình chạy theo đúng như thiết kế mô tả.

Deploy stage: Sau khi test các lỗi trong chương trình xong,

phần code sẽ được tiến hành triển khai chạy thử và công khaitới người dùng cuối sử dụng.

1.5 Nguyên tắc và tiêu chí lựa chọn service khi triển khaimô hình CI/CD Pipeline

Nguyên tắc:

Không cần tới toàn bộ cả team trong tổ chức phải ứng dụngCI/CD pipeline Có thể tiến hành triển khai dần dần tùy vàomức độ phù hợp của dự án.

Quy trình được ứng dụng càng sớm càng tốt, vào lúc team quymô còn nhỏ hoặc khi dự án vừa mới bắt đầu.

Hiện nay, có nhiều nhà cung cấp dịch vụ để bạn lựa chọn Hãychọn ra service phù hợp nhất cho nhóm của bạn Chẳng hạn,với team Mobile, bạn cần xác định những service CI/CDpipeline là gì, những loại có thể hỗ trợ build trên các hệ điềuhành iOS/Android Trong khi đó, team backend sẽ có yêu cầuriêng khác.

Service không chỉ tốt nhất mà còn phải phù hợp cho nhiềuteam để có thể chia sẻ tài nguyên, giúp tối ưu chi phí nhất.Tìm hiểu chi tiết các điểm cần lưu ý trong phần tiếp theo.

Tiêu chí lựa chọn service CI/CD Pipeline phù hợp

Các yếu tố lựa chọn service CI/CD Pipeline phù hợp:

Trang 11

Service CI/CD pipeline cần đáp ứng đầy đủ nhu cầu cầnthiết.

Service cần được thiết kế trực quan, dễ sử dụng nhằmđáp ứng được cho các team không chuyên.

Cấu hình là một yếu tố quan trọng trong CI/CD pipeline vìnó có liên quan mật thiết tới build time Thời gian buildcàng nhanh thì càng hiệu quả.

Mức độ phổ biến của service càng cao càng tốt vì nhiềungười biết cách sử dụng Một số cho bạn lựa chọn như:Jenkins, Docker, Gitlab, Circle CI, Bitrise, TeamCity,TravisCI,…

1.6 Kiến trúc CI/ CD Pipeline

Một CI/CD Pipeline (Continuous Integration/Continuous Delivery Pipeline) làmột hệ thống tự động để phát triển, kiểm tra và triển khai phần mềm Kiến trúc củamột CI/CD Pipeline có thể được phân thành các thành phần chính sau:

Source Control Management (SCM): Đây là nơi lưu trữ mã nguồn và theo dõi

lịch sử thay đổi SCM phổ biến bao gồm Git, Subversion và Mercurial Nhóm pháttriển làm việc với mã nguồn trong SCM và tạo các nhánh để làm việc trên các tínhnăng hoặc sửa lỗi.

Continuous Integration (CI) Server: CI Server là một phần quan trọng của

kiến trúc CI/CD Pipeline Nó theo dõi SCM để phát hiện bất kỳ thay đổi nào trong mãnguồn và kích hoạt quá trình CI

Build Automation: Bước này liên quan đến xây dựng mã nguồn thành các gói

cài đặt hoặc các tài liệu thực thi hợp lệ Công cụ xây dựng phổ biến bao gồm ApacheMaven và Gradle cho Java, npm cho JavaScript và MSBuild cho NET.

Automated Testing: Một phần quan trọng của CI là việc thực hiện kiểm tra tự

động Điều này đảm bảo rằng mã nguồn mới không gây ra lỗi khi được tích hợp vàomã nguồn hiện có Kiểm tra tự động có thể bao gồm kiểm tra đơn vị, kiểm tra tích

Trang 12

hợp và kiểm tra giao diện người dùng Các công cụ phổ biến bao gồm JUnit, NUnit,Selenium và Cucumber.

Artifact Repository: Khi quá trình xây dựng hoàn thành, các file kết quả được

lưu trữ trong Artifact Repository Đây là nơi lưu trữ các gói cài đặt, mã nguồn đãđược biên dịch và các tài liệu thực thi khác Các công cụ quản lý Artifact phổ biếnbao gồm Nexus và Artifactory.

Deployment Automation: Quá trình tự động triển khai giúp thực hiện việc triển

khai mã nguồn đã qua kiểm tra vào môi trường sản phẩm Các công cụ triển khai nhưAnsible, Docker, Chef hoặc Kubernetes được sử dụng để tự động hóa quá trình triểnkhai và cấu hình môi trường.

Continuous Delivery (CD): Môi trường Continuous Delivery chịu trách nhiệm

triển khai tự động mã nguồn đã qua kiểm tra lên môi trường thử nghiệm hoặc môitrường sản phẩm Quá trình này có thể được kích hoạt bằng cách thông báo từ CIServer hoặc bằng sự can thiệp của người quản trị.

Monitoring and Feedback: Hệ thống giám sát giúp theo dõi hiệu suất và khả

năng sẵn sàng của mã nguồn đã triển khai Sự cố và lỗi được ghi lại và thông báo chonhóm phát triển để khắc phục và cải thiện hệ thống.

1.7 Ứng dụng của CI/CD Pipeline trong thực tế

CI/CD PIPELINE được áp dụng cho nhiều loại ứng và dự án phần mềm, từwebsite, mobile, game, IoT, AI, đến cloud

Một số công ty lớn đã áp dụng CI/CD Pipeline cho công nghệ của họ bao gồm:Amazon, Google, Microsoft, IBM, Facebook, Netflix, và nhiều công ty khác Cáccông ty này sử dụng CI/CD để tự động hóa quy trình phát triển và kiểm thử ứng dụngcủa họ, giúp giảm thời gian cung cấp sản phẩm và tăng hiệu suất Họ đều có các bộcông cụ CI/CD Pipeline hoàn chỉnh để tăng tốc các chu kỳ phát triển và phát hànhphần mềm Ví dụ, AWS CodePipeline của Amazon tự động hóa các giai đoạn xâydựng, kiểm tra và triển khai của quá trình phát hành mỗi khi có thay đổi mã, dựa trênmô hình phát hành được xác định.

Trang 13

CHƯƠNG II TRIỂN KHAI DỰ ÁN THEO QUY TRÌNH CI/CD PIPELINE2.1 Giới thiệu công cụ và phần mềm hỗ trợ thực hiện

2.1.1 GitHub

GitHub\là một nền tảng phát triển hợp tác, còn được gọi là rèn.Đó là, một nền tảng tập trung vào sự hợp tác giữa các nhà pháttriển để phổ biến và hỗ trợ phần mềm của họ (mặc dù từng chútmột nó đã được sử dụng cho các dự án khác ngoài phần mềm).

Như tên gọi của nó, nó nằm trên\Hệ thống kiểm soát phiên bảnGit Vì vậy, nó có thể hoạt động trên mã nguồn của các chương trìnhvà thực hiện một sự phát triển có trật tự Ngoài ra, nền tảng nàyđược viết bằng Ruby on Rails.

Ưu điểm:

Dịch vụ miễn phí, mặc dù nó cũng có các dịch vụ trả phí.Tìm kiếm rất nhanh trong cấu trúc repos.

Nó không phải là hoàn toàn mở.

Nó có giới hạn về dung lượng, vì bạn không thể vượt quá100MB trong một tệp duy nhất, trong khi kho lưu trữ được giớihạn ở 1GB trong phiên bản miễn phí.

2.1.2 Jenkins

Jenkins là một mã nguồn mở có khả năng thực hiện tích hợp liêntục (Continuous Integration, viết tắt là CI), và xây dựng những tácvụ tự động hóa Jenkins được định nghĩa là một opensource được sửdụng để thực hiện các chức năng được tích hợp liên tục (nó còn

Ngày đăng: 07/05/2024, 07:50

Tài liệu cùng người dùng

Tài liệu liên quan