1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

Đ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

Thông tin cơ bản

Tiêu đề Game Engine Unity Engine In A Nutshell (Tuy nhiên, nội dung báo cáo lại tập trung vào CI/CD Pipeline)
Tác giả Nguyễn Ngọc Sâm
Người hướng dẫn Th.S Hồ Đắc Hưng
Trường học Trường Đại học Thủ Dầu Một, Viện Kỹ thuật – Công nghệ
Chuyên ngành Công nghệ thông tin (dựa trên nội dung)
Thể loại Báo cáo tiểu luận
Năm xuất bản 2023
Thành phố Bình Dương
Định dạng
Số trang 25
Dung lượng 2,3 MB

Nội dung

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ỘT

VIỆN KỸ THUẬT – CÔNG NGHỆ

BÁO CÁO TIỂU LUẬN

GAME ENGINE

UNITY ENGINE IN A NUTSHELL

GVHD: Th.S HỒ ĐẮC HƯNG SVTH: NGUYỄN NGỌC SÂM MSSV: 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ựu

vĩ đạ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ình CI/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 PIPELINE 1.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

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ất

cứ lúc nào cũng như đẩy mã triển khai đó vào kho sản xuất khi có

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ác

vụ 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

Trang 7

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

Hạ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ủi

ro, qua đó giúp nâng cao chất lượng sản phẩm thông qua khả năng

tự độ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ảy

ra 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ách

ly 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/CD

pipeline

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 khai

tớ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 khai

mô 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ụng

CI/CD pipeline Có thể tiến hành triển khai dần dần tùy vào

mứ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 quy

mô 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ãy

chọ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/CD

pipeline là gì, những loại có thể hỗ trợ build trên các hệ điều

hành iOS/Android Trong khi đó, team backend sẽ có yêu cầu

riêng khác

Service không chỉ tốt nhất mà còn phải phù hợp cho nhiều

team để 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ần

thiế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 build

cà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ều

ngườ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ào

mã 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ên

mô 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 PIPELINE 2.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át

triển để phổ biến và hỗ trợ phần mềm của họ (mặc dù từng chút

mộ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ản

Git Vì vậy, nó có thể hoạt động trên mã nguồn của các chương trình

và 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

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ới

hạ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ên

tục (Continuous Integration, viết tắt là CI), và xây dựng những tác

vụ 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

Trang 14

được gọi là CI- Continuous Integration) và có thể xây dựng các tác

dữ liệu Plugin của mình

Công cụ Jenkins cũng hỗ trợ kiến trúc đám mây để bạn cóthể triển khai Jenkins trên các nền tảng dựa trên đám mây.Tích hợp với nhiều nền tảng CI/CD và giúp cho team đượcđồng bộ hóa

Rất dễ dàng để tìm ra các lỗi trong Jenkins Nhà phát triển

có thể kiểm tra lỗi và giải quyết chúng nhanh chóng

Rút ngắn thời gian bàn giao dự án và linh hoạt trong côngviệc

Jenkins hỗ trợ các loại kho mã nguồn khác nhau như SVN,Git, v.v Nhà phát triển có thể đặt các trình kích hoạt khácnhau sau khi thực hiện các thay đổi trong mã

Gặp một số khó khăn trong việc cài đặt và cấu hình Jenkins

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

w