CI_VSTS 在单个解决方案中为每个项目发布不同的网络工件

CI_VSTS publish different web Artifact for each project in single solution

我有一个 CI 管道 (VSTS),我可以在其中构建整个解决方案,其中在一个工件中包含两个网站项目。我想做的是构建整个解决方案,然后为每个项目创建发布工件。 例如 Project_website1 一件神器 Project_website2 一件神器 谢谢。我在 Whosebug 中尝试了类似的主题,但对我没有用

您可以使用两个发布工件任务,也可以复制文件多个任务,以在 VSTS 构建中实现任意数量的工件。例如,假设您有单个项目的当前工件,包括 _PublishedWebsites\MVS5WebApp(XCopy 可部署网站)和 _PublishedWebsites\MVS5WebApp_Package(网络部署包)。 如果你想把这两者分开,分成两个工件,你可以使用如下所示的两个 Publish Artifact 任务,每个任务指定确切的发布路径(这个路径不支持通配符,你只需要指定你需要发布的文件夹) .

结果将是两个工件

您可以从 post here 中获得更多想法。 另外 this post 可能对您了解更多可能性有用。

要分别发布两个网站项目的工件,只需要使用两个VS构建任务和两个Publish Build Artifacts任务分别构建和发布两个网站。

比如第一个VS构建任务和Publish Build Artifacts任务是针对website1的,第二个VS构建任务和Publish Build Artifacts任务是针对website2的。每个任务的详细配置如下:

  • 网站 1 的 VS 构建任务(将网站 1 的包存储在 $(build.artifactstagingdirectory)\web1 中):

  • Publish Build Artifacts for website1(将 website1 的工件从 $(build.artifactstagingdirectory)\web1 发布到工件 web1):

  • 网站 2 的 VS 构建(将网站 2 的包存储在 $(build.artifactstagingdirectory)\web2 中):

  • Publish Build Artifacts for website2(发布 website2 的工件从 $(build.artifactstagingdirectory)\web2web2):

然后您可以分别获得两个项目的构建工件:

这就是我所做的 因为我使用自己的代理 所以 web 项目发布在 agent 的每个项目发布目录中。 即目录a.

解决方法: 我所做的只是在构建整个解决方案之后,一旦 vsts 将所有网站放在发布目录 a 中。 我编写了 powershell 脚本来获取项目的每个文件并将其放在已发布文件夹 a.

的子目录下

例如 构建解决方案后发布文件夹 a 将如下所示 网站1.......xml 网站1.......zip . . . 网站 2.......xml 网站2........zip . . .

等 构建解决方案时,文件将位于上面的文件夹中。

为了为每个项目构建工件,我编写了 powershell 脚本将每个项目文件放在子目录中 例如 a\website1 网站1.......xml 网站1.......zip

a\website2 网站2.......xml 网站2.......zip

等等等等

在那之后 select 每个目录的每个发布工件,您可以为每个项目都有工件。 谢谢