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
- A chave F5 não é um processo de compilação
- O servidor de compilação: o Monitor cardíaco do seu projeto
- Construções diárias são seu amigo
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 Ant
ser 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?
fonte
Respostas:
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.
fonte