Deploy ASP.NET Core với mô hình Continuous Build sử dụng Visual Studio

ASP.NET Core là framework thế hệ tiếp theo của ASP.NET dùng để xây dựng ứng dụng web và ứng dụng đám mây. Bài viết giới thiệu các kiến thức cơ bản và cấu hình continuous integration (CI) và continuous deployment (CD) để thiết lập cơ chế tự động build và deploy ứng dụng ASP.NET Core lên Azure sử dụng Visual Studio Online (VSO).

Các khái niệm cơ bản:

  • CI là quy trình tự động build (và chạy test nếu có) ngay khi code bạn được commit hoặc check in lên project repository trên source control team bạn. Cho phép bạn nhận được các feedback tức thì về việc code bạn có khả thi khi build và sẵn sàng để deploy chưa.
  • CD là quy trình tự động chạy deploy khi có build mới thành công.
  • Kết hợp lại với việc sử dụng CI và CD khi có sự thay đổi code trên repository khi hoàn tất commit hoặc check, code của bạn sẽ được nhanh chống được kiểm tra, build và tự động deploy lên server test, live web site, hoặc bất cứ nơi nào bạn muốn.

Yêu cầu:

  • Tài khoản Visual Studio Online (Visual Studio Team Services): xem hướng dẫn đăng ký miễn phí ở đây
  • Tài khoản Microsoft Azure, có thể đăng ký dùng thử miễn phí tại đây
  • Tài khoản đăng ký VSO của bạn phải có quyền truy cập admin Azure (bạn có thể dùng cùng email đăng ký hoặc grant quyền trong Azure Portal)

Tạo project & quản lý source code với VSO

Truy cập vào tài khoản VSO của bạn, đường dẫn truy cập có dạng https://{your-team-name}.visualstudio.com

Tạo mới một Project nếu chưa có

Sau đó làm theo hướng dẫn để push code lên repository của project:

Bạn có thể tạo bao nhiêu repository trên VSO Project tùy thích, sau khi commit và push code từ local lên, bạn có thể theo dõi history cũng như tình trạng hiện tại của source code trên VSO.

Source code của mình chứa trong repository tên là MyWeb và project web của mình thì ở trong thư mục con tên cũng tên là MyWeb

Publish web app lên Azure App Service

Tiếp theo mình thử deploy source của mình lên azure theo cách thông thường với Visual Studio. Bằng cách chọn project MyWeb của mình, vào Build -> Publish MyWeb

Tiếp theo chọn Microsoft Azure App Service, bạn có thể chọn deploy lên một App Service có sẵn hoặc tạo mới bằng cách chọn Select Existing hoặc Create New, ở đây mình chọn Create New và tạo mới App Service ngay trên Visual Studio luôn

Những gì cần làm là chờ một vài phút bạn sẽ thấy ứng dụng web của bạn chạy trên môi trường Azure:

Cấu hình CI build trên VSO

Trỏ đển team project của bạn trên VSO, vào mục Build & Release

Chọn New tạo mới một Build Definition, chọn Empty Process

Hiện tại trên VSO đang chạy thử nghiệm giao diện mới, bạn có thể nhấn Try It! bên cạnh dòng “New Build Editor:…”

Chọn Repository chọn Branch chứa source code sử dụng khi build.

Sau đó thêm các Task theo thứ tự như sau:

Restore NuGet packages.

  • Tool: dotnet
  • Arguments: restore
  • Advanced, Working folder: Chọn folder chứa project của bạn trong reposiory, ở đây mình chọn MyWeb

Build project ASP.NET Core và ghi vào thư mục output publish.

  • Tool: dotnet
  • Arguments: publish -c $(BuildConfiguration) -o $(Build.ArtifactStagingDirectory)
  • Advanced, Working folder: Chọn folder chứa project của bạn trong reposiory, ở đây mình chọn MyWeb.

Đóng gói và nén các files output thành package.

  • Root folder to archive: $(Build.ArtifactStagingDirectory)
  • Prefix root folder name to archive paths: Không check
  • Archive type: zip
  • Artifact file to create: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip

Upload lại file package vào server để chuẩn bị cho release.

  • Path to publish: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
  • Artifact name: drop
  • Artifact type: Server

Bật tính năng CI để chạy auto build khi có commit mới trên reposistory

Chọn Save & queue để bắt đầu chạy Build. Chọn Host agent là Hosted VS2017

Quá trình build sẽ bắt đầu chạy từng step một và kết thúc trong vài phút

Web Deploy Package của bạn sẽ được zip lại và lưu trữ theo trong Artifacts

Cấu hình CD Deploy trên VSO

Vào mục Releases trong Build & Release, chọn New definition, chọn Azure App Service Deployment

Chọn Next, chọn Project và Build Definition mà bạn muốn setup deploy, check Continuous deployment (create release and deploy whenever a build completes) nếu bạn muốn bật auto deploy khi có build mới thành công.

Mặc định VSO sẽ cấu hình cho bạn một môi trường để deploy app lên azure, bạn có thể thêm nhiều môi trường khác tùy thích.

Tiếp theo bạn chọn Azure Subscription của bạn và nhận Auhtorize để liên kết Azure và VSO.

Chọn App Service Name bạn đã tạo. Và cấu hình các lựa chọn khác nếu cần.

Bây giờ bạn có thể nhấn Save để lưu lại và có thể chạy một Release mới với build gần nhât bằng chọn Create Release

Và đây là kết quả

Một số lựa chọn khác mà bạn có thể thiết lập cho CI và CD

  • Thêm Unit Test vào quá trình Build
  • Thông báo cho teams qua Email, Slack, Microsoft Teams, … khi có build hoặc release thay đổi (thành công, thất bại,…)
  • Thêm nhiều môi trường release cho CD.
  • Cấu hình sao cho cần có người approve trước khi build được release.

Bài viết được thực hiện bởi tác giả Nguyễn Khương – chuyên gia MVP của Microsoft. Link bài viết gốc tại đây.

Leave a Reply

Your email address will not be published. Required fields are marked *