Pregunta

Tengo 3 scripts MSBUild para implementación, 1 para desplegar IU 1 para implementar un par de servicios web. 1 para implementar servicios de fondo.

Ahora me gustaría crear un script MSBuild de implementación con un solo clic, que llamaría a los 3 scripts anteriores, que se pueden ejecutar desde un servidor TeamCity.

Entonces, ¿cómo puedo llamar a estos tres scripts de MSBuild desde un script de MSBuild diferente?

¿Fue útil?

Solución

Otros consejos

No he usado TeamCity Server, pero una posible solución alternativa es combinar los tres scripts de compilación en un solo script. Y coloque las tareas de los tres scripts separados en destinos separados en el archivo de compilación maestro. Entonces, en lugar de los tres scripts de compilación separados, tiene un script de compilación con tres objetivos, a saber, deployUI, deployServices, deployBackend. Muestra no probada a continuación:

    <?xml version="1.0" encoding="utf-8" ?>
    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="DefaultTarget" ToolsVersion="3.5">

    <Target Name="DefaultTarget">
            <CallTarget Targets="deployUI" ContinueOnError="false"></CallTarget>
            <CallTarget Targets="deployServices" ContinueOnError="false"></CallTarget>
            <CallTarget Targets="deployBackend" ContinueOnError="false"></CallTarget> 
    </Target>

    <Target Name="deployUI">
            <!-- Put UI deployment tasks here -->
    </Target>

    <Target Name="deployServices">
            <!-- Put Services deployment tasks here -->
    </Target>

    <Target Name="deployBackend">
            <!-- Put Backend deployment tasks here -->
    </Target>
</Project>

En MSBuild 4.0, una opción podría ser importar condicionalmente el 3 proyecte archivos en su secuencia de comandos MSBuild de implementación con un solo clic:

<Import Project="ProjectPath1" Condition="'$(DeployUI)'!=''" />
<Import Project="ProjectPath2" Condition="'$(DeployWebServices)'!=''" />
<Import Project="ProjectPath3" Condition="'$(DeployBackendServices)'!=''" />

<Target Name="DeployTheWorld">
    <Message Text="Deploying..." />
</Target>

Luego use la función AfterTargets en los objetivos que desea ejecutar en sus archivos de proyecto separados que ha importado:

  <Target Name="DeployUI" AfterTargets="DeployTheWorld">
    <Message Text="Hello from DefaultAfterTarget"/>
  </Target>

Esto le dará flexibilidad para personalizar la implementación desde TeamCity.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top