Ở nhiều dự án ASP.NET Core chạy trên IIS, quy trình deploy thường bắt đầu khá đơn giản: Publish từ Visual Studio Remote Desktop vào server Copy đè file Restart IIS Cách làm này ổn khi dự án còn nhỏ. Tuy nhiên khi số lần release tăng lên, việc deploy thủ công bắt đầu xuất hiện nhiều vấn đề: Dễ quên bước Khó rollback Khó truy vết lỗi Mất thời gian khi release nhiều lần trong ngày Trong bài viết này, mình sẽ cấu hình một pipeline CI/CD bằng GitHub Actions cho ASP.NET Core chạy trên IIS với ba giai đoạn riêng biệt: flowchart TD A[Build] --> B[Test] B --> C[Deploy] Pipeline sẽ tự động: Build source code Chạy Unit Test Publish artifact Thay thế Connection String bằng GitHub Secrets Deploy lên IIS thông qua MSDeploy Kiến trúc Pipeline Thay vì đặt toàn bộ logic vào một job duy nhất, mình tách pipeline thành ba job: Job Mục đích Build Restore, Build và Publish Test Chạy Unit Test Deploy Deploy lên IIS Luồng hoạt động:...
Khi bắt đầu xây dựng trí tuệ nhân tạo (AI) cho các trò chơi đối kháng có chiến thuật như Cờ tướng, Cờ vua, hay Tic-Tac-Toe, thuật toán đầu tiên và là nền móng cho mọi engine hiện đại chính là Minimax . Để hiểu bản chất của Minimax, chúng ta không cần lao ngay vào những thế cờ phức tạp. Hãy cùng quay ngược thời gian, bước vào một bàn tiệc luận anh hùng giữa hai nhân vật lẫy lừng thời Tam Quốc: Tào Tháo và Lưu Bị . 1. Điển Tích "Chia Báu Vật" Giữa Tào Tháo Và Lưu Bị Giả sử Tào Tháo và Lưu Bị bắt gặp 4 chiếc hòm chứa lượng vàng khác nhau. Tào Tháo (đại diện cho AI ) được quyền chọn trước một trong hai lối đi dẫn đến các cặp hòm. Tuy nhiên, Lưu Bị (đại diện cho Đối thủ ) lại là người được quyền mở chiếc hòm cuối cùng trong lối đi đó để lấy vàng. Mục tiêu của hai người hoàn toàn trái ngược nhau: Tào Tháo (AI / Maximizer): Luôn muốn chọn lối đi sao cho lượng vàng nhận được là lớn nhất (Max) . Lưu Bị (Đối thủ / Minimizer): Luôn muốn chọn chiếc hòm sao cho lượn...