Automação de compilação - Build automation
Desenvolvimento de software |
---|
Automação de build é o processo de automatizar a criação de um build de software e os processos associados, incluindo: compilar o código-fonte do computador em código binário , empacotar o código binário e executar testes automatizados .
Visão geral
Historicamente, a automação da construção era realizada por meio de makefiles . Hoje, existem duas categorias gerais de ferramentas:
- Utilitário de automação de compilação
- Isso inclui utilitários como Make , Rake , CMake , MSBuild , Ant , Maven ou Gradle (Java) etc. Seu objetivo principal é gerar artefatos de construção por meio de atividades como compilar e vincular o código-fonte.
- Servidores de automação de compilação
- Estas são ferramentas gerais baseadas na web que executam utilitários de automação de compilação em uma base programada ou acionada; um servidor de integração contínua é um tipo de servidor de automação de construção.
Dependendo do nível de automação, a seguinte classificação é possível:
- Makefile - nível
- Ferramentas baseadas em marca
- Ferramentas não baseadas em Make
- Ferramentas de geração de script de construção (ou Makefile)
- Ferramentas de integração contínua
- Ferramentas de gerenciamento de configuração
- Ferramentas de meta-compilação ou gerenciadores de pacotes
- Outro
Uma lista de software para cada um pode ser encontrada na lista de software de automação de construção .
Utilitários de automação de compilação
Os utilitários de automação de compilação permitem a automação de tarefas simples e repetíveis. Ao usar a ferramenta, ele calculará como atingir o objetivo executando as tarefas na ordem correta e específica e executando cada tarefa. As duas maneiras pelas quais as ferramentas de construção diferem são orientadas a tarefas e orientadas a produtos. As ferramentas orientadas a tarefas descrevem a dependência das redes em termos de um conjunto específico de tarefas e as ferramentas orientadas a produtos descrevem as coisas em termos dos produtos que geram.
Servidores de automação de compilação
Embora os servidores de construção existam muito antes dos servidores de integração contínua, eles geralmente são sinônimos de servidores de integração contínua; no entanto, um servidor de construção também pode ser incorporado a uma ferramenta ARA ou ferramenta ALM .
Tipos de servidor
- Automação sob demanda , como um usuário executando um script na linha de comando
- Automação programada , como um servidor de integração contínua executando um build noturno
- Automação disparada , como um servidor de integração contínua executando uma construção em cada confirmação para um sistema de controle de versão .
Automação de compilação distribuída
A automação é obtida por meio do uso de um farm de compilação para compilação distribuída ou a execução da etapa do utilitário. O processo de construção distribuída deve ter inteligência de máquina para entender as dependências do código-fonte para executar a construção distribuída.
Relação com entrega contínua e integração contínua
A automação de build é considerada a primeira etapa na direção da implementação de uma cultura de entrega contínua e DevOps . A automação de construção combinada com integração contínua , implantação , automação de lançamento de aplicativo e muitos outros processos ajudam a levar uma organização adiante no estabelecimento de melhores práticas de entrega de software.
Vantagens
As vantagens da automação de construção para projetos de desenvolvimento de software incluem
- Uma pré-condição necessária para integração contínua e teste contínuo
- Melhore a qualidade do produto
- Acelere a compilação e o processamento do link
- Elimine tarefas redundantes
- Minimize "construções ruins"
- Elimine dependências do pessoal-chave
- Ter histórico de construções e lançamentos para investigar problemas
- Economize tempo e dinheiro - pelos motivos listados acima.
Veja também
- Automação de liberação de aplicativo (ARA)
- Automação de configuração contínua (CCA)
- Integração contínua (CI)
- Entrega contínua (CD)
- Teste contínuo
- DevOps
- Lista de software de automação de compilação
- Engenharia de família de produtos
- Engenharia de liberação (RE)
- Gerenciamento de configuração de software (SCM)
- Teste de unidade