web-dev-qa-db-ja.com

Azure Pipeline Publish:特定のフォルダーまたはプロジェクトを使用したタスクDotNetCoreCLI

次のプロジェクト/フォルダー構造でAzure Build Pipelineを実行すると、問題(望ましくない動作)が発生します。

私のリポジトリのルートフォルダーには2つのメインフォルダーがあります。

  • フロントエンド(ASP.Net Core 2.x&Angular 7プロジェクト)
  • バックエンド(ASP.Net Core 2.x)

1つはバックエンド用、もう1つはフロントエンド用の2つの個別のAzure Pipelinesを構築しようとしているので、projects:パラメータを使用して正しいパスを指定します。

buildコマンドとtestコマンドは正常に実行され、backendフォルダーの復元/構築/テストのみを行っていますが、両方のフォルダーに対してpublishコマンドが実行されています。バックエンドとフロントエンド。

これは私のyamlファイルです:

 #build backend project
 task: DotNetCoreCLI@2
   displayName: dotnet build --configuration $(buildConfiguration)
   name: BuildBackendProject
   inputs:
     command: build
     projects: '**/backend/**/*.csproj'
     arguments: '--configuration $(buildConfiguration)'

 ... #run some tests

 #publish backend project
 task: DotNetCoreCLI@2
   displayName: dotnet publish backend --configuration $(buildConfiguration)
   name: PublishBackendProject
   inputs:
     command: publish
     projects: '**/backend/**/*.csproj'
     publishWebProjects: True
     arguments: '--configuration $(BuildConfiguration) --output 
     $(Build.ArtifactStagingDirectory)/backend'
     zipAfterPublish: True

別のフォルダパスを試しましたが、常に2つの発行コマンドが実行されています。

CMDでローカルに実行する場合dotnet publish backend(リポジトリのルートフォルダーから)正常に動作しますが、Azureパイプラインでは動作しません。

どんなアイデアや修正も大歓迎です。

11

トリックは、publishWebProjects/projectsプロパティを使用することです。それらは実際には相互に排他的です。 publishWebProjectsが使用されている場合、projectsプロパティ値はスキップされます。

ドキュメント から:

Webプロジェクトの公開*:trueの場合、タスクはリポジトリー内のWebプロジェクトを検索し、それらに対して発行コマンドを実行しようとします。 Webプロジェクトは、ディレクトリ内のweb.configファイルまたはwwwrootフォルダーの存在によって識別されます。

したがって、公開用に次のコードを試すことができます。

task: DotNetCoreCLI@2
  displayName: dotnet publish backend --configuration $(buildConfiguration)
  name: PublishBackendProject
  inputs:
    command: publish
    projects: '**/backend/**/*.csproj'
    publishWebProjects: false
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)/backend'
    zipAfterPublish: true
15
Herman Cordes