0
votes

I am trying to set up an Azure Pipeline to build and publish a multitarget nuget package. The solution has two project set up to create a nuget package for each project

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFrameworks>net461;netstandard2.1</TargetFrameworks>
    <AssemblyVersion>2.0.0.0</AssemblyVersion>
    <FileVersion>2.0.0.0</FileVersion>
    <Version>2.0.0</Version>
    <PackageId>TradingService.Messages</PackageId>
    <Authors>Bankinvest</Authors>
    <Product>TradingService.Messages</Product>
    <Description>Package with trade messages.</Description>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
  </PropertyGroup>
</Project>

When I run this command

MSBuild .\TradingService.Messages.sln  -t:Rebuild -p:Configuration=Release

I now have two packages, one for each project.

In folder ".\tradingservice.messages\TradingService.Messages\bin\Release"

net46  (folder)
netstandard2.1 (folder)  
TradingService.Messages.2.0.0.nupkg  

Before I just copied it to a fileshare but now I want to publish it to Azure artifacts

How do I set up a build in Azure pipelines?

1

1 Answers

0
votes

This is what I ended up with.

trigger:
  - master

pool:
  vmImage: 'windows-latest'

variables:
  buildConfiguration: 'Release'
  packageVersion: 'not-set'

steps:

  - task: PowerShell@2
    displayName: 'Create version tag'
    inputs:
      targetType: 'inline'
      showWarnings: true
      script: |
        $tags = git tag --sort=-creatordate
      
        if($tags.Count -gt 0) {
          ${env:MyCompany.Version} = "$($tags[0]).${env:BUILD_BUILDID}"
        }
        else {
          ${env:MyCompany.Version} = "0.0.0.${env:BUILD_BUILDID}"
        }
        echo "##vso[task.setvariable variable=packageVersion]${env:MyCompany.Version}"  
  
  - task: DotNetCoreCLI@2
    displayName: 'dotnet build Messages'
    inputs:
      command: 'build'
      arguments: '-c $(buildConfiguration)'
      projects: 'MyProject/MyProject.csproj'

  - task: DotNetCoreCLI@2
    displayName: 'dotnet pack Messages'
    inputs:
      command: pack
      arguments: '-c $(buildConfiguration) /p:VersionPrefix=$(packageVersion)'
      packagesToPack: 'MyProject/MyProject.csproj'
      nobuild: true
      versioningScheme: off

  - task: NuGetCommand@2
    displayName: 'push messages'
    inputs:
      command: 'push'
      feedsToUse: select      
      packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg'
      nuGetFeedType: 'internal'
      publishVstsFeed: 'abd98fce-94bb-4652-82ec-91b7bbb3d2a3'
      allowPackageConflicts: true
      versioningScheme: off

  - task: DotNetCoreCLI@2
    displayName: 'dotnet build Rules'
    inputs:
      command: 'build'
      arguments: '-c $(buildConfiguration)'
      projects: 'TradingService.Rules/TradingService.Rules.csproj'

  - task: DotNetCoreCLI@2
    displayName: 'dotnet pack Rules'
    inputs:
      command: pack
      arguments: '-c $(buildConfiguration) /p:VersionPrefix=$(packageVersion)'
      packagesToPack: 'TradingService.Rules/TradingService.Rules.csproj'
      nobuild: true
      versioningScheme: off

  - task: NuGetCommand@2
    displayName: 'push rules'
    inputs:
      command: 'push'
      feedsToUse: select      
      packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg'
      nuGetFeedType: 'internal'
      publishVstsFeed: 'abd98fce-94bx-4652-82xc-91b7xx3d2a3'
      allowPackageConflicts: true
      versioningScheme: off