LeeTun2k2Edu / Nhom8_CCPTPM

0 stars 0 forks source link

Tích hợp CI/CD #10

Closed nquy123 closed 1 year ago

nquy123 commented 1 year ago

Task1:CI/CD là gì ? Task2:github action là gì? Task3:Các thành phần của một Github Actions Task4:CI/CD với github action Task5:Cách sử dụng Task6:Demo code Task7:Chạy code

nquy123 commented 1 year ago

Task1:CI/CD là gì ? Theo định nghĩa đúng của nó là CI là Continuous Integration (tích hợp liên tục) và CD là Continuous Delivery (phân phối liên tục). Ây dà, sao nghe có vẻ hàn lâm quá vậy nè. Từ từ mình giải thích từng cái một nha.

Ví dụ team bạn có nhiều người, mỗi người code một chức năng ở mỗi branch khác nhau. Khi một người code xong commit lên git, bạn phải review code, rồi test chức năng vừa mới bổ sung và những chức năng cũ, cuối cùng là tạo pull request. Giả sử team bạn nhiều người thì sao nhở, bạn phải làm toàn bộ những công việc trên bằng tay à, à đúng rồi đấy. Vậy là người ta đưa ra khái niệm CI là tích hợp liên tục, bao gồm cả build, test, có thể là unit test hoặc integration test, sau khi build và test xong thì nó sẽ gửi thông báo hay gì đó tuỳ cấu hình, sau đó nó sẽ chuyển sang đoạn tiếp theo là CD.

Phân phối liên tục được hiểu theo một cách đơn giản nhất là tự động deloy ứng dụng của bạn lên server, CD có thể nằm riêng, hoàn toàn không phụ thuộc vào CI, nhưng mà trên thực tế thì CI/CD là một quy trình làm việc, code của bạn sẽ được build test và sau đó deloy trên server hoặc cloud một cách tự động luôn.

Có một ví trí cho công việc này trong dự án gọi là DevOps là người sẽ phụ trách phần này, kết nối giữa việc Develop (phát triển) và Operation (vận hành). Hiểu nôm na là người sẽ phụ trách CI/CD này luôn.

Việc ứng dụng CI/CD sẽ giúp chúng ta gia tăng năng xuất và chất lượng cho sản phẩm phần mềm bằng việc phát hiện và cảnh báo sớm những rủi ro, đưa ứng dụng deloy một cách nhanh chóng và tiết kiệm thời gian nhất có thể. Nghe đến đây chắc bạn cũng có đủ hứng thú để bắt tay vào thực hiện rồi đúng không, mình sẽ demo thử CI với GitHub Action nha.

nquy123 commented 1 year ago

Task2:github action là gì? Github actions được sinh ra để hỗ trợ việc tự động hóa các tác vụ trong vòng đời của một phần mềm. Git actions hoạt động theo hướng sự kiện, nghĩa là nó sẽ thực hiện một loạt commands đã được định nghĩa sẵn khi có một sự kiện được xảy ra. Ví dụ như, bạn có thể cấu hình để mỗi khi có người tạo một mergers request lên một repository nào đó hệ thống sẽ tự động run commands để run các unit test case của bạn.

Mô hình mô tả cách một git actions có thể tiến hành một công việc bất kì (như trong ví dụ trên là run các unit test case có sẵn). Một sự kiện sẽ tự động kích hoạt workflow đã được định nghĩa sẵn trong một job. Mỗi job sử dụng steps control để kiểm soát acttions. Actions là comands thực hiện một hành động cụ thể nào đó (run các unit test case)

nquy123 commented 1 year ago

Task3:Các thành phần của một Github Actions Workflows là một tập các hành động mà bạn thêm và reponsitory của mình để định nghĩa các hành động. các jobs trong workflows có thể được thực thi theo lịch hoặc dựa vào một trigger nào đó. Workflows có thể được định nghĩa để build, test, release, deplpy.... một dự án trên Github. Một workflows được định nghĩa bằng file yml.

Events là một trigger đặc biệt để workflow bắt đầu. ví dụ như, bạn có thể cấu hình để workflow bắt đầu khi có một người nó đó push code hoặc tạo merger request lên branch develop. Bạn có thể sử dụng repository dispatch webhook để trigger một workflow khi một sự kiện bên ngoài xảy ra (Đọc cho vui chứ đoạn này cũng không dùng mấy 😉 ). Các bạn có thể xem danh sách các events có thể dùng để trigger một workflow ở đây.

Jobs là tập hợp các bước thược hiện một công việc của một runner. Mặc định thì các jobs trong một workflow được chạy song song. Bạn cũng có thể cấu hình để các jobs chạy một các tuần tự. Ví dụ trong một workflow có thể có jobs là build, run test case. Nhưng nếu build fails thì test case sẽ không được run.

Steps là một tác vụ độc lập nó có thể là một command trong một jobs. Mỗi steps có thể là một action hoặc một command để thực hiện một hành động nào đó. Mỗi step trong một job thực thi trong cùng một runner, có thể share data từ steps này với step khác.

Actions là một command độc lập khi kết hợp lại tạo thành một steps để tạo ra jobs trong workflow. Actions là đơn vị nhỏ nhất của một workflow là thành phần trực tiếp thực hiện các tác vụ mong muốn.

Runners là một server được cài đặt sẵn GitHub Actions runner application. Bạn có thể sử dụng runner hosted bởi GitHub hoặc bạn có thể tự host cho mình để sử dụng. Một runner luôn sẵn sàng lắng nghe các jobs, run một job tại một thời điểm, report process, logs và trả kết quả về cho GitHub. Với GitHub-hosted runner mỗi job được runs trên một máy ảo hoàn tòan mới (Điều này có nghĩa là mỗi job bạn đều cần có bước setup môi trường từ đầu )

nquy123 commented 1 year ago

Task4:CI/CD với github action image

nquy123 commented 1 year ago

Task5:cách sử dụng image

nquy123 commented 1 year ago

Task6:Demo code image

nquy123 commented 1 year ago

Task7: Chạy code image