2016-02-20 2 views
1

У меня есть 2 строит (в TeamCity):WebDeploy: объединить содержание

один, который производит бэкенд для веб-сайта, с WebAPI.

I пакет, который веб-сайт с WebDeploy как таковой:

/p:DeployOnBuild=True /p:PublishProfile="Default" /p:ProfileTransformWebConfigEnabled=False

который доставляет мне хороший WebDeploy.zip

Теперь у меня есть второй билд, который строит и компилирует веб-сайта фронтэнда.

Внешние и внутренние компоненты разрабатываются различными командами и, таким образом, производят артефакты в разное время.

Я хочу, чтобы иметь возможность развернуть версию серверного с фронтэндом слился в.

Теперь у меня есть 2 варианта, либо восстановить бэкенд с зависимостью от внешнего интерфейса (который создает новые ненужные сборки) , или что-то еще (чего я действительно хочу).

Я хочу, чтобы с учетом пакета развертывания в Интернете объединить файлы с интерфейсом, развернуть веб-сайт в IIS.

Теперь я могу вручную распаковать пакет webdeploy и перестроить его вручную. Однако пути там основаны на путях расположения, в котором он построен (и я не контролирую это).

Пример: C_C\TeamCity\...blabla...\obj\Release\Package\PackageTmp\Web.config

Что делает его трудно выяснить структуру без разбора archive.xml найденных в корне пакета WebDeploy.

Возможно, но в идеале мне нужна команда MSBuild, которая позволила бы мне «объединить» содержимое каталога на этот сайт.

Вопрос:

  1. Возможно ли это с MSDeploy?
  2. Если это невозможно, можно ли изменить имя каталога, чтобы связать пакет WebDeploy, чтобы иметь что-то более простое, если я хочу добавить дополнительные файлы?

ответ

1

Вы можете развернуть пакет в локальный каталог с помощью провайдера dirPath, добавить свои файлы и затем переупаковать. Сначала вам нужно создать манифест назначения, потому что WebDeploy создает пакет с манифестом источника. Вы можете создать файл «DestManifest.xml» со ​​следующим содержанием:

<?xml version="1.0" encoding="utf-8"?> 
<sitemanifest> 
    <dirPath path="c:\repackagewebdeploy" /> 
    <auto /> 
    <auto /> 
</sitemanifest> 

Тогда вы можете вызвать MSDeploy к распаковать и упаковать.

msdeploy -verb:sync -source:package=c:\packagePath\package.zip -dest:manifest=[path to destination manifest] 
[copy files] 
msdeploy -verb:sync -source:dirPath=c:\repackagewebdeploy -dest:package=c:\packagePath\newPackage.zip 

Это предполагает, что вам не нужны другие поставщики setAcl. Обычно нам это не нужно, поэтому я игнорирую их, но вы можете добавить их обратно в финальный пакет, используя манифест, вместо того, чтобы напрямую использовать dirPath.

+0

К сожалению, поставщик 'package' несовместим с провайдером' dirPath'. 'Ошибка: источник (sitemanifest) и пункт назначения (dirPath) несовместимы для данной операции. Кол-во ошибок: 1.' – Snake

+0

Да, забыл про манифест. Я обновил свой ответ на счет манифеста и протестировал его, чтобы я знал, что он работает на этот раз. Пожалуйста, дайте мне знать, если у вас есть другие проблемы. – chief7

Смежные вопросы