Publicar e baixar Universal Packages com o Azure Pipelines

Azure DevOps Services

Os Universal Packages permitem empacotar qualquer quantidade de arquivos de qualquer tipo e compartilhá-los com sua equipe. Usando a tarefa Universal Package no Azure Pipelines, você pode empacotar, publicar e baixar pacotes de vários tamanhos até 4 TB. Cada pacote é identificado exclusivamente com um nome e um número de versão. Você pode usar a CLI do Azure ou o Azure Pipelines para publicar e consumir pacotes de seus feeds do Artifacts.

Observação

Os Universal Packages só estão disponíveis no Azure DevOps Services.

Copiar arquivos

A tarefa Universal Packages no Azure Pipelines está definida para usar $(Build.ArtifactStagingDirectory) como o diretório de publicação padrão. Para preparar seu Universal Package para publicação, mova os arquivos que você deseja publicar para esse diretório. Você também pode usar a tarefa de utilitário Copiar Arquivos a fim de copiar esses arquivos para o diretório de publicação.

Publicar um Universal Package

Para publicar um Universal Package no feed do Azure Artifacts, adicione a tarefa a seguir ao arquivo YAML do pipeline.

- task: UniversalPackages@0
  displayName: Publish a Universal Package
  inputs:
    command: publish
    publishDirectory: '$(Build.ArtifactStagingDirectory)'
    vstsFeedPublish: '<projectName>/<feedName>'
    vstsFeedPackagePublish: '<Package name>'
    packagePublishDescription: '<Package description>'
Argumento Descrição
publishDirectory Local dos arquivos que você deseja publicar.
vstsFeedPublish O nome do projeto e do feed para o qual publicar. Se você estiver trabalhando com um feed com escopo de organização, especifique apenas o nome do feed.
vstsFeedPackagePublish O nome do pacote. Precisa estar em minúsculas. Use apenas letras, números e traços.
packagePublishDescription Descrição do conteúdo do pacote.

Para publicar pacotes em um feed de Artefatos do Azure a partir de seu pipeline, a identidade do pipeline deve ter a função Publicador de Feed (Colaborador) no feed. Para obter mais informações, veja permissões de pipelines.

Para publicar em um feed externo, primeiro você precisa criar uma conexão de serviço para autenticar com o feed. Para obter mais informações, confira Gerenciar conexão de serviço.

Controle de versão do pacote

Os Universal Packages seguem a especificação de controle de versão semântica e podem ser identificados por seus nomes e números de versão. Os números de versão semântica são compostos por três componentes numéricos, Principal, Secundária e Patch, no formato: Major.Minor.Patch.

O número de versão secundária é incrementado quando novos recursos são adicionados que sejam compatíveis com versões anteriores; nesse caso, você incrementa a versão secundária e redefine a versão do patch para 0 (1.4.17 para 1.5.0). O número de versão principal é incrementado quando há alterações significativas que podem impedir a compatibilidade com versões anteriores. Nesse caso, você incrementa a versão principal e redefine as versões secundárias e de patch para 0 (2.6.5 para 3.0.0). O número da versão do patch deve ser incrementado quando apenas correções de erros ou outras pequenas alterações forem feitas que não afetem a compatibilidade com versões anteriores (1.0.0 para 1.0.1).

Ao publicar um novo pacote, a tarefa Universal Packages selecionará automaticamente a próxima versão principal, secundária ou de patch para você.

Para habilitar o controle de versão do pacote, adicione uma entrada versionOption ao arquivo YAML. As opções para publicar uma nova versão do pacote são: major, minor, patch ou custom.

A escolha de custom permite que você especifique manualmente a versão do pacote. As outras opções obtêm a versão mais recente do pacote do seu feed e incrementam o segmento de versão escolhido em 1. Portanto, se você tiver um testPackage 1.0.0 e selecionar a opção principal, seu novo pacote será testPackage 2.0.0. Se você selecionar a opção secundária, a versão do pacote será 1.1.0 e, se você selecionar a opção patch, a versão do pacote será 1.0.1.

Se você escolher a opção custom, também deverá especificar um valor versionPublish da seguinte maneira:

- task: UniversalPackages@0
  displayName: Publish a Universal Package
  inputs:
    command: publish
    publishDirectory: '$(Build.ArtifactStagingDirectory)'
    vstsFeedPublish: '<projectName>/<feedName>'
    vstsFeedPackagePublish: '<Package name>'
    versionOption: custom
    versionPublish: '<Package version>'
    packagePublishDescription: '<Package description>'
Argumento Descrição
publishDirectory Local dos arquivos que você deseja publicar.
vstsFeedPublish O nome do projeto e do feed para o qual publicar. Se você estiver trabalhando com um feed com escopo de organização, especifique apenas o nome do feed.
vstsFeedPackagePublish O nome do pacote. Precisa estar em minúsculas. Use apenas letras, números e traços.
versionOption Selecione uma estratégia de controle de versão. Opções: major, minor, patch, custom.
versionPublish A versão do pacote personalizado.
packagePublishDescription Descrição do conteúdo do pacote.

Baixar um Universal Package

Para baixar um Universal Package de um feed em sua organização, use a tarefa Universal Package com o comando download da seguinte maneira:

steps:
- task: UniversalPackages@0
  displayName: Download a Universal Package
  inputs:
    command: download
    vstsFeed: '<projectName>/<feedName>'
    vstsFeedPackage: '<packageName>'
    vstsPackageVersion: '<packageVersion>'
    downloadDirectory: '$(Build.SourcesDirectory)\someFolder'
Argumento Descrição
vstsFeed O feed Artifacts que hospeda o pacote a ser baixado.
vstsFeedPackage Nome do pacote a ser baixado.
vstsPackageVersion Versão do pacote a ser baixado.
downloadDirectory A pasta de destino do pacote. Valor padrão: $(System.DefaultWorkingDirectory).

Para baixar um Universal Package de uma fonte externa, use o seguinte snippet:

steps:
- task: UniversalPackages@0
  displayName: Download a Universal Package
  inputs:
    command: download
    feedsToUse: external
    externalFeedCredentials: 'MSENG2'
    feedDownloadExternal: 'fabrikamFeedExternal'
    packageDownloadExternal: 'fabrikam-package'
    versionDownloadExternal: 1.0.0
Argumento Descrição
feedsToUse Defina o valor como external ao baixar de uma origem externa.
externalFeedCredentials Nome da conexão de serviço com o feed externo. Para obter mais informações, confira Gerenciar conexões de serviço.
feedDownloadExternal Nome do feed externo.
packageDownloadExternal O nome do pacote que você deseja baixar.
versionDownloadExternal A versão do pacote que você deseja baixar.

Dica

Você pode usar curingas para baixar a versão mais recente de um Universal Package. Para saber mais, confira Baixar a versão mais recente