VSTS Drop Single Artifact - 发布到 Azure 多个网站

Posted

技术标签:

【中文标题】VSTS Drop Single Artifact - 发布到 Azure 多个网站【英文标题】:VSTS Drop Single Artifact - Release to Azure Multiple Websites 【发布时间】:2018-09-05 13:22:18 【问题描述】:

我有一个包含多个网站项目的 Visual Studio 解决方案。

我目前正在 VSTS 中针对 1 个存储库运行构建,该存储库正在创建一个 drop.zip 工件,该工件已生成 3 个按项目/文件夹名称分段的网站。

现在我想要 3 个发布定义,将每个文件夹发布到 Azure 应用服务。

如何做到这一点?

在 Azure App Service Release 步骤中,我只能指向一个 Zip 文件。我需要指向 Zip 文件中的一个文件夹,对吗?

【问题讨论】:

请看编辑 哦,我明白你的意思了,我不知道你能做些什么,除了单独包装它们,对不起 如何将它们单独打包?我会接受这种方法,但似乎也看不到 嗯,它只是一个 zip 文件,您可以运行脚本来单独打包它们,或者您可以在构建管道中更加小心地打包 zip,我不确定,您会需要查看构建的结果并确定前进的方向 【参考方案1】:

您可以为 3 个网站中的每一个创建一个 zip。将网站分别发布到构建管道中的 3 个不同的构建工件。

在发布定义中,将所有 3 个工件添加到工件部分,并将它们部署到各自的 Azure 应用服务。

【讨论】:

谢谢!我现在的问题是如何为 3 个网站中的每一个创建一个 Zip 我认为您现在已经构建、压缩并发布了整个解决方案。只需重复这些步骤 3 次,并在每个 bulid 任务中指定不同项目的路径。 我不关注。我正在解决方案级别构建。它只是传递这些参数:/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactstagingdirectory)\WebApp.zip" /p: DeployIisAppPath="Default Web Site" /p:Configuration=Release /p:Platform="Any CPU" 您是否在使用“.NET Core”、“MSBuild”或“Visual Studio Build”之类的构建任务?它们都有一个字段“项目路径”、“项目”或“解决方案”。在此字段中写入 .csproj 文件的路径。这只会构建指定的项目,而不是整个解决方案。然后将您刚刚构建的项目发布为工件。 如果这没有帮助,请发布一个新问题,您可以在其中详细描述您的新问题以及您当前的构建管道如何工作。【参考方案2】:

它不一定是 zip 文件。就像屏幕截图中突出显示的部分一样。它可能是一个包文件或文件夹。

因此,对于您的场景,您只需配置 3 版本定义以链接到相同的构建工件。然后在发布定义中添加两个任务:

    解压文件任务 - 使用此任务解压 zip 文件 Azure 应用服务部署任务 - 在此任务中,将“包或文件夹”路径设置为解压缩的项目文件夹。

【讨论】:

【参考方案3】:

我能够通过使用以下 MSBuild 配置来完成这项工作:

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=false /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactstagingdirectory)" /p:DeployIisAppPath="Default Web Site" /p:Configuration=Release /p:Platform="Any CPU"

这会为解决方案中的每个 Web 应用生成一个单独的 Zip 文件。

【讨论】:

以上是关于VSTS Drop Single Artifact - 发布到 Azure 多个网站的主要内容,如果未能解决你的问题,请参考以下文章

pandas使用drop函数删除dataframe中的指定单个数据列或者多个数据列(drop a single column or multiple columns)

解决:single failed: For artifact {null:null:null:jar}: The groupId cannot be empty. 把工程依赖的jar包打到入jar中

单细胞参考文献 single cell

您如何使用Azure Devops CLI下载构建工件?

如果没有 VSTS 中的构建定义,是不是可以在 VSTS 中创建发布定义?

VSTS Online - 将文件从AGENT MACHINE复制到VSTS