Azure CI Pipeline - DotNetCoreCLI@2 Task error

16.3k views Asked by At

I developed WebAPI project using .NET Core 3.1.0 and integration tests using XUnit.

I added the below task in Azure DevOps CI Pipeline (azure-pipelines.yaml) to run the integration tests project.

 - task: DotNetCoreCLI@2
   displayName: 'Run API integration tests - $(buildConfiguration)'
   inputs:
    command: 'test'
    arguments: '--configuration $(buildConfiguration)'
    publishTestResults: true
    projects: '**/IntegrationTests/IntegrationTests.csproj'

I got the below error during pipeline execution. How to resolve this error?

##[error]Error: The process '/usr/bin/dotnet' failed with exit code 1

##[warning].NET 5 has some compatibility issues with older Nuget versions(<=5.7), so if you are using an older Nuget version(and not dotnet cli) to restore, then the dotnet cli commands (e.g. dotnet build) which rely on such restored packages might fail. To mitigate such error, you can either: (1) - Use dotnet cli to restore, (2) - Use Nuget version 5.8 to restore, (3) - Use global.json using an older sdk version(<=3) to build

Info: Azure Pipelines hosted agents have been updated and now contain .Net 5.x SDK/Runtime along with the older .Net Core version which are currently lts. Unless you have locked down a SDK version for your project(s), 5.x SDK might be picked up which might have breaking behavior as compared to previous versions. You can learn more about the breaking changes here: https://learn.microsoft.com/en-us/dotnet/core/tools/ and https://learn.microsoft.com/en-us/dotnet/core/compatibility/ . To learn about more such changes and troubleshoot, refer here: https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/build/dotnet-core-cli?view=azure-devops#troubleshooting

##[error]Dotnet command failed with non-zero exit code on the following projects : /home/vsts/work/1/s/src/IntegrationTests/IntegrationTests.csproj

2

There are 2 answers

2
ddegasperi On

I've had exactly the same problem, with the difference that my solution consisted of .net5 apps as well as .netcore3.1 apps.

I was able to solve this problem by specifying the newer dotnet runtime in the azure pipeline:

- task: UseDotNet@2
  inputs:
    version: '5.0.x'
    packageType: runtime
0
Somar Zein On

I've had a smiller issue but with .netcore 2.2. The problem was that the test tries to build before the test starts restoring the packages for the test, thus fails before the test runs or builds. One thinge that help me overcome this problem was this FAQ:

Most dotnet commands, including build, publish, and test include an implicit restore step. This will fail against authenticated feeds, even if you ran a successful dotnet restore in an earlier step, because the earlier step will have cleaned up the credentials it used. To fix this issue, add the --no-restore flag to the Arguments textbox.

I've also read that the DotNetCLI had some issues when it came to tests like this one here

So I ended up using a script to solve this and other issues related to package restore.

- script: dotnet test '**/IntegrationTests/IntegrationTests.csproj' --configuration $(buildConfiguration) --logger trx;LogFileName=C:\temp\results
  displayName: 'Run API integration tests - $(buildConfiguration)'

I hope that will help you or anyone who has similar issues.