the*_*yes 6 azure-devops azure-pipelines-build-task azure-pipelines azure-pipelines-release-pipeline
我正在尝试为大型解决方案设置自动构建和部署。单个解决方案在“ $(Build.ArtifactStagingDirectory)”位置生成2个zip文件夹,其中包含所有正确的文件。出于测试/故障排除的目的,我仅查看这些zip文件之一,但是最终两个站点都必须采用这种方式进行部署。
但是,要获取实际文件,您必须通过14个不必要的子文件夹。更复杂的是,其中的8个是可变的,具体取决于构建配置的某些元素(某些归因于git repo中的文件夹结构)。
我不需要这些子文件夹。另一个问题是我实际上并不需要100%的平面文件。我需要2个带有子文件夹的文件夹才能包含在最终提取的目录中。(最终目录是IIS站点的物理路径。)是否可以执行此操作?
我试过了:
提取生成的zip文件,将其解压缩到temp目录,然后重新打包,所有这些都在构建机器上。
从VSTS下载已发布的zip文件,在发布计算机上本地将其解压缩,然后将内容复制到正确的目录中。
使用复制对话框中的“ Flatten Folders”高级选项。
如果不可能仅将构建步骤生成的zip文件部分压扁,我将不胜感激,可以帮助您弄清楚我可以使用变量拉出多少条令人费解的路径。
还有就是要移动的内容非常简单的方法只有内容和子目录的PackageTmp文件夹中生成工件而脱落上面不必要的文件夹结构的文件夹,并且不使用“拼合文件夹”选项(因为你可能想保留的文件夹PackageTmp完整的结构):
首先,在“构建解决方案”任务中,设置类似于以下内容的“ MS构建参数”:
/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=false /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.binariesdirectory)"
Run Code Online (Sandbox Code Playgroud)
注意,/p:PackageAsSingleFile=false将其设置为false;您现在还不想将其压缩。另请注意设置/p:PackageLocation="$(build.binariesdirectory)。您不希望将输出直接转到默认情况下配置的工件登台目录。
接下来,添加一个Powershell任务,并添加以下内联脚本:
$folder = Get-ChildItem -Directory -Path '.\*' -Include 'PackageTmp' -Recurse
Write-Host "##vso[task.setvariable variable=PathToPackageTmpFolder]$($folder.FullName)"
Run Code Online (Sandbox Code Playgroud)
这会将PackageTmp文件夹的标准路径存储在名为的变量中PathToPackageTmpFolder。在高级选项下,将工作目录设置为$(build.binariesdirectory)
现在添加一个“复制文件”任务,以仅将PackageTmp及其子文件夹的内容移动到工件登台目录。设置源文件夹$(PathToPackageTmpFolder),对内容**和目标文件夹到$(build.artifactstagingdirectory)。你们都准备好了!
这是 MSBuild 部署/发布到包操作,部署到服务器后文件夹结构将不会保留\xe2\x80\x99。
\n\n您可以指定/p:PackageTempRootDir=""msbuild 参数来忽略项目路径的文件夹结构。
另一种方法是,您可以通过 FileSystem 方法发布项目,然后通过 Archive files 任务归档文件。
\n| 归档时间: |
|
| 查看次数: |
989 次 |
| 最近记录: |