Why does Azure cloud service in Octopus fail with error: "Your package does not appear to contain any Azure Cloud Service package (.cspkg) files."

Why does Azure cloud service in Octopus fail with error: "Your package does not appear to contain any Azure Cloud Service package (.cspkg) files."

我们有一个由 Octopus Deploy 部署的 Azure 云服务。它开始失败并显示错误 "Your package does not appear to contain any Azure Cloud Service package (.cspkg) files." 这很奇怪,因为它曾经成功,并且此项目中没有更改任何代码。

以下是描述失败的日志行:

Verbose  | Invoking target script C:\Windows\system32\config\systemprofile\AppData\Local\Calamari.Azure\Tempa0a164b-5ce8-4840-82a6-1972fcb6a3d0\SwapAzureCloudServiceDeployment.ps1 with  parameters
Verbose  | Extracting package to: C:\Octopus\Work160716115609-9\staging
Verbose  | Extracted 0 files
Error    | Your package does not appear to contain any Azure Cloud Service package (.cspkg) files.

此代码用于生成以下日志行:

Verbose  | Invoking target script C:\Windows\system32\config\systemprofile\AppData\Local\Calamari.Azure\Temp08e8af-46e5-4d57-a5d6-4cac4e677ab5\SwapAzureCloudServiceDeployment.ps1
Verbose  | Extracting package to: C:\Octopus\Work160504231837-40
Verbose  | Extracted 4 files
Verbose  | Ensuring cloud-service-package is V20120315 format.
Verbose  | Package is V20120315 format.
Verbose  | Extracting Cloud Service package: 'C:\Octopus\Work160504231837-40\Transactions.cspkg'

Octopus 服务器和 Tentacles 都是 3.3.10 版本。

nuget 包可用,当我下载解压它们时,内容是相同的,除了构建日期和标识符。

可能发生了什么变化并导致失败?

这个失败的原因是Nuget 3.4.3。它似乎已在 3.4.4+.

中修复

压缩包中似乎创建了一个名称为空的子文件夹,如果您在 7zip 之类的 GUI 中打开它,您可以看到它。只是提取它会将这个空白名称文件夹的内容放在根目录中,因此它是隐藏的。 Octopus 提取包的方式似乎缺少这些文件,并且找不到 cspkg,部署失败。

注意:Nuget 3.4.4 已经发布,但在使用 Install-Package Nuget.CommandLine 时仍然只出现在预发布提要中。 This is a known issue,不确定为什么它仍处于预发布状态。