Lidando com requisitos de ordem de construção em compilações automatizadas

5

Eu tenho três pacotes Scala sendo construídos como projetos sbt separados em repositórios separados com um gráfico de dependência como este:

  M---->D
  ^     ^
  |     |
  +--+--+
     ^
     |
     S

S é um serviço. M é um conjunto de classes de mensagens compartilhadas entre S e outro serviço. D é um DAL usado por S e pelo outro serviço, e alguns de seus modelos aparecem nas mensagens compartilhadas.

Se eu fizer uma mudança para todos os três, e empurrá-los para o meu repositório do Git, uma versão de S será iniciada em Jenkins. A compilação só será bem-sucedida se, quando S for pressionado, M e D já tiverem sido pressionados. Caso contrário, o Jenkins descobrirá que não tem as versões de pacotes dependentes certas disponíveis. Mesmo empurrando-os simultaneamente não seria suficiente - as dependências teriam que ser construídas e publicadas antes mesmo que o trabalho dependente fosse iniciado. Tornar os jobs dependentes do Jenkins não é suficiente, porque isso apenas faria com que a versão anterior fosse construída, resultando em um artefato que não possui a versão necessária.

Existe uma maneira de configurar as coisas para que eu não tenha que lembrar de colocar as coisas na ordem correta?

A única maneira de vê-lo funcionando é se houvesse uma maneira de uma compilação entrar em estado pendente se as dependências ainda não estivessem disponíveis.

Eu sinto que há uma solução simples que estou perdendo. Certamente as pessoas lidam muito com isso?

    
por Dan Ellis 08.08.2014 / 11:00
fonte

1 resposta

1

Você também pode dar uma olhada neste plugin do Jenkins: link .

Eu recomendaria a reformulação do seu aplicativo. Como uma abordagem geral e boa prática, eu recomendaria a criação de versões dos seus projetos / componentes. Cada componente dependerá de uma versão específica do outro componente. Desta forma, você tem controle total sobre qual dependência está sendo considerada para a construção atual.

    
por 21.08.2014 / 12:50
fonte