2016-02-29 14 views
5

Tôi đã cấu hình một CI build cho một ứng dụng dịch vụ Vải, trong Visual Studio Team Services, theo tài liệu này: https://azure.microsoft.com/en-us/documentation/articles/service-fabric-set-up-continuous-integrationLàm thế nào để triển khai ứng dụng vải dịch vụ từ đường ống phát hành VSTS?

Nhưng thay vì có CI build của tôi làm việc xuất bản, tôi chỉ thực hiện việc xây dựng và nhiệm vụ trọn gói, và bao gồm tất cả đầu ra liên quan đến Dịch vụ Vải, chẳng hạn như thư mục pkg, tập lệnh, xuất bản tiểu sử và thông số ứng dụng, trong phần thả. Bằng cách này, tôi có thể chuyển nó sang bản phát hành mới (bản phát hành dựa trên tác nhân) để triển khai thực tế ứng dụng vải dịch vụ của tôi.

Trong định nghĩa phát hành của tôi, tôi có một tác vụ Azure Powershell duy nhất, sử dụng điểm cuối ARM (có các cấu hình dịch vụ phù hợp được định cấu hình).

Khi tôi triển khai ứng dụng của mình vào cụm vải dịch vụ hiện có, tôi sử dụng lệnh ghép ngắn Deploy-FabricApplication mặc định đi dọc thư mục pkg và cấu hình xuất bản được định cấu hình với kết nối với cụm hiện có.

Bản phát hành không thành công với thông báo lỗi "Trường hợp kết nối cụm là null". Và tôi không thể hiểu tại sao?

Thực hiện một số gỡ lỗi Tôi đã tìm thấy rằng: Lệnh ghép ngắn Deploy-FabricApplication thực thi lệnh ghép ngắn Connect-ServiceFabricCluster tốt, nhưng ngay khi lệnh ghép ngắn Publish-NewServiceFabricApplication thực hiện xong, thì kết nối cụm bị mất.

Tôi cho rằng kịch bản này là có thể bằng cách sử dụng lệnh ghép ngắn vải dịch vụ, nhưng tôi không thể tìm ra cách giữ kết nối cụm mở trong quá trình depoyment.

CẬP NHẬT: Liên kết tới tài liệu không còn đề cập đến các kịch bản lệnh quyền hạn của Vải dịch vụ, do đó, điều kiện trước cho câu hỏi này không còn được ghi lại. Bài viết bây giờ đề cập đến các nhiệm vụ xây dựng và phát hành VSTS, có thể được ưu tiên hơn các lệnh ghép ngắn PowerShell mà tôi đã cố gắng sử dụng.

+0

Bạn có thể chia sẻ nhật ký lỗi không? Nó có luôn luôn xảy ra không? Và bạn đang sử dụng đại lý nào? Thông thường, kết nối cụm không nên bị mất khi chạy Publish-NewServiceFabricApplication. –

Trả lời

23

Khi hàm Connect-ServiceFabricCluster được gọi (từ Deploy-FabricApplication.ps1), biến số $clusterConnection cục bộ được đặt sau cuộc gọi đến Connect-ServiceFabricCluster. Bạn có thể thấy rằng sử dụng Get-Variable.

Thật không may có logic trong một số tập lệnh SDK mong đợi biến đó được đặt nhưng vì chúng chạy trong một phạm vi khác, biến cục bộ không khả dụng.

Nó hoạt động trong Visual Studio vì tập lệnh Deploy-FabricApplication.ps1 được gọi là sử dụng dot source notation, đặt biến số $clusterConnection trong phạm vi hiện tại.

Tôi không chắc chắn có cách nào để sử dụng tìm nguồn cung ứng dấu chấm khi chạy tập lệnh hay không, nhưng bạn có thể làm cho $clusterConnection biến toàn cục ngay sau khi được đặt qua cuộc gọi Connect-ServiceFabricCluster. Chỉnh sửa Deploy-FabricApplication.ps1 kịch bản của bạn và thêm dòng sau sau khi logic kết nối (~ dòng 169):

$global:clusterConnection = $clusterConnection 

Bằng cách này, bạn có thể muốn xem xét việc thiết lập custom build/release tasks đó triển khai một ứng dụng dịch vụ vải, thay vì sử dụng khác nhau Kịch bản Deploy-FabricApplication.ps1.

+0

Thx cho lời giải thích, sẽ thử nó ra sớm, và tôi đã có một ý tưởng rằng điều này là do một số vấn đề phạm vi biến quyền hạn. Tôi sẽ xem xét các tác vụ xây dựng tùy chỉnh, khi tôi có một đường dẫn phát hành chức năng và chạy. Tôi bắt đầu với Deploy-FabricApplication.ps1 vì nó được đề cập và sử dụng trong tài liệu mà tôi đã liên kết tới. – mikanyg

+1

Điều này thực sự cần phải là câu trả lời được chấp nhận – Steve

+0

Chấp nhận câu trả lời này – parek

1

Cố gắng sử dụng tác vụ "PowerShell" thay vì tác vụ "Azure PowerShell".

+0

Sử dụng tác vụ xây dựng "pure" powerhell đảm bảo rằng tập lệnh được thực thi bằng cách sử dụng. (dấu chấm) ký hiệu mà làm việc như một say mê. – mikanyg

1

Hiện đã tồn tại tác vụ VSTS được tích hợp sẵn để triển khai ứng dụng Vải dịch vụ để bạn không còn phải bận tâm khi thực thi tập lệnh PowerShell. Trang tài liệu công việc là https://www.visualstudio.com/docs/build/steps/deploy/service-fabric-deploy. Bài báo CI ban đầu cũng đã được cập nhật, cung cấp chi tiết về cách thiết lập mọi thứ: https://azure.microsoft.com/en-us/documentation/articles/service-fabric-set-up-continuous-integration/.

+0

Thấy nó một vài ngày trước, tôi thực sự đã thoát khỏi kể từ khi tôi đề nghị nó trên uservoice một vài tháng trước đây. – mikanyg

0

tôi nhấn lỗi tương tự hôm nay và mở ra một vấn đề GitHub here

Trên một mặt lưu ý, VS tạo ra kịch bản Deploy-FabricApplication.ps1 sử dụng mô-đun

"$((Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Service Fabric SDK" -Name "FabricSDKPSModulePath").FabricSDKPSModulePath)\ServiceFabricSDK.psm1"

Đó là nơi Publish-NewServiceFabricApplication đến từ đâu. Bạn có thể kiểm tra logic triển khai và viết lại theo cách sane hơn bằng cách sử dụng lệnh ghép ngắn ServiceFabric SDK cấp thấp (có khả năng nhận kết nối bằng cách sử dụng Get-ServiceFabricClusterConnection thay vì kết nối toàn cục)

Các vấn đề liên quan