VSTS - 将文件夹包含到ASP.NET Core app工件中

时间:2017-04-07 21:17:35

标签: angular azure-pipelines

我在一个单独的回购中有一个Angular 4项目(NG-p)。另外,我在另一个repo中有我的ASP.NET核心项目(Core-p)。构建Cope-p时,它必须包含NG-p工件。我设法做到了。以下是它的工作原理:

  • 当NG-p发生变化时,VSTS构建它并将zip文件放入Azure存储
  • 之后构建Core-p并生成......好吧,某些东西......作为BUILD .NET Core任务的一部分
  • 从Azure存储中获取该zip文件(NG-p工件),解压缩并放入$(Build.ArtifactStagingDirectory)/ wwwroot / js / app文件夹
  • 其他一切都是标准任务 - 测试,发布,发布工件

构建成功。但是当我打开工件时,它包含:

  • wwwroot文件夹(里面有所有NG-p文件)
  • 和myproject.zip文件(所有Core-p)< = NG-p文件应该在那里!

如何在myproject.zip中安装我的NG-p文件(并没有单独的wwwroot文件夹)?

2 个答案:

答案 0 :(得分:0)

是的,您可以在myproject.zip中制作NG-p文件和Core-p文件。要将NG-p文件转换为myproject.zip,您需要在Core-p构建定义中执行以下任务:

  1. 提取文件:在Azure中提取zip文件并将zip文件归档到$(Build.ArtifactStagingDirectory)(目标文件夹)。
  2. 复制文件:将文件从Core-p repo的根目录复制到$(Build.ArtifactStagingDirectory)(目标文件夹)。
  3. 存档文件:将$(Build.ArtifactStagingDirectory)文件夹中的文件压缩为$(Build.ArtifactStagingDirectory)/myproject.zip中的压缩文件(要创建的存档文件)。
  4. enter image description here

    1. 发布构建工件:将myproject.zip发布为工件。
    2. enter image description here

答案 1 :(得分:0)

好吧,我通过将Extract Files任务中的目标路径更改为以下内容来实现: $em = $this->getDoctrine()->getManager(); $userEntity = $em->getReference(User::class, $redis->hGet($key, 'id')); $articleEntity = new Article(); $articleEntity->setAuthor($userEntity); $em->persist($articleEntity); $em->flush();

现在,所有文件都在正确的位置。