Origens Upstream de Artefatos do Azure

Serviços de DevOps do Azure | 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 no seu feed.

Nota

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

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, isso 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 pacote em ordem, resultando em mais consistência ao reconstruir seu código.

  • Procedê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.

  • Paz de espírito: Todos os pacotes instalados a partir de fontes upstream são automaticamente guardados no seu feed. Isso significa que, mesmo que a fonte upstream esteja desativada, removida ou passando por manutenção, você pode continuar desenvolvendo e construindo com confiança porque tem uma cópia desse pacote em seu feed.

Melhores práticas - consumidores de embalagens

Para aproveitar ao máximo os benefícios das fontes upstream como consumidor de pacotes, 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>

Nota

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 pacotes 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 as suas fontes upstream intencionalmente:

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

No entanto, quando você está gerenciando várias fontes, 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. Neste caso, recomendamos que os registos públicos sejam colocados em primeiro lugar na lista de fontes a montante.

Em alguns cenários exclusivos, certas organizações optam por personalizar pacotes de software de código aberto (OSS). Tal poderá implicar a resolução de problemas de segurança, o reforço da funcionalidade ou o cumprimento de requisitos específicos que exijam a reconstrução interna do pacote, em vez de o obterem 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. Esse arranjo 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: proprietários de feeds/editores de pacotes

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

Use o modo de exibição padrão:

O modo de exibição padrão para todos os feeds recém-criados é o @Local modo de exibição, que contém todos os pacotes publicados no 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 pacote recém-lançadas, poderá promover seu pacote para o modo de exibição e, em seguida, disponibilizar esse modo de exibição para os consumidores do @Release pacote.

Construa 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 deseja compartilhar. Quando o pacote é salvo na visualização padrão, os usuários que desejam consumi-lo poderão resolver o gráfico do pacote e instalar o pacote desejado. Os pacotes de fontes upstream são exibidos com base na visualização configurada para a fonte upstream correspondente.

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, 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 a montante. Cada fonte upstream é pesquisada na ordem em que está listada na configuração do feed.

Para tirar o máximo partido da funcionalidade de pesquisa rápida, recomendamos que inclua apenas um feed no seu ficheiro de configuração.

Nota

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ê 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 de download e preserva 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. Neste último cenário, a instalação do express também salvaria suas dependências, como accepts.

Nota

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

Substituir pacotes de fontes upstream

Ao habilitar fontes upstream, é importante observar que a publicação de 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 uma de suas fontes upstream, siga estas etapas:

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

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 funcionamento das fontes a montante

Se um feed tiver uma fonte upstream com falha, os metadados para pacotes do 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 Artefatos e, em seguida, selecione seu feed no menu suspenso.

  3. Selecione o ícone ícone de engrenagem de engrenagem para navegar até as configurações de 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.

Nota

No caso de registos públicos como o NuGet.org, existe um atraso de 3 a 6 horas entre o momento em que um pacote é enviado para o registo 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 é mais do que alguns minutos.

Fontes upstream offline

As fontes upstream servem como uma salvaguarda 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 seu 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 seu feed e continuar seu desenvolvimento.

FAQs

P: Não consigo encontrar o meu pacote apesar de o poder ver num 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ó será 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 Upstream Reader (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 que ele é permanentemente salvo e disponível no downstream para todos os leitores. Isso ocorre quando a versão do pacote se torna visível na seção versões do pacote da interface do usuário da Web.

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

R: As visualizaçõ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 pretendo configurar como fonte upstream?

R: Certifique-se de que o proprietário do feed está a partilhar uma vista como uma fonte a montante.

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 Feed Publisher (Colaborador) ou um Proprietário de 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. As versões anteriores e posteriores do pacote permanecerão inalteradas.

P: O que acontece quando um usuário deprecia 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 é visualizado ou instalado a partir do feed.