如何配置webjob以天蓝色访问Web应用程序的参考项目文件

问题描述 投票:0回答:1

我有一个.net核心Web应用程序,我使用Azure Devops构建/发布管道将其部署到Azure。该项目引用了三层解决方案中的业务项目和模型项目。该模型项目由Entity Framework 6代码优先模型(包括迁移)组成。

最近,我必须部署一个触发的Web作业才能完成长期运行的任务。这只是作为普通的.Net控制台应用程序创建的,然后通过选择“发布为Azure Web作业”在Visual Studio 2017中发布。该Web作业已发布到上述.net核心Web应用程序服务中并在其下运行。它引用了.net核心Web应用程序引用的同一模型和业务项目。

[我的问题是,每当通过引入数据库迁移而更改模型时,也必须更新Web作业,因为作为WebJob项目的一部分发布的models.dll分别位于主Web应用程序下的目录app_data\jobs\triggered\webjob中。

是否有任何方法可以配置我的Web作业,以便直接从主Web应用程序中引用models.dll和business.dll?如果失败,如何在成功部署后修改Azure devops流程以将这些文件复制到webjob的目录中?是否为此提供指南?

azure asp.net-core azure-devops azure-webjobs
1个回答
0
投票

如何成功部署后,如何修改Azure devops流程以将这些文件复制到webjob的目录中?是否为此提供指南?

[AFAIK,我们可以使用powershell脚本和git命令来过滤文件修改是否来自models.dllbusiness.dll文件,例如:

$editedFiles = git diff HEAD HEAD~ --name-only
$editedFiles | ForEach-Object {
    Switch -Wildcard ($_ ) {
        'SubFolderA/models.dll*' { Write-Output "##vso[task.setvariable variable=UpdateFile]True" }
        # The rest of your path filters
    }
}

代码来自here

然后在构建管道的下一个任务中添加自定义条件:

and(succeeded(), eq(variables['UpdateFile'], 'True'))

在下一个任务中,成功部署后,我们可以使用kudu API将这些文件更新到webjob的目录:

GET /api/zip/{path}/
Zip up and download the specified folder. The zip doesn't include the top folder itself. Make sure you include
the trailing slash!

PUT /api/zip/{path}/
Upload a zip file which gets expanded into the specified folder. Existing files are not deleted
unless they need to be overwritten by files in the zip. The path can be nested (e.g. `folder1/folder2`), and needs to exist.

您可以检查similar threadthe document了解更多详细信息。

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.