将 Team City 发布推送到 Octopus Deploy

5
我遇到了问题,尝试从Team City将一个.zip文件推送到Octopus Deploy,希望能得到帮助。
我正在使用Team City上的"OctopusDeploy: Push packages"运行器,试图将"Release.%MajorVersion%.%MinorVersion%.%build.number%.zip"这个artifact推送到我们的Octopus服务器。
然而,这会导致以下错误消息:
[04:58:19][Octopus Deploy] Please specify a package to push
[04:58:19][Octopus Deploy] Exit code: -1
[04:58:19][Octopus Deploy] Octo.exe exit code: -1
[04:58:19][Step 3/3] Unable to create or deploy release. Please check the build log for details on the error.

在Team City的“生成配置”中,“常规设置”部分的“构件路径”字段中,我已定义要创建以下构件:
+:Release => Release.%MajorVersion%.%MinorVersion%.%build.number%.zip
-:Release/**/*.xml => Release.%MajorVersion%.%MinorVersion%.%build.number%.zip

这将在路径[Team City数据目录]\system\artifacts[项目名称][配置名称][唯一构建号]中创建文件"Release.%MajorVersion%.%MinorVersion%.%build.number%.zip"。
接下来,我尝试使用“OctopusDeploy:Push packages”运行程序,并将“Package paths”参数设置为“Release.%MajorVersion%.%MinorVersion%.%build.number%.zip”,因为描述性文本说“这些遵循与TeamCity工件路径相同的规则”。
然而,这似乎不起作用。我想知道为什么以及如何让它起作用。
我目前的主要问题是我不知道如何在可变工件目录中寻址“Release.%MajorVersion%.%MinorVersion%.%build.number%.zip”文件。
2个回答

4

简短回答

OctopusDeploy: Push packages步骤中,您需要更具体地指定软件包路径。通过简单地传递Release.%MajorVersion%.%MinorVersion%.%build.number%.zip,您告诉该步骤在workdir的根目录中获取该名称的软件包。但正如您已经说过的那样,该软件包实际上位于[Team City Data Directory]\system\artifacts[Project Name][Configuration Name][Unique Build Number]

因此,请尝试传递zip文件的完整路径,例如

[Team City Data Directory]\system\artifacts[Project Name][Configuration Name][Unique Build Number]\Release.%MajorVersion%.%MinorVersion%.%build.number%.zip

用适当的TeamCity变量替换方括号中的值

长回答

当它说These follow the same rules as TeamCity artifact paths时,它意味着您可以使用与+:Release => Release.zip相似的表达式来创建工件。它并不意味着它会查找工件目录中的文件。

OctopusDeploy: Push packages不仅允许您push软件包,还允许您pack它们(不太明显,是吧)。因此,如果您将(相同的)下面的表达式放在该字段中,它将创建软件包并将其推送到存储库中:

+:Release => Release.%MajorVersion%.%MinorVersion%.%build.number%.zip -:Release/**/*.xml => Release.%MajorVersion%.%MinorVersion%.%build.number%.zip

此外,如果您选中Publish packages as build artifacts复选框,则zip文件也将作为TeamCity工件可用。因此,在构建过程中,您实际上不需要当前步骤来创建工件(除非它在构建过程中有其他用途)。

enter image description here


0
请确保从NuGet包管理器中将OctoPack添加到您的项目中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接