Build và Deploy ASP.NET Applicaiton lên Azure Web App bằng Visual Studio Online

Trong bài viết này, mình sẽ hướng dẫn các bạn cách build 1 project đơn giản trên VSO và thực hiện deploy trên Azure. Quá trình đó gọi là CI và CD
  • 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.


Tại sao phải thực hiện build tự động và deploy tự động?

Thực ra, bạn vẫn có thể deploy thủ công bằng cách download file publish profile từ Azure Web App, và đưa website lên chỉ với 1 cú click chuột. Bạn muốn deploy website lên nhiều môi trường, ví dụ như Dev, QC, Staging, … Bạn phải setting nhiều thứ như connection string, web-services, version,… Tất cả phải làm bằng tay và bạn phải nhớ. Lỡ 1 ngày nào đó đẹp trời bạn quên 1 config nào đó thì sao.
CI sẽ giúp bạn build project thành 1 file zip, với các package và config cần thiết để run 1 web application.
CD sẽ giúp bạn đưa source từ artifacts lên Azure bằng cách cấu hình Azure Subscription, hoặc FTP, …

Tạo, build và deploy Web Application lên Azure Web App

Thực hiện qua các bước:
  1. Tạo solution ASP.NET Web Application và đưa lên VSO
  2. Thiết lập CI
  3. Thiết lập CD

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 Project nếu chưa có.


Clone project về:

Tạo project Web Application, lưu vào thư mục mà bạn vừa clone project về.
Build và chạy project lên.

Commit and push code
Check your code: https://<your-account>.visualstudio.com/CI-Demo

Configure continuous integration

Trong VSO, nhấp vào Build and Release => trong tab Build, nhấp New Definition.

Chọn ASP.NET => Apply

Chọn Process=> Chọn lại đường dẫn tới file *.sln hoặc file packages.config

Bạn nên chọn lại đường dẫn tới file *.sln hoặc file packages.config. Trường hợp không tìm thấy file solution hoặc packages, source code sẽ được nén lại thay vì compiled code.

Bạn nên bỏ chọn Enable continuous integration.

Nhấp Save and queue => Save

Nhập thông tin cần thay đổi và cập nhật lại Variables



Sau đó bạn nhấp vào link để đi tới trang hiển thị quá trình build project

CI process

Nếu build thành công, bạn sẽ thấy giao diện:

Tập tin sau khi build nằm trong Artifacts

Thiết lập CD (continuous deployment)

Nhấp chọn Build and Release => Releases

Nhấp + => Create release definition

Chọn Template Azure App Service Deployment

Bạn nhấn nút Apply.
Bạn chọn Project và source cần để deploy. Trong trường hợp này, mình có định nghĩa 2 source StepOne và Demo-ASP.NET-CI. Bạn chọn Demo-ASP.NET-CI.

Với các tùy chọn tiếp theo, bạn cứ để như mặc định là được.


Tiếp theo, bạn cần đặt tên Environment. Bạn cần đặt tên lại để phân biệt môi trường deploy giữa các phiên bản Demo, Staging, hoặc Production.

Sau đó bạn nhấp vào tab Tasks, để định nghĩa các bước thiết lập account và đưa source lên Azure

Ở hình trên, mình có 2 account Azure Pass và Visual Studio Enterprise. Bạn chọn Account nào có liên kết với Azure Web App mà bạn cần đưa source lên.
Trường hợp bạn chưa có Azure subscription, click vào Manage để thực hiện việc liên kết.

Có 2 cách tạo subscription, 1 là bạn sử dụng Azure Classic, 2 là bạn sử dụng Azure Resource Manager

Azure Classic

Nhấp New Service Endpoint => Azure Classic

Một hộp thoại xuất hiện như sau:

Nhấp vào link publish settings file sẽ dẫn tới trang Publish Settings ở Azure Portal.

Bạn chọn Azure subscriptions, bấm Validate và rồi bấm nút Download Publish Settings.
Sau khi tải file Publish Settings về, bạn điền thông tin và Save lại.
Trường hợp bạn gặp thông báo: “The selected subscription 'Visual Studio Enterprise – MPN' is missing co-admin priviledges. Please check permissions.” Có nghĩa là bạn không thể sử dụng Azure Subscription để deploy trực tiếp lên Azure. Trong trường hợp, bạn cấu hình lại CD để sử dụng FTP để đưa source lên Azure.

Azure Resource Manager

Sau đó chọn Azure Resource Manager

Chọn Subscription và bấm OK.

Trường hợp thiếu permission, bạn sẽ gặp thông báo lỗi tương tự như ở bước trên:

https://docs.microsoft.com/en-us/VSO/build-release/concepts/library/service-endpoints#sep-azure-rm
Quay trở lại tab Tasks, bạn chọn Azure subscription.
Chọn connection bạn vừa thiết lập ở bước trên hoặc subscriptions được gợi ý từ VSO. Trong trường hợp chọn subscription được gợi ý, bạn cần Authorize subscription đó.

Ở đây, mình chọn Azure Pass.

Đổi tên Release definition, rồi bấm nút Save.

Sau đó bấm nút Release

Chọn Environment =>Create.

Bạn sẽ thấy Environment Production được deploy succeeded

Kiểm tra lại trên Azure websites

Và kiểm tra lại các file ở thư mục wwwroot

Tham khảo




Chúc các bạn thành công
Nhatkyhoctap's blog