【问题标题】:Build and publish artifact task questions构建和发布工件任务问题
【发布时间】:2021-01-04 22:24:30
【问题描述】:

PublishBuildArtifacts@1
https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/publish-build-artifacts?view=azure-devops
问题:
(1)指定artifactName的结果是什么?从文档中不清楚。我在大多数示例中都看到了这一点,它成为 $(Build.ArtifactStagingDirectory) 路径中的子文件夹。如果我有其他任务构建包含多个项目的解决方案的不同部分,我可以指定另一个,例如。 'drop2' 还是这个“drop”特别?

(2) 如果使用私有 nuget 提要,为什么还必须包含一个 nuget.config 文件来引用包?私有源是通过 azure 项目设置中的服务连接设置的。看来你应该可以离开了

feedsToUse: 'config'
nugetConfigPath: 'Nuget.config'

(3) 如果我在一个解决方案中有多个项目 - 例如。一个 .net 核心 Web 应用程序以及几个针对 .net 标准 2.x 的类库以及一个 .net 核心控制台应用程序,什么时候使用这两个任务更好:
VSBuild@1 或 DotNetCoreCLI@2
构建的最终结果是我在输出中有两个子文件夹
drop & dropsrvc,这正是我所需要的。 dropvc 将我的服务项目放在一个 zip 文件中

我想将 .net 核心 Web 应用程序发布为发布管道中的准备复制文件夹。我有这个工作,主要是通过重新利用我使用 .net 框架项目所做的另一个构建来反复试验,但现在我想知道我是否应该使用 DotNetCoreCLI 任务?

这是我的 yaml 文件。如何替换 VS

# .NET Desktop
# Build and run tests for .NET Desktop or Windows classic desktop solutions.
# Add steps that publish symbols, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/apps/windows/dot-net

#trigger:
#- dev

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  jobSrvProj: '**/myapp.sln.job/myapp.sln.JobSrv.csproj'
  reloWeb: '**/myapp.sln.Web/myapp.sln.Web.csproj'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Dev'

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    command: 'restore'
    restoreSolution: '$(solution)'
    feedsToUse: 'config'
    nugetConfigPath: 'Nuget.config'
    externalFeedCredentials: 'Telerik nuget feed'


# web
- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"  /p:UseWPP_CopyWebApplication=true  /p:OutDir="$(build.artifactstagingdirectory)" 
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'


# jobSrv
- task: VSBuild@1
  inputs:
    solution: '$(jobSrvProj)'
    msbuildArgs: '/p:OutputPath="$(Build.BinariesDirectory)\jobSrv-$(Build.BuildId)"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

# jobSrv
- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(Build.BinariesDirectory)\jobSrv-$(Build.BuildId)'
    includeRootFolder: false
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/jobSrv-$(Build.BuildId)/jobSrv-$(Build.BuildId).zip'
    replaceExistingArchive: true

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)\jobSrv-$(Build.BuildId)'
    ArtifactName: 'dropsrvc'
    publishLocation: 'Container'

【问题讨论】:

    标签: azure-pipelines


    【解决方案1】:
    1. 这是您自己指定的工件名称。通常,您将 $(Build.ArtifactStagingDirectory) 文件夹发布到 DevOps。如果你想拥有多个 Artifacts,你可以添加多个 PublishBuildArtifacts 任务。例如:

    1. Nuget 任务中不必包含 nuget.config 文件。您可以在此处从 Azure Artifacts 和/或 NuGet.org 中选择一个源,或者将 nuget.config 文件提交到您的源代码存储库并在此处设置其路径。

    2. VSBuild 任务使用 MSBuild 构建项目,而 DotNetCoreCLI 任务构建、测试、打包或发布 dotnet 应用程序,或运行自定义 dotnet 命令。您可以使用 VSBuild 任务构建 .net 框架项目,并使用 DotNetCoreCLI 任务在同一管道中构建 .net 核心项目。

    【讨论】:

      猜你喜欢
      • 2023-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      • 2018-08-31
      相关资源
      最近更新 更多