Khám phá cách tự động hóa kiểm thử API chức năng bằng AI và tích hợp liền mạch vào quy trình CI/CD với GitHub Actions. Tiết kiệm thời gian, tăng cường độ tin cậy phần mềm.
Khám phá hành trình biến một ứng dụng Node.js đơn giản thành hệ thống CI/CD hoàn chỉnh, tích hợp Kubernetes, Docker, GitHub Actions, Prometheus và Grafana để giám sát real-time. Học cách xây dựng từ A đến Z!
Bạn có bao giờ tự hỏi liệu một mô hình ngôn ngữ lớn (LLM) có thể 'soi' code của bạn đỉnh đến mức nào không? Nghe có vẻ như khoa học viễn tưởng, nhưng tôi sẽ bật mí cách biến điều đó thành hiện thực chỉ trong vỏn vẹn 5 phút, bằng cách 'phù phép' với GitHub Actions. Hãy cùng nhau tạo ra một công cụ đánh giá code dùng AI cực chất, giúp bạn tiết kiệm thời gian và có những dòng code 'sạch' hơn bao giờ hết nhé! <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/AICodeReviewIntro.png' alt='AI đang code review'> Trước khi mình 'nhảy' vào thế giới phép thuật này, bạn chỉ cần có chút 'kinh nghiệm xương máu' với JavaScript và GitHub Actions thôi nhé. Đừng lo, không cần phải là 'phù thủy code' đâu! Ý tưởng siêu đơn giản là thế này: Mỗi khi bạn tạo một Pull Request (PR) hay cập nhật code trên PR đó, chúng ta sẽ nhờ GitHub Actions bí mật 'chôm' lấy phần code mới thay đổi (hay còn gọi là 'changeset' – tập hợp những thay đổi). Sau đó, 'chất đống' cái changeset này và 'quăng' thẳng vào ChatGPT. Chúng ta sẽ 'mách nước' cho ChatGPT là hãy 'soi' kỹ những thay đổi này và cho feedback (phản hồi). Xong xuôi, mình sẽ lấy cái 'lời phê' của ChatGPT và 'dán' nó ngược lại vào PR của bạn để tác giả (chính là bạn đó!) có thể đọc và sửa đổi. Nghe có vẻ 'hack não' nhưng thực ra nó dễ ợt à, và bạn sẽ thấy việc tích hợp LLM vào quy trình làm việc của mình giờ đây đơn giản đến không ngờ! <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/GitHubActionsLLMFlow.png' alt='Sơ đồ quy trình tích hợp AI vào PR'> Bước đầu tiên cũng là quan trọng nhất: kiếm một 'chìa khóa thần kỳ' (API Token) để có thể 'giao tiếp' với ChatGPT bằng code. Bạn sẽ cần token này để chương trình của chúng ta có thể 'nói chuyện' với OpenAI. Đừng quên rằng bạn cũng phải có quyền thêm 'bí mật' (secrets) vào kho lưu trữ GitHub (repository) hoặc tổ chức của mình nữa nhé. Khi đã có trong tay cái 'chìa khóa' quý giá này, hãy cất nó vào nơi an toàn nhất của GitHub – mục Secrets của repo hoặc tổ chức. Tên cho 'chìa khóa' này nên là OPEN_API_KEY để dễ nhớ và dễ dùng nha! <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/APITokenSecret.png' alt='API Token và GitHub Secrets'> Đến lúc 'biến hình' rồi! Sau khi có 'chìa khóa' trong tay, chúng ta sẽ bắt đầu 'phù phép' với GitHub Actions. Luồng làm việc của chúng ta sẽ được kích hoạt mỗi khi có PR mới 'khai sinh' hoặc có code mới được đẩy lên một PR hiện có. Khi 'cỗ máy' này chạy, nó sẽ làm những việc sau: Kéo code xuống: Tải về toàn bộ phần code thay đổi (changeset). 'Lùa' changeset vào script code review: Đưa cái đống code thay đổi đó vào một script đặc biệt của chúng ta. Dùng 'phép thuật' OpenAI: Sử dụng một hành động GitHub có sẵn là `daves-dead-simple/open-ai-action` để gửi yêu cầu (prompt) của chúng ta đến OpenAI. 'Dán' kết quả trở lại PR: Lấy phản hồi từ AI và thêm nó thành một bình luận (comment) trên PR gốc. Dưới đây là một ví dụ về file workflow của chúng ta, trông nó sẽ 'cool' thế này: ```yaml name: LLM Code Review on: pull_request: branches: - whichever-branch-you-want-code-review-for types: - opened # khi một PR được mở - synchronize # khi code được đẩy lên một PR jobs: code-review: runs-on: - ubuntu-latest steps: - name: Checkout PR branch uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: 20 - name: Get Diff id: get_diff env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run:
Chào các bạn, là tôi đây! Bạn có từng 'đau đầu' với việc dự án của mình cứ 'đổ bể' mỗi khi bạn sửa code không? Hay loay hoay không biết test đã pass chưa trước khi đẩy code lên? Đừng lo lắng nữa! Trong bài viết này, chúng ta sẽ cùng 'triệu hồi' một 'phù thủy' cực kỳ lợi hại: **GitHub Actions** để tự động hóa toàn bộ quá trình biên dịch (build) và kiểm thử (test) ứng dụng của bạn mỗi khi có thay đổi được đẩy lên kho mã nguồn (repository). Từ giờ, code của bạn sẽ luôn 'sạch tinh tươm' và mọi bài kiểm tra đều 'đậu', đảm bảo quy trình phát triển mượt mà như lụa! <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/GitHub_Actions_Intro.png' alt='GitHub Actions - Giải pháp tự động hóa'> ### Tại sao lại là GitHub Actions, mà không phải 'thần đèn' nào khác? **Tích hợp Liên tục (Continuous Integration - CI)** không còn là khái niệm xa lạ trong giới lập trình hiện đại nữa, nó gần như là một 'lá bùa hộ mệnh' vậy. Và GitHub Actions chính là cách tuyệt vời nhất để thực hiện điều đó! Hãy tưởng tượng thế này: mỗi khi bạn tạo một yêu cầu hợp nhất (pull request) hay đẩy một commit mới, GitHub Actions sẽ tự động 'nhảy vào' biên dịch và chạy các bài kiểm tra cho code của bạn. Việc này giúp chúng ta phát hiện và 'bắt lỗi' ngay từ những giai đoạn đầu, trước khi chúng kịp 'làm loạn' trong dự án. Kết quả là gì? Bạn sẽ có một codebase đáng tin cậy hơn, ít bug hơn và một tâm hồn an yên hơn rất nhiều! <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/CI_CD_flow_illustration.png' alt='Luồng CI/CD với GitHub Actions'> ### Chuẩn bị gì trước khi 'phù phép'? Trước khi chúng ta bắt tay vào 'ma thuật' GitHub Actions, hãy đảm bảo bạn có đủ những 'nguyên liệu' sau nhé: * **Một 'ngôi nhà' cho code trên GitHub:** Đảm bảo dự án của bạn đã có sẵn một kho mã nguồn (repository) trên GitHub. (Ví dụ như dự án DeepLinking của Saeed Rz nè, tiện không?). * **Hiểu biết 'sơ sơ' về GitHub Actions và YAML:** Không cần phải là chuyên gia đâu, chỉ cần bạn biết qua về cách chúng hoạt động và cấu trúc file YAML là được rồi. File YAML giống như một 'tờ giấy hướng dẫn' để GitHub Actions biết phải làm gì vậy. * **Xcode 'khỏe mạnh' trên máy bạn:** Hãy chắc chắn Xcode đã được cài đặt và dự án của bạn có thể biên dịch 'ngon lành' trên máy tính cá nhân. Điều này giúp chúng ta kiểm tra xem mọi thứ có hoạt động đúng như mong đợi không. ### Bắt tay vào 'tạo tác' file Workflow GitHub Actions sử dụng các file YAML để định nghĩa 'công thức' cho các workflow. Đầu tiên, hãy tạo cấu trúc thư mục này trong repository của bạn nếu nó chưa có nhé: `.github/└── workflows/` Sau đó, bên trong thư mục `workflows`, hãy tạo một file có tên `ci.yml`. Đây chính là 'tâm điểm' của mọi chuyện đó! <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/workflow_file_structure.png' alt='Cấu trúc thư mục file workflow của GitHub Actions'> #### Khi nào thì 'thần đèn' xuất hiện? (Triggers) Phần `on` trong file `ci.yml` sẽ quy định những sự kiện nào sẽ 'kích hoạt' workflow của bạn chạy. Với một dự án Swift, bạn có thể muốn CI tự động chạy mỗi khi: * **Đẩy code lên nhánh `main` (push):** `on: push: branches: [ main ]` * **Mở hoặc cập nhật Pull Request (pull_request):** `pull_request: branches: [ main ]` Tưởng tượng nó giống như một người bảo vệ tự động vậy, cứ thấy có ai đó 'động chạm' vào code ở nhánh `main` là 'anh ấy' lại bắt đầu làm nhiệm vụ kiểm tra. ```yaml name: CI on: push: branches: [ main ] pull_request: branches: [ main ] ``` #### Môi trường làm việc của 'công nhân' (Job Environment) Phần này định nghĩa các 'công việc' mà workflow của bạn sẽ thực hiện. Mỗi 'công việc' (job) sẽ có một ID duy nhất (ví dụ: `build`) và một tên miêu tả rõ ràng hơn hiển thị trên giao diện GitHub Actions (ví dụ: `Build and Test`). Quan trọng nhất là `runs-on`: nó chỉ định loại máy ảo sẽ thực thi 'công việc' này. Với các dự án Swift, bạn chắc chắn sẽ cần máy ảo macOS nhé! ```yaml jobs: build: name: Build and Test runs-on: macos-latest ``` <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/github_actions_job_environment.png' alt='Cấu hình môi trường công việc GitHub Actions'> ### Các bước 'hành động' của 'thần đèn' (Steps) Đây là nơi chúng ta liệt kê từng bước cụ thể mà GitHub Actions sẽ làm. * **Bước 1: Lấy code về (Checkout Code)** * `name: Checkout` * `uses: actions/checkout@v4` * Bước này đơn giản là để workflow truy cập được vào tất cả các file trong repository của bạn. Giống như 'công nhân' cần có bản vẽ để bắt đầu vậy. * **Bước 2: Chuẩn bị Xcode (Set Up Xcode)** * `name: Set up Xcode` * `uses: maxim-lobanov/setup-xcode@v1` * `with: xcode-version: '16.2'` * Quan trọng lắm nha! Bước này đảm bảo rằng máy ảo sẽ cài đúng phiên bản Xcode mà bạn cần (ví dụ 16.2) để biên dịch dự án của bạn. Không đúng phiên bản là dễ 'toang' lắm đó! * **Bước 3: Biên dịch và kiểm thử (Build)** * `name: Build` * `run:
Này bạn! Có bao giờ bạn tò mò liệu một 'bộ não' AI siêu to khổng lồ (hay còn gọi là LLM) có thể đánh giá code của bạn đỉnh đến mức nào không? Trong bài viết này, mình sẽ bật mí cách biến GitHub Actions thành một trợ lý code review đắc lực, được 'phù phép' bởi AI, chỉ trong vỏn vẹn 5 phút!\n\n<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/AICodeReviewConcept.png' alt='AI đánh giá code'>\n\nÀ mà khoan, trước khi 'nhảy' vào thế giới phép thuật này, bạn chỉ cần trang bị một chút 'kiến thức nền' về JavaScript và GitHub Actions thôi nhé. Yên tâm, không cần phải là 'phù thủy' đâu!\n\n### Ý Tưởng Siêu Đỉnh\nÝ tưởng của chúng ta đơn giản lắm! Chúng ta sẽ xây dựng một 'dây chuyền tự động' trên GitHub Actions. Cứ mỗi khi bạn tạo hoặc cập nhật một Pull Request (PR) – như kiểu bạn đang đề xuất một bản chỉnh sửa code vậy đó – 'dây chuyền' này sẽ tự động 'gom' tất cả những thay đổi (hay còn gọi là 'changeset') rồi ném thẳng vào 'đầu' ChatGPT. Nhiệm vụ của ChatGPT là đọc, hiểu và 'phán xét' xem code của bạn đã 'ngon' chưa, có cần cải thiện gì không. Sau đó, nó sẽ gửi 'lời phê' của mình quay ngược lại thẳng vào PR đó, để tác giả có thể xem và 'ngâm cứu'. Thấy chưa? 'Bốc' một em AI vào quy trình làm việc của bạn chưa bao giờ dễ dàng đến thế!\n\n<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/GitHubActionsFlow.png' alt='Luồng hoạt động của GitHub Actions và AI'>\n\n### Bước 1: Sắm Ngay 'Chìa Khóa Vàng' Cho AI Nhà Mình!\nĐầu tiên, để 'gọi điện' cho ChatGPT từ xa (theo kiểu lập trình ấy mà), bạn cần một cái 'chìa khóa' đặc biệt, gọi là API Token. Nhớ là bạn cũng phải có quyền 'treo' những 'bí mật' này lên kho lưu trữ code (repository) hoặc tổ chức (organization) trên GitHub của mình nhé. Khi đã có trong tay cái 'chìa khóa thần kỳ' này rồi, hãy nhanh tay 'cất' nó vào phần 'Secrets' (bí mật) của repo hoặc tổ chức trên GitHub. Chúng ta sẽ dùng nó trong 'dây chuyền tự động' ở bước sau. Tên gợi ý 'xịn xò' cho 'chìa khóa' này là `OPEN_API_KEY` nhé!\n\n<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/APIKeySecret.png' alt='API Token và GitHub Secrets'>\n\n### Bước 2: 'Dựng' Ngay Một GitHub Action Siêu Việt!\nCó 'chìa khóa' rồi thì còn chần chừ gì nữa mà không bắt tay vào 'kết nối' mọi thứ trên GitHub Actions? 'Dây chuyền' của chúng ta sẽ tự động khởi động mỗi khi có một PR mới được mở hoặc khi bạn 'đẩy' thêm code mới vào một PR đang tồn tại. Khi nó 'chạy', nó sẽ làm gì?\n\n* **Kéo về 'sổ tay thay đổi':** Đầu tiên, nó sẽ 'tải' về tất cả những thay đổi trong code của bạn (cái 'changeset' ấy).\n* **'Chuyển phát nhanh' cho AI:** Sau đó, nó dùng một công cụ cực kỳ tiện lợi tên là `daves-dead-simple/open-ai-action` để 'chuyển phát nhanh' cái 'sổ tay thay đổi' này cùng với yêu cầu 'đánh giá code' đến thẳng OpenAI (nơi ChatGPT 'ngự trị').\n* **'Báo cáo' lại cho PR:** Cuối cùng, nó sẽ lấy kết quả 'đánh giá' từ AI và đăng thẳng lên phần bình luận của PR gốc. Tức là, AI sẽ comment trực tiếp vào PR của bạn đó!\n\nBạn tò mò 'dây chuyền' này trông ra sao à? Đây nhé, một ví dụ nhỏ cho 'kịch bản' GitHub Actions của chúng ta đây:\n\n```yaml\nname: LLM Code Review\non:\n pull_request:\n branches:\n - main # Đặt tên branch bạn muốn review ở đây nhé, ví dụ 'main' hoặc 'develop'\n types:\n - opened # Khi một PR mới được mở\n - synchronize # Khi có code mới được 'đẩy' vào PR hiện tại\njobs:\n code-review:\n runs-on: ubuntu-latest\n steps:\n - name: Checkout PR branch\n uses: actions/checkout@v4\n - name: Set up Node.js\n uses: actions/setup-node@v4\n with:\n node-version: 20\n - name: Get Diff\n id: diff\n env:\n GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n run:
Khám phá cách thiết lập công cụ đánh giá code AI tùy chỉnh chỉ trong 5 phút bằng GitHub Actions, sử dụng sức mạnh của các mô hình ngôn ngữ lớn (LLM) để tối ưu quy trình phát triển.