如何使用 Publish Build Artifact Task 发布特定文件
How to publish specific files using Publish Build Artifact Task
我正在使用 Visual Studio Build In Azure Pipeline 构建 C# 应用程序。
我的解决方案包含多个项目(ManagerWeb 和 WebAPI)。
我想分别发布两个单独的 Artifact ManagerWeb 和 WebAPI。
Build.ArtifactStagingDirectory
.
中存在所有必需的文件
如何指定一个模式来获得两个单独的工件?
示例 第一个工件中所有文件名带有 WebAPI
,另一个工件中带有 ManagerWeb
。
ArtifactStaging 目录中的文件名如下
Something.Manager.WebAPI.deploy.cmd
Something.Manager.WebAPI.deploy-readme.txt
Something.Manager.WebAPI.SetParameters.xml
Something.Manager.WebAPI.SourceManifest.xml
Something.Manager.WebAPI.zip
Something.ManagerWeb.deploy.cmd
Something.ManagerWeb.deploy-readme.txt
Something.ManagerWeb.SetParameters.xml
Something.ManagerWeb.SourceManifest.xml
Something.ManagerWeb.zip
任何帮助都将不胜感激。
提前致谢。
添加 PowerShell 任务以创建两个文件夹并将文件移动到那里:
cd $(Build.ArtifactStagingDirectory)
$files = dir
mkdir WebAPI
mkdir ManagerWeb
ForEach($file in $files)
{
if($file.FullName.Contains("WebAPI"))
{
mv $file.FullName -Destination WebAPI
}
else
{
mv $file.FullName -Destination ManagerWeb
}
}
然后在 "Path to publish" 字段中添加文件夹:
对于 WebApi 工件:
$(Build.ArtifactStagingDirectory)/WebAPI
对于 ManagerWeb 工件:
$(Build.ArtifactStagingDirectory)/ManagerWeb
添加两个复制文件步骤复制;
- ManagerWeb 文件到
$(Build.ArtifactStagingDirectory)\ManagerWeb
- WebAPI 文件到
$(Build.ArtifactStagingDirectory)\WebAPI
然后有两个 Publish Artifact 步骤;
- 将
$(Build.ArtifactStagingDirectory)\ManagerWeb
发布为 ManagerWeb
- 将
$(Build.ArtifactStagingDirectory)\WebAPI
发布为 WebAPI
我对此进行了模拟并按如下方式导出了 YAML;
pool:
name: Hosted VS2017
steps:
- task: CopyFiles@2
displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)\ManagerWeb'
inputs:
SourceFolder: 'your/path/here/ManagerWeb'
TargetFolder: '$(Build.ArtifactStagingDirectory)\ManagerWeb'
- task: CopyFiles@2
displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)\WebAPI'
inputs:
SourceFolder: 'your/path/here/WebAPI'
TargetFolder: '$(Build.ArtifactStagingDirectory)\WebAPI'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: ManagerWeb'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)\ManagerWeb'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: WebAPI'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)\WebAPI'
我正在使用 Visual Studio Build In Azure Pipeline 构建 C# 应用程序。
我的解决方案包含多个项目(ManagerWeb 和 WebAPI)。
我想分别发布两个单独的 Artifact ManagerWeb 和 WebAPI。
Build.ArtifactStagingDirectory
.
如何指定一个模式来获得两个单独的工件?
示例 第一个工件中所有文件名带有 WebAPI
,另一个工件中带有 ManagerWeb
。
ArtifactStaging 目录中的文件名如下
Something.Manager.WebAPI.deploy.cmd
Something.Manager.WebAPI.deploy-readme.txt
Something.Manager.WebAPI.SetParameters.xml
Something.Manager.WebAPI.SourceManifest.xml
Something.Manager.WebAPI.zip
Something.ManagerWeb.deploy.cmd
Something.ManagerWeb.deploy-readme.txt
Something.ManagerWeb.SetParameters.xml
Something.ManagerWeb.SourceManifest.xml
Something.ManagerWeb.zip
任何帮助都将不胜感激。
提前致谢。
添加 PowerShell 任务以创建两个文件夹并将文件移动到那里:
cd $(Build.ArtifactStagingDirectory)
$files = dir
mkdir WebAPI
mkdir ManagerWeb
ForEach($file in $files)
{
if($file.FullName.Contains("WebAPI"))
{
mv $file.FullName -Destination WebAPI
}
else
{
mv $file.FullName -Destination ManagerWeb
}
}
然后在 "Path to publish" 字段中添加文件夹:
对于 WebApi 工件:
$(Build.ArtifactStagingDirectory)/WebAPI
对于 ManagerWeb 工件:
$(Build.ArtifactStagingDirectory)/ManagerWeb
添加两个复制文件步骤复制;
- ManagerWeb 文件到
$(Build.ArtifactStagingDirectory)\ManagerWeb
- WebAPI 文件到
$(Build.ArtifactStagingDirectory)\WebAPI
然后有两个 Publish Artifact 步骤;
- 将
$(Build.ArtifactStagingDirectory)\ManagerWeb
发布为 ManagerWeb - 将
$(Build.ArtifactStagingDirectory)\WebAPI
发布为 WebAPI
我对此进行了模拟并按如下方式导出了 YAML;
pool:
name: Hosted VS2017
steps:
- task: CopyFiles@2
displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)\ManagerWeb'
inputs:
SourceFolder: 'your/path/here/ManagerWeb'
TargetFolder: '$(Build.ArtifactStagingDirectory)\ManagerWeb'
- task: CopyFiles@2
displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)\WebAPI'
inputs:
SourceFolder: 'your/path/here/WebAPI'
TargetFolder: '$(Build.ArtifactStagingDirectory)\WebAPI'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: ManagerWeb'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)\ManagerWeb'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: WebAPI'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)\WebAPI'