Compartilhar via


Configurar o comportamento upstream

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Com as fontes upstream do Azure Artifacts, os desenvolvedores ganham a conveniência de utilizar um feed unificado para publicar e consumir pacotes de feeds de Artefatos e registros públicos populares, como NuGet.org ou npmjs.com. Anteriormente, os feeds de artefato combinavam uma lista de versões de pacotes disponíveis do próprio feed e de todas as fontes upstream configuradas.

Uma ilustração mostrando o conteúdo de um feed.

O comportamento upstream é um recurso que permite que os desenvolvedores escolham se desejam consumir versões de pacotes de origem externa. Ele controla quais pacotes são acessíveis a partir dos registros públicos para pacotes específicos.

Depois que o comportamento upstream estiver habilitado, quando um pacote for publicado no feed de Artefatos do Azure, qualquer versão do registro público será bloqueada e não disponibilizada para download.

Essa abordagem adiciona uma camada extra de segurança, evitando a exposição potencial a pacotes mal-intencionados que podem ter se infiltrado nos registros públicos.

No entanto, os usuários ainda podem desativar a configuração de comportamento upstream, permitindo que eles consumam pacotes dos registros públicos, se preferirem.

Observação

O novo comportamento não afetará as versões de pacote que estão em uso no momento, pois elas são preservadas na exibição @local do feed.

Cenários aplicáveis

A seção a seguir ilustra vários cenários comuns em que o comportamento upstream é acionado para bloquear versões de pacotes de origem externa e outros cenários em que não há necessidade de bloquear o acesso a pacotes públicos.

As versões públicas estão bloqueadas

Versão do pacote privado tornada pública

Nesse cenário, uma equipe tem um pacote privado que foi tornado público. O comportamento upstream, nesse caso, será acionado para bloquear quaisquer novas versões públicas (pacotes não confiáveis).

Uma ilustração mostrando uma versão interna do pacote tornada pública.

Ter pacotes privados e públicos

Nesse cenário, se uma equipe usa uma combinação de pacotes privados e públicos, habilitar o comportamento upstream bloqueia quaisquer novas versões de pacote do registro público.

Uma ilustração mostrando pacotes privados e públicos disponíveis.

As versões públicas não serão bloqueadas

Todos os pacotes são privados*

Se todos os pacotes existentes forem privados e a equipe não tiver planos de usar nenhum pacote público, o novo comportamento upstream não terá efeito no fluxo de trabalho da equipe nesse cenário.

Uma ilustração mostrando o feed apenas com pacotes privados.

Todos os pacotes são públicos

Nesse cenário, se a equipe consumir exclusivamente pacotes públicos, seja do registro público ou de outros repositórios de código aberto, o novo comportamento upstream não afetará seu fluxo de trabalho de forma alguma.

Uma ilustração mostrando o feed apenas com pacotes públicos.

Pacote público tornado privado

Nessa situação, quando um pacote público é convertido em um pacote privado, o novo comportamento upstream não afeta o fluxo de trabalho da equipe de forma alguma.

Uma ilustração mostrando um pacote convertido de público para privado.

Permitir versões externas

Observação

Você deve ser um proprietário do feed para permitir versões de origem externa. Para obter mais informações, consulte Permissões de feed.

  1. Entre na sua organização do Azure DevOps e navegue até seu projeto.

  2. Selecione Artefatos e, em seguida, selecione o feed no menu suspenso.

  3. Selecione o pacote e, em seguida, selecione o botão de reticências para obter mais opções. Selecione Permitir versões de origem externa.

    Uma captura de tela mostrando como permitir versões de origem externa.

  4. Selecione o botão de alternância para permitir versões externas. Selecione Fechar quando terminar.

    Uma captura de tela mostrando como habilitar versões externas.

Permitir versões externas usando a API REST

Permitir versões externas usando o PowerShell

  1. Crie um token de acesso pessoal com as permissões Empacotar>Leitura, gravação e gerenciamento de Pacote.

    Captura de tela mostrando como selecionar permissões de empacotamento.

  2. Crie uma variável de ambiente para seu token de acesso pessoal.

    $env:PATVAR = "YOUR_PERSONAL_ACCESS_TOKEN"
    
  3. Converta seu token de acesso pessoal em cadeia de caracteres codificada em baser64 e construa o cabeçalho de solicitação HTTP.

    $token = [Convert]::ToBase64String(([Text.Encoding]::ASCII.GetBytes("username:$env:PatVar")))
    $headers = @{
        Authorization = "Basic $token"
    }
    
  4. Construa sua URL de ponto de extremidade. Exemplo: //pkgs.dev.azure.com/MyOrg/MyProject/_apis/packaging/feeds/MyFeed/nuget/packages/pkg1.0.0.nupkg/upstreaming?api-version=6.1-preview.1

    • Feed com escopo do projeto:

      $url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=6.1-preview.1"
      
    • Feed com escopo da organização:

      $url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=6.1-preview.1"
      

Execute o comando a seguir para recuperar o estado de comportamento upstream do pacote. $url e $headers são as mesmas variáveis que utilizamos na seção anterior.

Invoke-RestMethod -Uri $url -Headers $headers