.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 时出错
WinSCP 无法在 Azure 应用服务上作为 WebJob 运行