Responsabilidades do Script de Compilação e do Servidor de Compilação

12

Preciso de alguns esclarecimentos sobre as responsabilidades do Script de Compilação e do Servidor de Compilação.

Eu li vários artigos na Internet sobre integração e builds contínuos. Incluindo

E tive uma conversa com meu orientador sobre o processo de criação do nosso software. Por ele ser muito experiente, confio nas declarações dele, mas fiquei confuso.

Pelo que entendi, da minha pesquisa (e por favor me corrija aqui, pois é sobre isso que estou perguntando), o ideal deve ser o seguinte:

  • todo projeto tem seu script de construção
  • esse script constrói o projeto
  • esse script garante que as dependências sejam construídas anteriormente

Como as dependências podem ser outro projeto, com seu próprio script de construção, uma hierarquia semelhante a uma árvore é acumulada. Pode haver um script de compilação superior que cria todos os projetos e aplicativos.

No entanto, as responsabilidades do servidor de compilação são:

  • confira o repositório
  • acionar a compilação
  • acionar testes e outras ferramentas de controle de qualidade
  • disponibilizar o artefato

Isso pode ser acionado manualmente, todas as noites ou sempre que o repositório mudar


Os objetivos do meu orientador são, como eu os entendo, que um script de construção é muito flexível e não pode ser mantido (além do fato de que levaria muito tempo para criar um para nossa base de códigos herdada). Além disso, o Build Server deve manter as dependências, por exemplo, para usar dependências mais antigas ao criar novas falhas. E, em particular, por Antser o assunto concreto, não é capaz de construir todo tipo de tecnologias diferentes usadas na base de código e não é capaz de manter as dependências.

Você pode elaborar os objetivos e esclarecer as responsabilidades?

Angelo.Hannes
fonte
4
Por mais que seja uma boa pergunta, e ela será respondida (mais tarde, quando tiver tempo, e ainda não foi respondida): você deve realmente voltar e obter esclarecimentos do seu orientador. Confundir-se depois de conversar com alguém que avaliará seu desempenho é uma receita para o desastre e uma indicação de que eles não estão se comunicando adequadamente com você (ou você não está ouvindo ativamente, mas não parece ser esse o caso) aqui).
precisa
2
@ Angelo.Hannes Eu acho que você atingiu todos os pontos principais. Você pode esclarecer mais especificamente sobre o que está confuso?
M. Dudley
@SteveEvers Bem, como acabei de ler algumas introduções a esse tópico, eu queria primeiro expandir meu conhecimento sobre ele. Certamente irei abordar esse tópico novamente. Portanto, eu realmente aprecio uma resposta sua.
precisa saber é o seguinte
@ M.Dudley Como eu disse, não tenho certeza de quais responsabilidades vão para onde. E se um script de construção para todo o software é o caminho certo a seguir.
precisa saber é o seguinte

Respostas:

14

Essas coisas são ortogonais:

O script de construção é o mecanismo que, após a invocação na árvore de origem recém-registrada, gera uma construção completa dos destinos e dependências necessários. Pode ser simplesmente 'make all' se você tiver um makefile ou uma chamada adequada do MSBuild, Ant, Maven ou Scons. Se você possui uma hierarquia complexa de dependências ou projetos relacionados, o seu 'script de construção' pode ser um arquivo de nível superior que invoca cada um deles por vez, verificando se há êxito.

O script de compilação é apenas um script de possivelmente muitos - checkout, compilação, teste, pacote - mas você pode ter um mecanismo tudo em um controlado por parâmetros de linha de comando - depende do seu ambiente.

O servidor de compilação , ou melhor, o servidor de integração contínua , é o mecanismo de automação responsável pelo agendamento / acionamento, monitoramento e relatório do checkout -> build -> test -> pacote -> estágio -> pipeline de implantação. Você poderia usar o cron / Task Scheduler se não tivesse nada mais sofisticado em mãos, mas agora existem muitas ferramentas excelentes, como Jenkins, Cruise Control, TeamCity, etc.

É importante que você possa invocar uma compilação sem usar o servidor de IC, caso esteja ocupado / offline / inacessível / indisponível de outro modo, portanto, a lógica para obter a compilação / teste / o que for feito precisa estar fora do Sistema de IC, mas é invocável por ele, parametrizado por ramo / tipo de compilação / versão / arquitetura etc.

JBRWilkinson
fonte