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: