Nuget: Build & Release tramite YAML in Azure DEVOps

L’argomento della creazione di pacchetti NuGet tramite CI/CD su DevOPS e’ gia’ stato affrontato lo scorso anno nel post dal titolo Nuget: Build & Release in Azure DEVOps. In questo articolo voglio mostrarvi come creare pipeline di build tramite YAML e non UI.

Pipeline di Build

La seguente Pipeline di Build e’ quella creata per l’evento DevOps Conference 2021 dove ho simulato la creazione del pacchetto DevAndreaCarratta.HelloWorld

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
name: $(Year:yyyy).$(DayOfYear).$(Hours).$(BuildID)
resources:
  repositories:
  - repository: self
    type: git
    ref: master
jobs:
- job: Job_1
  displayName: Agent job 1
  pool:
    vmImage: vs2017-win2016
  steps:
  - checkout: self
    clean: true
  - task: DotNetCoreCLI@2
    displayName: dotnet restore
    inputs:
      command: restore
      projects: '**/*.sln'
  - task: DotNetCoreCLI@2
    displayName: dotnet build
    inputs:
      projects: '**/*.sln'
      arguments: --configuration $(BuildConfiguration) /p:Version=$(Build.BuildNumber)
  - task: DotNetCoreCLI@2
    displayName: dotnet pack
    inputs:
      command: pack
      searchPatternPack: '**/*.sln'
      versioningScheme: byBuildNumber
  - task: PublishBuildArtifacts@1
    displayName: 'Publish Artifact: drop'
...

In questo modo abbiamo replicato la stessa pipeline presente nell’articolo originale Nuget: Build & Release in Azure DEVOps. Interessante, vero?

Pipeline di Release

questo paragrafo e’ lo stesso presente nel post originale. L’ho copiato ed incollato per completezza senza rimandarvi al post originale.

Creando la pipeline di release dobbiamo selezionare come prima cosa l’Artifacts da utilizzare. Ovviamente selezioneremo quello generato dalla Pipeline di Build appena configurata e creata.

Ora non ci resta che aggiungere uno Stages che per semplicita’ ho chiamato Nuget ed al suo interno ho inserito un solo task

TaskDisplay NameCommandPath to NuGet package(s) to publish
NuGetNuGet pushpush<_ArtifactName>/drop/.nupkg;!<_ArtifactName>/drop/.symbols.nupkg

A questo punto mancano le ultime configurazioni sempre all’interno del task nuget push

  • Target feed location: External NuGet server (including other accounts/collections)
  • NuGet server: creare una connessione tramite la api-key fornita da nuget una volta registrata

Una volta eseguita la Pipeline di Release potrebbero passare dei minuti prima di vedere il pacchetto aggiornato sulle pagine di Nuget.

questo paragrafo e’ lo stesso presente nel post originale. L’ho copiato ed incollato per completezza senza rimandarvi al post originale.