2

私たちの .NET Web API プロジェクトでは、Azure DevOps で API プロジェクトを構築し、以下のパイプライン タスクを使用してアーティファクトをフォルダーに公開しようとしました。

- task: DotNetCoreCLI@2
  displayName: Publish web API artifact
  inputs:
    command: publish
    publishWebProjects: false
    arguments: '$(Build.SourcesDirectory)\XYZ.Research.API\XYZ.Research.API.csproj --configuration $(BuildConfiguration) --output testpath'
    zipAfterPublish: true
    modifyOutputPath: true

しかし、アーティファクトが保持されているフォルダーがわかりません。以下は、このステップのログです。

2020-07-31T12:04:23.6282186Z ##[section]Starting: Publish web API artifact
2020-07-31T12:04:23.6590490Z ==============================================================================
2020-07-31T12:04:23.6591051Z Task         : .NET Core
2020-07-31T12:04:23.6591393Z Description  : Build, test, package, or publish a dotnet application, or run a custom dotnet command
2020-07-31T12:04:23.6591740Z Version      : 2.172.2
2020-07-31T12:04:23.6591974Z Author       : Microsoft Corporation
2020-07-31T12:04:23.6592357Z Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/build/dotnet-core-cli
2020-07-31T12:04:23.6592942Z ==============================================================================
2020-07-31T12:04:25.5581194Z [command]C:\windows\system32\chcp.com 65001
2020-07-31T12:04:25.5581889Z Active code page: 65001
2020-07-31T12:04:25.5583746Z Info: .NET Core SDK/runtime 2.2 and 3.0 are now End of Life(EOL) and have been removed from all hosted agents. If you're using these SDK/runtimes on hosted agents, kindly upgrade to newer versions which are not EOL, or else use UseDotNet task to install the required version.
2020-07-31T12:04:25.5588792Z [command]C:\hostedtoolcache\windows\dotnet\dotnet.exe publish d:\a\1\s\XYZ.Research.API\XYZ.Research.API.csproj --configuration Release --output testpath
.....
 some warning message ignored
.....
2020-07-31T12:04:38.0843543Z   XYZ.Research.API -> d:\a\1\s\XYZ.Research.API\bin\Release\netcoreapp3.0\XYZ.Research.API.dll
2020-07-31T12:04:38.9127845Z   XYZ.Research.API -> d:\a\1\s\testpath\
2020-07-31T12:04:46.0295716Z Info: Azure Pipelines hosted agents have been updated to contain .Net Core 3.x (3.1) SDK/Runtime along with 2.1. Unless you have locked down a SDK version for your project(s), 3.x SDK might be picked up which might have breaking behavior as compared to previous versions. 
2020-07-31T12:04:46.0296632Z Some commonly encountered changes are: 
2020-07-31T12:04:46.0297619Z If you're using `Publish` command with -o or --Output argument, you will see that the output folder is now being created at root directory rather than Project File's directory. To learn about more such changes and troubleshoot, refer here: https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/build/dotnet-core-cli?view=azure-devops#troubleshooting
2020-07-31T12:04:46.0442329Z ##[section]Finishing: Publish web API artifact

次のステップ(デプロイ)でファイルの場所が必要になるので、試してみました

d:\a\1\s\testpath\XYZ.Reserch.API.zip
d:\a\1\s\testpath\XYZ.Reserch.API\XYZ.Reserch.API.zip

しかし、これらの場所には成果物ファイルがありません。

誰かがこの問題を以前に見たことがありますか? どんな助けでも大歓迎です。

- - - - - - - - - - アップデート - - - - - - - - - - - - - - - -

@Source Code が示唆するように、タスク "PowerShell@2" を使用したところ、アーティファクト ファイルが実際には "D:\a\1\s\testpath\testpath.zip" にあることがわかりました。つまり、'testpath' サブフォルダーが $(Build.SourceDirectory) に作成され、アーティファクト ファイルも 'test.zip' に名前が変更されます。

4

1 に答える 1

1

DotNetCoreCLI@2 タスクの後に PowerShell/Bash/Cmd タスクを追加し、「ls」コマンドを使用してインライン スクリプトを実行することをお勧めします。これにより、すべての項目が結果に一覧表示されます。これにより、タスクの後に実際に何があるかを確認できます。

Windows エージェントの場合:

- task: PowerShell@2
  displayName: List Files Post Publish
  inputs:
    targetType: inline
    script: Get-ChildItem

Linux または Mac の場合

- task: Bash@3
  displayName: List Files Post Publish
  inputs:
    targetType: inline
    script: ls

さらに、引数パラメーターを介して csproj ファイルを提供していることに気付きました。これには、projects という名前のパラメーターを使用する必要があります。また、アーティファクト ステージング ディレクトリを出力ディレクトリとして使用することを検討することもできます。タスクは次のようになります。

- task: DotNetCoreCLI@2
  displayName: Publish web API artifact
  inputs:
    command: publish
    projects: '$(Build.SourcesDirectory)\XYZ.Research.API\XYZ.Research.API.csproj'
    publishWebProjects: false
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
    zipAfterPublish: true
    modifyOutputPath: true

注意すべき重要な点の 1 つは、出力ディレクトリを変更する場合は、PowerShell または Bash タスクの作業ディレクトリを変更して、正しいディレクトリの内容を出力することです。デフォルトは $(Build.SourcesDirectory) なので、必要に応じて変更してください。

于 2020-07-31T19:03:08.470 に答える