Não há problemas técnicos fundamentais com a execução de vários escravos Jenkins na mesma máquina. De fato, Executar Múltiplos Escravos na Mesma Máquina lista várias boas razões para fazê-lo:
Enquanto o uso correto de executores evita amplamente a necessidade de várias instâncias escravas na mesma máquina, há alguns casos de uso exclusivos a serem considerados:
- Você deseja mais configurabilidade entre os nós configurados. Digamos que você tenha um nó configurado para ser usado o máximo possível e o outro nó para ser usado apenas quando necessário.
- Você pode ter várias instalações mestras Jenkins construindo coisas diferentes e, portanto, essa configuração permite que você tenha escravos para mais de um mestre na mesma caixa. É isso mesmo, com Jenkins você realmente pode servir a dois mestres.
- Você pode aproveitar a facilidade de iniciar / parar / substituir máquinas virtuais, talvez em conjunto com os plugins Jenkins, como o Libvirt Slaves Plugin .
- Você deseja maximizar seu investimento e utilização de hardware, minimizando ao mesmo tempo o custo operacional (por exemplo, despesas de serviços públicos para executar escravos inativos).
Em geral, a expansão é preferida, principalmente porque a capacidade de expansão é tipicamente limitada pelos tipos / tamanhos dos recursos físicos disponíveis.
Em particular para aumentar o poder de compilação, recomendo uma análise da sua compilação real para determinar como ela usa os recursos da máquina, quais / onde estão seus gargalos e quais limitações de escalabilidade aumentam para revelar se a escalabilidade ajuda.
Por exemplo, encontrei casos em que o tempo de compilação para 2 compilações paralelas na mesma máquina era maior que os tempos combinados de compilação das mesmas 2 compilações executadas sequencialmente (sem sobreposição) na mesma máquina. Nesse caso, eu nem consideraria ampliar, pois isso diminuiria a capacidade geral de construção.