设置azure-pipelines.yml“目录'/ home / vsts / work / 1 / a'为空。”使用ASP.NET Core

时间:2019-04-22 15:19:33

标签: asp.net-core azure-devops azure-pipelines asp.net-core-2.2

我非常需要帮助来创建yml构建文件,因为在任何地方都找不到任何好的教程,示例或其他帮助之王。我总是收到类似的错误:看到警告,看来我的构建工件总是空的。所有步骤都成功,但是由于找不到我的文件而无法部署。愚蠢的。

##[section]Starting: PublishBuildArtifacts
==============================================================================
Task         : Publish Build Artifacts
Description  : Publish build artifacts to Azure Pipelines/TFS or a file share
Version      : 1.142.2
Author       : Microsoft Corporation
Help         : [More Information](https://go.microsoft.com/fwlink/?LinkID=708390)
==============================================================================
##[warning]Directory '/home/vsts/work/1/a' is empty. Nothing will be added to build artifact 'drop'.
##[section]Finishing: PublishBuildArtifacts

这是我的管道定义

# ASP.NET Core
# Build and test ASP.NET Core projects targeting .NET Core.
# Add steps that run tests, create a NuGet package, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core

trigger:
- master

pool:
  vmImage: 'Ubuntu-16.04'

variables:
  buildConfiguration: 'Release'

steps:
# - script: dotnet build --configuration $(buildConfiguration)
#   displayName: 'dotnet build $(buildConfiguration)'

- task: DotNetCoreInstaller@0
  inputs:
    version: '2.2.202' # replace this value with the version that you need for your project

- script: dotnet restore

- task: DotNetCoreCLI@2
  displayName: Build
  inputs:
    command: build
    projects: '**/*.csproj'
    arguments: '--configuration Release' # Update this to match your need

- task: PublishBuildArtifacts@1
  inputs:
    ArtifactName: 'drop'

请注意我评论的第二行

# - script: dotnet build --configuration $(buildConfiguration)
#   displayName: 'dotnet build $(buildConfiguration)'

实际上是默认脚本的一部分。我没有使用默认脚本。我正在关注https://docs.microsoft.com/en-us/azure/devops/pipelines/languages/dotnet-core?view=azure-devops

教程

这也是为什么我不能使用可用于其他项目的模板的原因。是因为我使用的是DevOps存储库,还是因为我的项目具有特定的设置?我还有其他项目可以管理构建,然后使用图形模板和任务进行部署。容易得多。

2 个答案:

答案 0 :(得分:1)

是的,目前在Yaml管道上的帮助似乎在地面上有些分散和稀疏。

由于您的项目是 AspNetCore ,我认为您缺少的是dotnet publish任务,在构建之后,在PublishArtifacts之前:

- task: DotNetCoreCLI@2
  inputs:
    command: publish
    publishWebProjects: True
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
    zipAfterPublish: True

但是,以下是我尝试通过Netcore Yaml管道解决沮丧问题的步骤:

  1. 您已经在以下位置浏览了指南的示例任务和摘录 Build, test, and deploy .NET Core apps吗?

  2. 您已经注意到可以单击构建日志以查看管道中每个步骤的详细输出吗?

  3. 您已经注意到任务DotNetCoreCLI@2等同于在自己的桌面上运行dotnet <command>,因此您可以在某种程度上在本地运行/调试这些任务?

  4. 我发现Predefined Variables提供了一些有用的线索。例如,它告诉我们路径\agent\_work\1\a可能是$(Build.ArtifactStagingDirectory)变量,因此这有助于我模仿本地计算机上的管道。

从逻辑上讲,当管道到达最后一步时,您的错误消息告诉我们$(Build.ArtifactStagingDirectory)为空。 dotnetcore示例页面向我建议publish是为Web项目填充它的任务。对于其他任何事情,我认为仅执行dotnet build任务就足够了。

答案 1 :(得分:0)

只需替换变量:

**/Dockerfile

…通过

$(Build.SourcesDirectory)/Dockerfile

对我有用。