获取MSDeploy以跳过文件夹中的特定文件夹和文件类型作为CCNet任务

Sim*_*tin 4 cruisecontrol.net continuous-integration ccnet-config msdeploy

我希望MSDeploy 在使用同步时跳过其他文件夹中的特定文件夹和文件类型.目前我正在使用CCNet通过同步动词调用MSDeploy来将网站从构建转移到登台服务器.由于目标上的文件是由应用程序/用户上载的文件等创建的,因此我需要排除在目标上删除特定文件夹.此外,还有站点创建的清单文件需要保留在目标上.

目前我已经使用-enableRule:DoNotDeleteRule但是在目的地上留下过时的文件.

<exec>
    <executable>$(MsDeploy)</executable>
    <baseDirectory>$(ProjectsDirectory)$(projectName)$(ProjectsWorkingDirectory)\Website\</baseDirectory>
    <buildArgs>-verb:sync 
        -source:iisApp="$(ProjectsDirectory)$(projectName)$(ProjectsWorkingDirectory)\Website\" 
        -dest:iisApp="$(website)/$(websiteFolder)"
        -enableRule:DoNotDeleteRule</buildArgs>
    <buildTimeoutSeconds>600</buildTimeoutSeconds>
    <successExitCodes>0,1,2</successExitCodes>
</exec>
Run Code Online (Sandbox Code Playgroud)

我试图使用跳过操作但遇到问题.最初我删除了DoNotDeleteRule并将其替换为(multiple)skip

<exec>
    <executable>$(MsDeploy)</executable
    <baseDirectory>$(ProjectsDirectory)$(projectName)$(ProjectsWorkingDirectory)\Website\</baseDirectory>
    <buildArgs>-verb:sync 
        -source:iisApp="$(ProjectsDirectory)$(projectName)$(ProjectsWorkingDirectory)\Website\" 
        -dest:iisApp="$(website)/$(websiteFolder)"
        -skip:objectName=dirPath,absolutePath="assets" 
        -skip:objectName=dirPath,absolutePath="survey" 
        -skip:objectName=dirPath,absolutePath="completion/custom/complete*.aspx" 
        -skip:objectName=dirPath,absolutePath="completion/custom/surveylist*.manifest" 
        -skip:objectName=dirPath,absolutePath="content/scorecardsupport" 
        -skip:objectName=dirPath,absolutePath="Desktop/docs" 
        -skip:objectName=dirPath,absolutePath="_TempImageFiles"</buildArgs>         
    <buildTimeoutSeconds>600</buildTimeoutSeconds>
    <successExitCodes>0,1,2</successExitCodes>
</exec>
Run Code Online (Sandbox Code Playgroud)

但这导致以下结果:


错误:源(iisApp)和目标(contentPath)与给定操作不兼容.
错误计数:1.

所以我从iisApp更改为contentPath而不是dirPath,absolutePath就像这样的目录:

<exec>
    <executable>$(MsDeploy)</executable
    <baseDirectory>$(ProjectsDirectory)$(projectName)$(ProjectsWorkingDirectory)\Website\</baseDirectory>
    <buildArgs>-verb:sync 
        -source:contentPath="$(ProjectsDirectory)$(projectName)$(ProjectsWorkingDirectory)\Website\" 
        -dest:contentPath="$(website)/$(websiteFolder)"
        -skip:Directory="assets" 
        -skip:Directory="survey" 
        -skip:Directory="content/scorecardsupport" 
        -skip:Directory="Desktop/docs" 
        -skip:Directory="_TempImageFiles"</buildArgs>           
    <buildTimeoutSeconds>600</buildTimeoutSeconds>
    <successExitCodes>0,1,2</successExitCodes>
</exec>
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误:路径中的非法字符:

<buildresults>
信息:添加MSDeploy.contentPath(MSDeploy.contentPath).
信息:添加contentPath(C:\ WWWRoot\MySite
-skip:Directory = assets
-skip:Directory = survey
-skip:Directory = content/scorecardsupport
-skip:Directory = Desktop/docs
-skip:Directory = _TempImageFiles).
信息:添加dirPath(C:\ WWWRoot\MySite
-skip:Directory = assets
-skip:Directory = survey
-skip:Directory = content/scorecardsupport
-skip:Directory = Desktop/docs
-skip:Directory = _TempImageFiles).
</ buildresults>

<buildresults>
错误:路径中的字符非法.
错误计数:1.
</ buildresults>

因此,我需要知道如何配置此任务,以便引用的文件夹不会在同步中删除其内容,并且还会跳过完成/自定义文件夹中的*.manifest和*.aspx文件.

Sim*_*tin 5

这个问题是......换行!当我每次-skip指令拆分到新行认为是造成路径中的非法字符.运行内联的所有skip指令解决了这个问题:

<exec>
  <executable>$(MsDeploy)</executable>
  <baseDirectory>$(ProjectsDirectory)$(projectName)$(ProjectsWorkingDirectory)\Website\</baseDirectory>
  <buildArgs>-verb:sync 
            -source:contentPath="$(ProjectsDirectory)$(projectName)$(ProjectsWorkingDirectory)\Website\" 
            -dest:contentPath="C:\WWWRoot\$(websiteFolder)" -skip:Directory="assets" -skip:Directory="_TempImageFiles" -skip:objectName=dirPath,absolutePath="\\Desktop\\Docs"
  </buildArgs>          
  <buildTimeoutSeconds>600</buildTimeoutSeconds>
  <successExitCodes>0,1,2</successExitCodes>
</exec>
Run Code Online (Sandbox Code Playgroud)