UMA pipeline de construçãogeralmente requer acesso a recursos de terceiros, além do código-fonte dos artefatos que ele pretende criar. Cada um desses recursos de terceiros introduz um fator de risco nas compilações, por exemplo:
Os repositórios de distribuição estão temporariamente indisponíveis, portanto, a instalação dos pacotes de distribuição falha temporariamente.
Os repositórios de distribuição estão permanentemente indisponíveis, iguais e piores que antes.
Alguns pacotes de software livre do NPM param de existir, porque seu autor reivindicou essa retirada.
Algum arquivo de origem ou pacote ad-hoc binário para uma ferramenta de terceiros não está mais disponível.
Essa lista pode ser estendida ad lib e, embora o estudo das várias razões que levem a que alguns recursos de terceiros desapareçam seja muito mais divertido, parece que em primeiro lugar tem uma conseqüência desastrosa para nós: o pipeline de construção está quebrado.
Qual é a melhor maneira de abordar os dois casos a seguir ao criar imagens de janela de encaixe :
- Armazenando em cache arquivos baixados com um curl ou wget .
- Armazenando em cache pacotes Debian.
Existem várias estratégias plausíveis que podem ser consideradas aqui. Por exemplo, usando um proxy e configurando o sistema de construção para rotear todas as suas solicitações por meio desse proxy. Uma segunda possibilidade barata seria agrupar chamadas curl para armazenar resultados em um cache local.
(Nesta pergunta, eu consideraria compartilhar o cache entre várias unidades do pipeline de construção como uma questão de importância secundária.)
fonte
Parece que o que você está procurando é menos sobre cache e mais sobre espelhamento. Como seus requisitos precisam lidar com pacotes permanentemente indisponíveis, você precisa persistir os pacotes em algo mais permanente que um cache. No passado, armazenamos pacotes em lojas persistentes baseadas na nuvem, como o S3. No entanto, não há nada para impedir que você configure um armazenamento de arquivos personalizado no servidor de construção.
Mais concretamente, provavelmente é mais fácil configurar um serviço de proxy que procure um recurso no seu armazenamento de arquivos (S3) e retorne o pacote, se for encontrado. Caso contrário, ele apenas solicitaria o recurso do upstream, preencheria seu armazenamento de arquivos e retornaria o pacote.
fonte