.NET Core WebJob 控制台应用程序 CI/CD 使用 Azure DevOps Pipelines

Posted

技术标签:

【中文标题】.NET Core WebJob 控制台应用程序 CI/CD 使用 Azure DevOps Pipelines【英文标题】:.NET Core WebJob Console App CI/CD using Azure DevOps Pipelines 【发布时间】:2019-12-12 12:47:02 【问题描述】:

我正在尝试通过 Azure DevOps 构建我的控制台应用程序。所以对此我关注this tutorial。

以下图片来自我已经做过的。

构建解决方案管道

构建解决方案管道/发布

构建解决方案管道/工件

部署 WebJob 管道

部署 WebJob 管道/变量

当我运行 Build Solution 时,zip 似乎可以工作,因为我看到了。

但是当我运行 Deploy WebJob Pipeline 时,我得到了##[error]D:\a\1\s\***.zip not found.。我试过wwwroot/App_Data/jobs/,但还是同样的错误。

我做错了什么?设置zippedArtifactPath的正确方法是什么?

【问题讨论】:

您正在使用构建管道尝试发布。使用版本,而不是构建。 【参考方案1】:

您未正确遵循本教程。本教程告诉您创建一个版本。您正在使用构建管道来尝试发布。尽管您可以这样做,但您不应该

你有两个选择:

如果您想继续使用可视化设计器,请使用发行版。查看“发布”选项卡。发布可以与构建工件相关联,并会自动处理下载构建工件。 如果要使用 YAML,请参阅 YAML 文档并设置多阶段管道进行发布。

【讨论】:

哇!谢谢丹尼尔!事实上,我应该在 Releases(而不是 Pipelines)中。关于zippedArtifactPath,它将是工件Source alias(在发布管道页面中设置)。【参考方案2】:

我做错了什么?

检查您的错误消息##[error]D:\a\1\s\***.zip not found 我们可以在second 构建管道中找到,PS 试图在xxx\s 文件夹中获取xx.zip,而在first 构建管道中您将xx.zip 发布到@ 987654329@文件夹。

构建管道的$(System.DefaultWorkingDirectory) 是xx\s 文件夹,而that for release pipeline 是xx\a 文件夹。在第一个构建管道中,我们将 xx.zip 发布到 Build.ArtifactStagingDirectory,这是一个 xx\a 文件夹,因此我们无法从第二个构建管道的 PS 脚本中的 xx\s 文件夹访问 xx.zip。

设置 zippedArtifactPath 的正确方法是什么?

不建议使用两个构建管道构建和部署一个 Web 应用。对于正常的逻辑,我们应该像上面的Toturial 和 Daniel 建议的那样使用构建+发布管道之类的组合。

【讨论】:

【参考方案3】:

我们可以使用这个变量 $(Release.PrimaryArtifactSourceAlias) 来获取工件目录。 在您的 powerShell 脚本中,您可以设置路径变量,例如:

$path = "$(System.DefaultWorkingDirectory)\$(Release.PrimaryArtifactSourceAlias)\webjobs_drop\[ZIP_File_Name].zip" 

【讨论】:

【参考方案4】:

[您的构建工件名称]\webjobs_drop[您的压缩文件].zip

“您的构建工件名称” - 您应该从您选择构建工件的发布管道工件阶段获取它

【讨论】:

当我从菜单访问Artifacts 时。我得到No packages have been promoted to this release view。但我也在Organization scopes feeds 中看到我的用户名我的build artifact name 可以是我的用户名吗? 无论如何,这不是我的用户名,因为它不起作用。 感觉少了一步,就是不知道是哪一步。

以上是关于.NET Core WebJob 控制台应用程序 CI/CD 使用 Azure DevOps Pipelines的主要内容,如果未能解决你的问题,请参考以下文章

将 .NET Core 控制台应用程序部署到 Azure WebJobs 时加载 hostpolicy.dll 时出错

如何使用HostBuilder for WebJob?

WinSCP 无法在 Azure 应用服务上作为 WebJob 运行

NET 5.0 WebJob 只想写入我的本地 Blob 存储

针对特定 EF Core 查询优化 UNKNOWN

NET Standard vs Net Core App:创建 .NET Core 项目时(使用控制台或类库)