Cuidado com muitos Projetos do Jenkins utilizando verificação SCM

Posted Over 11 years ago. Visible to the public.

Quando existem muitos projetos configurados no Jenkins com a função "Consultar periodicamente o SCM" ativada, um cuidado especial é necessário na definição da sintaxe do cron. Em meu uso percebi que o Jenkins é extremamente instável no caso do cron ativar esta verificação em muitos projetos simultaneamente, de forma que o processo do Jenkins pode acabar morrendo. Com isso vários problemas podem ser trazidos para o ambiente de desenvolvimento, de acordo com os jobs que poderiam estar agendados ou em execução e foram finalizados de forma brusca, inclusive podendo corromper outras pastas sob versionamento.

A princípio a definição de 16 projetos meus sobre uma sintaxe idêntica do cron para consulta ao SCM a cada 15 minutos não me pareceu problema, mas ao atingir o primeiro minuto dentre os agendados e presenciar o jenkins realizar as 16 consultas simultaneamente, o processo de execução do jenkins morreu. Ao entender o problema e tentar minimizar o problema dividindo os projetos em grupos, para que em cada minuto diferente de uma hora (do zero ao 59) apenas 3 projetos diferentes realizassem a consulta simultânea, por algum tempo o jenkins continuou funcionando sem problemas, mas após um certo tempo o resultado obtido foi o mesmo, com a morte do processo do Jenkins .

A solução que tem funcionado até o presente momento (por enquanto por apenas um dia após a implantação) foi definir uma divisão sem agrupamentos, de forma que a cada minuto de uma hora apenas um único projeto faça a consulta ao SCM, sem consultas simultâneas. Para isto é preciso atenção nas sintaxes de agendamento dos diferentes projetos, pois por exemplo caso um projeto esteja configurado para verificar a cada 7 minutos e outro a cada 5, será inevitável que após 35 minutos eles façam uma consulta simultânea, e caberá à sorte e a instabilidade do Jenkins para definir se o projeto morrerá ou não. Na minha solução eu defini manualmente os minutos de execução para cada projeto, de forma que os projetos de menor prioridade tiveram apenas 2 minutos atribuídos a si dentro dos 60 possíveis para realizar a verificação, de forma que então consultam o SCM 1 vez a cada 30 minutos, mas sem coincidências (vide listagem abaixo). Já projetos de maior prioridade tiveram 12 minutos atribuídos a si dos 60 possíveis, de forma a consultar o SCM a cada 5 minutos, mas novamente sem coincidir com os outros projetos. Nesta distribuição consegui dividir uma hora para 24 projetos simples e 1 projeto principal.

Segue como sugestão a distribuição que fiz:

Minutos	Minutos	Cron		Projeto
0	30	*/5 * * * *	Projeto Principal Único
1	31	1,31 * * * *	Projeto Menor Importância 1
2	32	2,32 * * * *	Projeto Menor Importância 2
3	33	3,33 * * * *	Projeto Menor Importância 3
4	34	4,34 * * * *	Projeto Menor Importância 4
5	35			Projeto Principal Único
6	36	6,36 * * * *	Projeto Menor Importância 5
7	37	7,37 * * * *	Projeto Menor Importância 6
8	38	8,38 * * * *	Projeto Menor Importância 7
9	39	9,39 * * * *	Projeto Menor Importância 8
10	40			Projeto Principal Único
11	41	11,41 * * * *	Projeto Menor Importância 9
12	42	12,42 * * * *	Projeto Menor Importância 10
13	43	13,43 * * * *	Projeto Menor Importância 11
14	44	14,44 * * * *	Projeto Menor Importância 12
15	45			Projeto Principal Único
16	46	16,46 * * * *	Projeto Menor Importância 13
17	47	17,47 * * * *	Projeto Menor Importância 14
18	48	18,48 * * * *	Projeto Menor Importância 15
19	49	19,49 * * * *	Projeto Menor Importância 16
20	50			Projeto Principal Único
21	51	21,51 * * * *	Projeto Menor Importância 17
22	52	22,52 * * * *	Projeto Menor Importância 18
23	53	23,53 * * * *	Projeto Menor Importância 19
24	54	24,54 * * * *	Projeto Menor Importância 20
25	55			Projeto Principal Único
26	56	26,56 * * * *	Projeto Menor Importância 21
27	57	27,57 * * * *	Projeto Menor Importância 22
28	58	28,58 * * * *	Projeto Menor Importância 23
29	59	29,59 * * * *	Projeto Menor Importância 24
Bruno Vieira
Last edit
Over 11 years ago
Posted by Bruno Vieira to ZeroGlosa (2012-08-31 14:16)