Compartilhar via


Fontes upstream do Azure Artifacts

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

Usando fontes upstream, você pode armazenar convenientemente pacotes de várias fontes em um único feed. Isso inclui pacotes que você publica e aqueles que você consome de feeds externos e registros públicos como NuGet.org, npmjs.com, Maven Central e PyPI. Depois de ativar as fontes upstream, qualquer pacote instalado a partir dessas fontes upstream, uma cópia será salva automaticamente em seu feed.

Observação

Para salvar pacotes de upstreams, você deve ter a função Feed e Leitor Upstream (Colaborador) ou superior. Consulte Gerenciar permissões para obter mais detalhes.

Vantagens

A ativação de fontes upstream oferece várias vantagens para gerenciar as dependências do seu produto em um único feed:

  • Simplicidade: quando você publica todos os seus pacotes em um único feed, ele simplifica seus arquivos de configuração, como NuGet.config, npmrc ou settings.xml. Com apenas um feed em seu arquivo de configuração, você reduz as chances de erros e bugs, simplificando sua configuração.

  • Determinismo: seu feed resolve as solicitações de pacotes em ordem, resultando em mais consistência ao reconstruir seu código.

  • Proveniência: seu feed retém informações sobre os pacotes salvos de fontes upstream. Isso permite que você verifique se está usando o pacote original e não uma cópia ou uma versão potencialmente maliciosa.

  • Tranquilidade: todos os pacotes instalados a partir de fontes upstream são salvos automaticamente em seu feed. Isso significa que, mesmo que a fonte upstream esteja desabilitada, removida ou em manutenção, você pode continuar desenvolvendo e criando com confiança porque tem uma cópia desse pacote em seu feed.

Práticas recomendadas – consumidores de pacotes

Para aproveitar ao máximo os benefícios das fontes upstream como um consumidor de pacote, siga estas práticas recomendadas:

Use um único feed em seu arquivo de configuração:

Para que seu feed forneça uma restauração determinística, verifique se o arquivo de configuração, como nuget.config ou .npmrc, faz referência a apenas um feed com as fontes upstream habilitadas. Veja o exemplo abaixo:

<packageSources>
  <clear />
  <add key="FabrikamFiber" value="https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/nuget/v3/index.json" />
</packageSources>

Observação

O NuGet compila vários arquivos de configuração para determinar o conjunto completo de opções a serem aplicadas. Usando <clear />o , você pode ignorar efetivamente todas as outras origens de pacote especificadas em arquivos de configuração de nível superior.

registry=https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/npm/registry/
always-auth=true

Solicite suas fontes upstream intencionalmente:

Se você estiver usando exclusivamente registros públicos como nuget.org ou npmjs.com, a ordem de suas fontes upstream é irrelevante. As solicitações para o feed seguem a sequência detalhada na seção de ordem de pesquisa.

No entanto, quando você gerencia várias origens, o que pode incluir uma combinação de feeds e registros públicos, cada fonte upstream é pesquisada na ordem em que está listada nas definições de configuração do feed. Nesse caso, recomendamos colocar os registros públicos em primeiro lugar na lista de fontes upstream.

Em alguns cenários exclusivos, certas organizações optam por personalizar pacotes de software livre (OSS). Isso pode envolver abordar questões de segurança, aprimorar a funcionalidade ou atender a requisitos específicos que exigem a reconstrução interna do pacote, em vez de obtê-lo diretamente de um repositório público. Se sua organização seguir essa prática, é aconselhável posicionar a fonte upstream que contém esses pacotes OSS modificados à frente dos gerenciadores de pacotes públicos. Essa organização garante o uso das versões personalizadas da sua organização.

Use a exibição padrão sugerida:

Ao adicionar um feed remoto como uma fonte upstream, você deve selecionar a exibição do feed. Isso permite que as fontes upstream construam um conjunto de pacotes disponíveis. Consulte Como os upstream constroem o conjunto de pacotes disponíveis para obter mais detalhes.

Práticas recomendadas: alimentar proprietários/editores de pacotes

Para garantir que o feed seja facilmente configurado como uma fonte upstream, considere aplicar as seguintes práticas recomendadas:

Use a visualização padrão:

A visualização padrão para todos os feeds recém-criados é a @Local visualização, que contém todos os pacotes publicados no feed ou salvos de fontes upstream.

Se você quiser usar outros modos de exibição, como um modo de exibição para versões de pacote recém-lançadas, poderá promover seu pacote para o modo de exibição e, em seguida, disponibilizá-lo para os @Release consumidores do pacote.

Construa um gráfico de pacote:

Para construir um grafo de pacote, basta conectar-se à exibição padrão do feed e instalar o pacote que você deseja compartilhar. Quando o pacote é salvo na exibição padrão, os usuários que desejam consumi-lo poderão resolver o gráfico de pacotes e instalar o pacote desejado. Pacotes de fontes upstream são exibidos com base na exibição configurada para a origem upstream correspondente.

Ordem de pesquisa

Para gerenciadores de pacotes públicos que dão suporte a vários feeds, como NuGet e Maven, a ordem na qual os feeds são consultados às vezes pode não ser clara ou não determinística. Por exemplo, no NuGet, consultas paralelas são enviadas para todos os feeds no arquivo de configuração e as respostas são processadas de maneira FIFO (primeiro a entrar, primeiro a sair).

As origens upstream abordam esse comportamento não determinístico pesquisando o feed e as fontes upstream na seguinte ordem:

  1. Pacotes que foram publicados diretamente no feed.

  2. Pacotes que foram salvos de uma fonte upstream.

  3. Pacotes disponíveis a partir de fontes upstream. Cada fonte upstream é pesquisada na ordem em que está listada na configuração do feed.

Para aproveitar ao máximo o recurso de pesquisa rápida, recomendamos que você inclua apenas um feed em seu arquivo de configuração.

Observação

Não há suporte para a pesquisa de pacotes em fontes upstream usando o Gerenciador de Pacotes NuGet.

Salvar pacotes de fontes upstream

Quando você ativa as fontes upstream para seu feed e instala um pacote de uma fonte upstream, uma cópia automática desse pacote é salva no feed. Essa prática melhora o desempenho do download e conserva a largura de banda da rede.

Por exemplo, você pode instalar pacotes diretamente da fonte upstream usando um comando como npm install express. Como alternativa, os pacotes podem ser instalados como parte de um processo de resolução de dependência. No último cenário, a instalação do express também salvaria suas dependências, como accepts.

Observação

As fontes upstream personalizadas só têm suporte para pacotes npm.

Substituir pacotes de fontes upstream

Ao habilitar fontes upstream, é importante observar que não será possível publicar uma versão do pacote que já existe em uma fonte upstream. Por exemplo, se você habilitar o NuGet.org upstream, não poderá publicar o pacote Newtonsoft.Json 10.0.3 , pois essa versão exata já existe no NuGet.org.

Se você precisar publicar uma versão do pacote que já está presente em uma de suas fontes upstream, siga estas etapas:

  1. Desative a fonte upstream relevante.
  2. Publique seu pacote.
  3. Reative a fonte upstream.

Observação

As versões do pacote são imutáveis. Os pacotes salvos permanecem no feed mesmo se a origem upstream estiver desabilitada ou removida.

Status de integridade das fontes upstream

Se um feed tiver uma fonte upstream com falha, os metadados dos pacotes do mesmo protocolo não poderão mais ser atualizados. Para verificar o status de integridade de suas fontes upstream, siga estas etapas:

  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 ícone ícone de engrenagem de engrenagem para navegar até as configurações do feed e, em seguida, selecione Fontes upstream.

    Uma captura de tela mostrando o status da última sincronização das fontes upstream.

  4. Se ocorrer alguma falha, uma mensagem de aviso será exibida. Clicar no status Falha fornecerá detalhes adicionais, incluindo a causa da falha e instruções sobre como resolvê-la.

    Uma captura de tela exibindo detalhes da falha de sincronização.

Observação

No caso de registros públicos como o NuGet.org, há um atraso de 3 a 6 horas entre o momento em que um pacote é enviado para o registro público e o momento em que ele fica disponível para download. Esse atraso depende do tempo do trabalho e da propagação de dados. No entanto, quando a origem upstream é um feed do Azure Artifacts, a latência geralmente não é superior a alguns minutos.

Fontes upstream offline

As fontes upstream servem como uma proteção valiosa para seus consumidores e infraestrutura, protegendo-os de interrupções imprevistas. Quando você instala um pacote de uma fonte upstream, uma cópia desse pacote é salva no feed. Caso a fonte upstream sofra tempo de inatividade, passe por manutenção ou fique temporariamente indisponível, você ainda poderá recuperar os pacotes necessários do feed e continuar o desenvolvimento.

Perguntas Frequentes

P: Eu não consigo encontrar meu pacote mesmo que eu possa vê-lo em um dos upstreams do meu feed?

R: Os pacotes de fontes upstream ficam disponíveis no feed downstream logo após serem publicados. No entanto, o pacote só ficará visível para os leitores depois de ter sido salvo no feed. Um pacote é salvo quando um usuário com permissões de Feed e Leitor Upstream (Colaborador) ou superior instala a versão no feed downstream. Isso aciona o downstream para salvar uma cópia do pacote do upstream, após o qual ele é salvo permanentemente e disponível no downstream para todos os leitores. É quando a versão do pacote se torna visível na seção de versões do pacote da interface do usuário da Web.

P: O que são exibições de feed?

R: As exibições permitem que os desenvolvedores compartilhem seletivamente um subconjunto de versões de pacotes que foram testadas e validadas, excluindo todos os pacotes que ainda estão em desenvolvimento ou não atenderam aos critérios de qualidade. Para obter mais informações, consulte O que são exibições de feed.

P: Não consigo encontrar o feed que quero configurar como uma fonte upstream?

R: Verifique se o proprietário do feed está compartilhando uma exibição como uma fonte upstream.

P: Um usuário com a função Leitor de Feed pode fazer download de pacotes de uma fonte upstream?

R: Não. Um usuário com a função Leitor de Feed em um feed do Azure Artifacts só pode baixar pacotes que foram salvos no feed. Os pacotes são salvos no feed quando um Feed e um Leitor Upstream (Colaborador), um Publicador de Feed (Colaborador) ou um Proprietário do Feed instalam esses pacotes do upstream.

P: O que acontece quando um usuário exclui ou cancela a publicação de um pacote salvo de uma fonte upstream?

R: O pacote fica indisponível para download no feed e o número da versão é reservado permanentemente. Além disso, o pacote não será mais salvo da fonte upstream. As versões anteriores e posteriores do pacote permanecerão inalteradas.

P: O que acontece quando um usuário substitui um pacote salvo de uma fonte upstream?

R: Quando um usuário substitui um pacote, uma mensagem de aviso é adicionada aos metadados do pacote, que é exibida sempre que o pacote é exibido ou instalado a partir do feed.