Fontes upstream de artefatos do Azure

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 os códigos-fonte upstream, qualquer pacote instalado a partir desses códigos-fonte upstream, uma cópia será salva automaticamente no seu feed.

Observação

Para salvar pacotes de upstreams, você deve ter a função Feed e Upstream Reader (Colaborador) ou superior. Para obter mais informações, consulte Permissões.

Vantagens

Habilitar 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, agilizando sua configuração.

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

  • Procedência: Seu feed retém informações sobre os pacotes que salvou 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 mal-intencionada.

  • Tranquilidade: Cada pacote instalado a partir de fontes upstream é salvo automaticamente no seu feed. Isso significa que, mesmo que a fonte upstream esteja desativada, 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, certifique-se de que seu arquivo de configuração, como nuget.config ou .npmrc, faça 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. <clear />Usando o , você pode efetivamente ignorar todas as outras fontes 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

Encomende 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 ordem de pesquisa.

No entanto, quando você está gerenciando várias fontes, que podem 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 de código aberto (OSS). Isso pode envolver abordar preocupações de segurança, aprimorar a funcionalidade ou atender a requisitos específicos que exijam 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 o modo de exibição padrão sugerido:

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 upstreams 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 o modo de exibição padrão:

A exibição padrão para todos os feeds recém-criados é a @Local exibição, que contém todos os pacotes publicados em seu 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 pacotes recém-lançadas, poderá promover seu pacote para o @Release modo de exibição e, em seguida, disponibilizá-lo para os 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 pacote 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 oferecem suporte a vários feeds, como NuGet e Maven, a ordem em que os feeds são consultados às vezes pode ser pouco 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 (first-in, first-out).

As fontes upstream abordam esse comportamento não determinístico pesquisando o feed e suas 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 no arquivo de configuração.

Observação

Não há suporte para a pesquisa de pacotes em códigos-fonte upstream usando o NuGet Package Explorer.

Salvar pacotes de fontes upstream

Quando você habilita fontes upstream para seu feed e instala um pacote de uma fonte upstream, uma cópia automática desse pacote é salva em seu 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 origem 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 aceita.

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 publicar uma versão de pacote que já existe em uma fonte upstream não será possível. 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á esteja presente em um de seus códigos-fonte upstream, siga estas etapas:

  1. Desative a fonte upstream relevante.
  2. Publique seu pacote.
  3. Reative a origem 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 origem upstream com falha, os metadados para pacotes do mesmo protocolo não poderão mais ser atualizados. Para verificar o status de integridade de suas fontes upstream, execute 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 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 quando 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 de Artefatos do Azure, a latência geralmente não é mais do que 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 pode 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 a jusante assim que são publicados. No entanto, o pacote só aparecerá na interface do usuário do feed depois de ter sido ingerido. A ingestão é acionada quando um Feed and Upstream Reader (Colaborador) ou superior instala a versão do pacote a partir do upstream.

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 quaisquer pacotes que ainda estejam em desenvolvimento ou não atendam aos critérios de qualidade. Para obter mais informações, consulte O que são modos de exibição 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 baixar pacotes de uma fonte upstream?

R: Não. Um usuário com a função Leitor de Feed em um feed de Artefatos do Azure 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 a partir 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. Versões anteriores e posteriores do pacote não serão afetadas.

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

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