O que são fontes upstream?
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
As fontes upstream do Azure Artifacts permitem que os desenvolvedores armazenem convenientemente pacotes de várias fontes em um único feed, incluindo aqueles que você publica e aqueles instalados de feeds externos ou registros públicos, como NuGet.org, npmjs.com. Depois que as fontes upstream estiverem habilitadas, qualquer pacote instalado de uma fonte upstream será salvo automaticamente no 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.
Por que usar fontes upstream?
Habilitar fontes upstream oferece vários benefícios para gerenciar as dependências do produto em um único feed:
Simplicidade: armazenar todos os pacotes em um único feed simplifica seus arquivos de configuração como NuGet.config, npmrc ou settings.xml. Com apenas um feed no arquivo de configuração, você reduz as chances de erros e simplifica sua configuração.
Compilações consistentes: o feed resolve solicitações de pacotes em uma ordem definida, garantindo compilações mais previsíveis e confiáveis.
Integridade do Pacote: O feed retém metadados sobre pacotes salvos de fontes upstream, permitindo que você verifique sua autenticidade e assegure-se de que está usando as versões originais, não cópias ou versões potencialmente maliciosas.
Confiabilidade: pacotes instalados de fontes originais são salvos automaticamente no seu feed. Isso garante o acesso contínuo mesmo que a fonte upstream fique indisponível devido à manutenção ou outros problemas para que você possa continuar desenvolvendo e criando com confiança.
Práticas recomendadas para consumidores de pacotes
Para aproveitar ao máximo os benefícios das fontes upstream como um consumidor de pacote, siga estas práticas recomendadas:
1. Usar um único feed no 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 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>
Observação
O NuGet compila vários arquivos de configuração para determinar o conjunto completo de opções a serem aplicadas. Usar
<clear />
garante que todas as outras fontes de pacote especificadas em arquivos de configuração de nível superior sejam ignoradas.
2. Ordenar 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 importará. As solicitações para o feed seguem a sequência descrita na seção ordem de pesquisa.
No entanto, quando você está gerenciando várias fontes, como uma combinação de feeds e registros públicos, cada fonte upstream é pesquisada na ordem definida nas configurações do feed. Nesse caso, recomendamos colocar os registros públicos em primeiro lugar na lista de fontes upstream.
Em alguns cenários exclusivos, algumas organizações modificam pacotes de software de software livre (OSS) para resolver preocupações de segurança, aprimorar a funcionalidade ou atender a requisitos internos específicos que exigem a recriação do pacote internamente, 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 de 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 feed e editores de pacotes
Para garantir que o feed possa ser facilmente configurado como uma fonte upstream, siga estas práticas recomendadas:
1. Usar o modo de exibição padrão
O modo de exibição padrão para todos os feeds recém-criados é @Local
, que contém todos os pacotes publicados no feed, bem como pacotes salvos de fontes upstream.
Se você quiser usar outras exibições, como um modo de exibição para versões de pacote recém-lançadas, poderá promover seus pacotes para o modo de exibição @Release
e, em seguida, disponibilizar essa exibição para seus consumidores de destino. Consulte Exibições de feed para obter mais detalhes.
2. Construir um grafo de pacote
Para construir um grafo de pacote, basta conectar-se ao modo de exibição padrão do feed e instalar o pacote que você deseja compartilhar. Depois que um pacote for salvo no modo de exibição padrão, os usuários que desejarem consumi-lo poderão resolver o grafo do pacote e instalar a versão desejada. Os pacotes de fontes ascendentes são exibidos com base na visualização configurada para a respectiva fonte ascendente. Consulte Como os upstream constroem o conjunto de pacotes disponíveis para obter mais detalhes.
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, o NuGet envia consultas paralelas a todos os feeds no arquivo de configuração e processa as respostas de maneira "primeiro a entrar, primeiro a sair" (FIFO), o que pode levar a resultados inconsistentes.
As fontes upstream eliminam essa incerteza impondo uma ordem de pesquisa estruturada pesquisando o feed e suas fontes upstream na seguinte ordem:
Pacotes que foram publicados diretamente no feed.
Pacotes que foram salvos de uma fonte upstream.
Pacotes disponíveis a partir de fontes upstream. Cada fonte upstream é pesquisada na ordem em que está listada na configuração do feed.
Observação
O Azure Artifacts não dá suporte à pesquisa de pacotes em fontes upstream usando o Gerenciador de Pacotes NuGet no Visual Studio.
Salvar pacotes de fontes upstream
Quando uma fonte upstream estiver habilitada no seu feed, o Azure Artifacts salvará automaticamente uma cópia de qualquer pacote instalado por um colaborador ou alguém com permissões superiores, a partir do upstream.
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. Nesse caso, instalar express também salvaria suas dependências, como aceita.
As fontes upstream fornecem uma proteção importante para seus consumidores e infraestrutura, protegendo-os contra interrupções inesperadas. Se a fonte upstream enfrentar tempo de inatividade, passar por manutenção ou ficar temporariamente indisponível, você ainda poderá obter os pacotes necessários do seu feed e continuar seu desenvolvimento.
Observação
As fontes upstream personalizadas só têm suporte para pacotes npm.
Substituir pacotes de fontes upstream
Ao habilitar fontes upstream, tenha em mente que não é possível publicar uma versão do pacote que já existe em uma fonte upstream. Por exemplo, se você habilitar a NuGet.org upstream, não poderá publicar o pacote Newtonsoft.Json 10.0.3, pois essa versão já está disponível no NuGet.org.
Se você precisar publicar uma versão do pacote que já existe em uma de suas fontes upstream, siga estas etapas:
Desabilite a fonte upstream relevante.
Publique seu pacote.
Reabilite a fonte upstream.
Esse processo garante que você possa publicar a versão desejada mantendo a integridade de suas fontes 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.
Estado de saúde 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:
Entre na sua organização do Azure DevOps e navegue até seu projeto.
Selecione Artefatos e, em seguida, selecione o feed no menu suspenso.
Selecione o
para navegar até as Configurações do feed e, em seguida, selecione Fontes Upstream.
Se ocorrer alguma falha, uma mensagem de aviso será exibida. Clicar no status Com falha fornece detalhes adicionais, incluindo a causa da falha e instruções sobre como resolvê-la.
Observação
Para registros públicos como NuGet.org, há um atraso de 3 a 6 horas entre quando um pacote é enviado por push 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 do Azure Artifacts, a latência geralmente não é superior a alguns minutos.
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 and Upstream Reader (Colaborador) ou superior instala a versão no feed secundário. Isso aciona o downstream para salvar uma cópia do pacote do upstream. A partir desse momento, ele é salvo permanentemente e fica 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. Confira O que são exibições de feed para obter mais detalhes.
P: Não consigo encontrar o feed que quero configurar como uma fonte upstream?
R: Verifique se o proprietário do feed compartilhou uma exibição como uma fonte upstream. Consulte Adicionar um feed em uma organização diferente como uma fonte upstream para obter mais detalhes.
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 salvos no feed. Os pacotes são salvos no feed quando um Feed e Leitor upstream (Colaborador), Editor do feed (Contribuidor) ou Proprietário do feed instala os 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. Esse aviso é exibido sempre que o pacote é visualizado ou instalado do feed.