Partilhar via


O que são fontes a montante?

Serviços de DevOps do Azure | Azure DevOps Server | Azure DevOps Server 2022

As fontes upstream dos Artefatos do Azure permitem que os desenvolvedores armazenem pacotes de várias origens em um único feed, incluindo pacotes publicados no feed e aqueles instalados a partir de registros públicos, como NuGet.org ou npmjs.com. Quando as fontes upstream são ativadas, qualquer pacote instalado a partir de uma fonte upstream é automaticamente salvo no seu feed.

Nota

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

Porquê utilizar fontes a montante?

Habilitar fontes upstream oferece várias vantagens para gerenciar as dependências do seu produto em um único feed:

  • Simplicidade: Armazenar todos os seus pacotes em um único feed 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 a complexidade da configuração e minimiza erros.

  • Compilações consistentes: seu feed resolve solicitações de pacotes em uma ordem definida, ajudando a garantir compilações previsíveis e confiáveis em todos os ambientes.

  • Integridade do Pacote: O seu feed retém metadados sobre pacotes salvos de fontes a montante, permitindo-lhe verificar a sua autenticidade e garantir que esteja a usar as versões originais, não cópias ou versões potencialmente maliciosas.

  • Confiabilidade: Os pacotes instalados a partir de fontes upstream são salvos automaticamente no seu feed. Isso garante acesso contínuo mesmo se a fonte upstream ficar temporariamente indisponível devido a manutenção ou outros problemas, para que você possa continuar desenvolvendo e construindo com confiança.

Melhores práticas para os consumidores de embalagens

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

Usar um único feed no seu ficheiro 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 fontes upstream habilitadas.

  • Exemplos:

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

    Nota

    O NuGet compila vários arquivos de configuração para determinar o conjunto completo de opções a serem aplicadas. O uso do <clear /> garante que todas as outras fontes de pacotes especificadas em arquivos de configuração de nível superior sejam ignoradas.

Encomende as suas fontes upstream intencionalmente

Se você estiver usando apenas registros públicos, como NuGet.org ou npmjs.com, a ordem das fontes upstream não afetará o comportamento. As solicitações para o feed seguem a sequência descrita na seção ordem de pesquisa.

No entanto, ao gerenciar várias fontes, como uma combinação de feeds e registros públicos, cada fonte upstream é pesquisada na ordem definida nas definições de configuração do feed. Nestes casos, recomendamos que os registos públicos sejam colocados em primeiro lugar na lista de fontes a montante.

Em alguns cenários exclusivos, algumas organizações modificam pacotes de software de código aberto (OSS) para resolver problemas de segurança, aprimorar a funcionalidade ou atender a requisitos internos 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, coloque a fonte upstream que contém esses pacotes OSS personalizados antes de outros registros públicos. Isso garante que suas versões personalizadas sejam usadas em vez das públicas.

Práticas recomendadas para proprietários de feeds e editores de pacotes

Para garantir que seu feed possa ser facilmente configurado como uma fonte upstream, siga estas práticas recomendadas:

Utilizar a vista predefinida

Todos os feeds recém-criados usam o @Local modo de exibição por padrão. Esta vista inclui:

  • Pacotes publicados diretamente no feed.
  • Pacotes guardados de fontes de origem.

Se você quiser usar outros modos de exibição, como um modo de exibição para versões de pacotes recém-lançados, poderá promover seus pacotes para o modo de exibição @Release e, em seguida, disponibilizar esse modo de exibição para seus consumidores-alvo. Consulte visualizações de feed para obter mais detalhes.

Construir um gráfico de pacote

Para construir um gráfico de pacote, basta conectar-se à visualização padrão do feed e instalar o pacote que você deseja compartilhar. Uma vez que um pacote é salvo na visualização padrão, os usuários que desejam consumi-lo poderão resolver o gráfico do pacote e instalar a versão desejada. Os pacotes de fontes upstream são exibidos com base na visualização configurada para a fonte upstream correspondente. Consulte Como os upstreams constroem o conjunto de pacotes disponíveis para obter mais detalhes.

Ordem de pesquisa

Para gerenciadores de pacotes públicos que oferecem suporte a vários feeds, como NuGet e Maven, a ordem na qual os feeds são consultados às vezes pode ser pouco clara ou não determinística. Por exemplo, o NuGet envia consultas paralelas para todos os feeds no arquivo de configuração e processa as respostas de maneira FIFO (first-in, first-out), o que pode levar a resultados inconsistentes.

As fontes upstream dos Azure Artifacts eliminam essa incerteza ao impor uma ordem de pesquisa estruturada, pesquisando o fluxo 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 em fontes de origem. Cada fonte upstream é pesquisada na ordem em que está listada na configuração do feed.

Nota

Os Artefatos do Azure não dão suporte à pesquisa de pacotes em fontes upstream usando o Gerenciador de Pacotes NuGet no Visual Studio.

Guardar pacotes das fontes de origem

Quando uma fonte upstream está ativada no seu feed, o Azure Artifacts salva automaticamente uma cópia de qualquer pacote instalado por um colaborador ou alguém de nível superior.

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 da resolução de dependência, portanto, a instalação do express também salvaria suas dependências, como accepts.

As fontes upstream oferecem uma proteção crítica para seus consumidores e infraestrutura. Se o registo público estiver inativo, em manutenção ou temporariamente indisponível, poderá ainda recuperar os pacotes necessários do seu feed e continuar o desenvolvimento.

Nota

Fontes upstream personalizadas são suportadas apenas para pacotes npm.

Sobrepor pacotes de fontes ascendentes

Quando as fontes upstream estão habilitadas no feed, você não pode publicar uma versão do pacote que já exista em uma dessas fontes upstream. Por exemplo, se a NuGet.org upstream estiver ativada, você não poderá publicar Newtonsoft.Json 10.0.3 no seu feed, uma vez que essa versão já está disponível no NuGet.org.

Para substituir uma versão de pacote de uma fonte upstream:

  1. Desative a fonte upstream relevante.

  2. Publique a versão desejada do pacote no feed.

  3. Reative a fonte de origem.

Esse fluxo de trabalho garante que você possa publicar a versão desejada, mantendo a integridade de suas fontes upstream.

Nota

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

Estado de saúde das fontes a montante

Se um feed tiver uma fonte upstream com falha, os metadados de pacotes que usam o mesmo protocolo não poderão mais ser atualizados. Para verificar o estado de funcionamento das fontes a montante, siga estes passos:

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

  2. Selecione Artefatose, em seguida, selecione o seu feed no menu suspenso.

  3. Selecione o ícone de engrenagem para abrir Configurações de feed e, em seguida, selecione Fontes ascendentes.

    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. Selecione o status Falha para exibir informações detalhadas, incluindo a causa da falha e as etapas para resolvê-la.

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

Nota

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