Publicación de paquetes NuGet con Azure Pipelines (YAML/clásico)

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 | TFS 2017

En Azure Pipelines, puede usar el editor clásico o las tareas de YAML para publicar los paquetes de NuGet dentro de la canalización, en la fuente de Azure Artifacts o en registros públicos como nuget.org.

Creación de un paquete NuGet

Hay varias maneras de crear los paquetes NuGet, como usar Visual Studio para empaquetar los paquetes NuGet paquetes. Si ya usa MSBuild otra tarea para crear los paquetes, omita esta sección y vaya a la sección publish packages (Publicar paquetes).

Para crear un paquete NuGet, agregue el siguiente fragmento de código al archivo YAML de canalización. Consulte NuGet tarea para obtener más detalles.

- task: NuGetCommand@2
  inputs:
    command: pack
    packagesToPack: '**/*.csproj'
    packDestination: '$(Build.ArtifactStagingDirectory)'
  • packagesToPack:patrón para buscar directorios csproj que se empaquetan
  • packDestination:directorio donde se crearán los paquetes

YAML no se admite en TFS.

Control de versiones de paquetes

NuGet paquetes se identifican por sus nombres y números de versión. Un enfoque recomendado para el control de versiones de los paquetes es usar el control de versiones semántico. Las versiones semánticas tienen tres componentes numéricos: Principal,Menory Revisión.

La revisión normalmente se incrementa después de corregir un error (por ejemplo, 1.0.0 - 1.0.1). Cuando se publica una nueva característica compatible con versiones anteriores, se incrementa la versión secundaria y se restablece la versión de revisión a 0 (por ejemplo, 1.4.17 - 1.5.0). Al realizar un cambio incompatible con versiones anteriores, incrementa la versión principal y restablece las versiones secundarias y de revisión a 0 (por ejemplo, 2.6.5 - 3.0.0).

Con el control de versiones semántico, también puede usar etiquetas de versión preliminar para etiquetar los paquetes. Para usar etiquetas de versión preliminar, escriba un guion seguido de las letras o números que elija: por ejemplo,1.0.0-beta.

Se admite el control de versiones semántico Azure Pipelines y se puede configurar en la NuGet tarea:

  • Use el mismo esquema de control de versiones para las compilaciones y paquetes:

    • $(Major).$(Minor).$(rev:.r), donde Major y son dos variables Minor definidas en la canalización. Este formato incrementará automáticamente el número de compilación y la versión del paquete con un nuevo número de revisión. Mantendrá constantes las versiones principal y secundaria, hasta que las cambie manualmente.
    • $(Major).$(Minor).$(Patch).$(date:yyyyMMdd), donde Major , y son variables MinorPatch definidas en la canalización. Este formato creará una nueva etiqueta de versión preliminar para la compilación y el paquete, a la vez que se mantiene constante la versión principal, secundaria y de revisión.
  • Use un esquema de control de versiones personalizado. Puede personalizar las versiones principales, secundarias y de revisión de los paquetes y permitir que la tarea NuGet genere una etiqueta de versión preliminar única basada en la fecha y hora.

  • Use un script en la canalización de compilación para generar la versión.

En este ejemplo se muestra cómo usar la fecha y hora como etiqueta de versión preliminar.

variables:
  Major: '1'
  Minor: '0'
  Patch: '0'

steps:
- task: NuGetCommand@2
  inputs:
    command: pack
    versioningScheme: byPrereleaseNumber
    majorVersion: '$(Major)'
    minorVersion: '$(Minor)'
    patchVersion: '$(Patch)'

YAML no se admite en TFS.

Nota

DotNetCore Los DotNetStandard paquetes y deben empaquetarse con la DotNetCoreCLI@2 tarea para evitar System.InvalidCastExceptions. Consulte la CLI de .NET Core para obtener más detalles.

task: DotNetCoreCLI@2
inputs:
    command: pack
    versioningScheme: byPrereleaseNumber
    majorVersion: '$(Major)'
    minorVersion: '$(Minor)'
    patchVersion: '$(Patch)'

Publicación de un paquete

Para publicar paquetes en una fuente de Azure Artifacts desde la canalización, debe establecer la identidad del servicio de compilación de recopilación de Project como colaborador en la fuente. Consulte Configuración de las opciones de fuente para obtener más detalles.

steps:
- task: NuGetAuthenticate@0
  displayName: 'NuGet Authenticate'
- task: NuGetCommand@2
  displayName: 'NuGet push'
  inputs:
    command: push
    publishVstsFeed: '<projectName>/<feed>'
    allowPackageConflicts: true

Para publicar un paquete en una fuente de NuGet externa, primero debe crear una conexión de servicio para conectarse a esa fuente. Para ello, vaya a configuración Project servicio Nuevaconexión de servicio. Seleccione NuGety, a continuación, seleccione Siguiente. Rellene el formulario y seleccione Guardar cuando haya terminado. Consulte Administración de conexiones de servicio para obtener más detalles.

Para publicar un paquete en una fuente de NuGet externa, agregue el siguiente fragmento de código a la canalización de YAML.

- task: NuGetAuthenticate@0
  inputs:
    nuGetServiceConnections: '<NAME_OF_YOUR_NUGET_SERVICE_CONNECTION>'
- task: NuGetCommand@2
  inputs:
    command: push
    nuGetFeedType: external
    versioningScheme: byEnvVar
    versionEnvVar: <VERSION_ENVIRONMENT_VARIABLE>

YAML no se admite en TFS.