Pergunta

Eu nunca usei ferramentas CI antes, mas pelo que eu li, eu não tenho certeza de que iria fornecer qualquer benefício para um desenvolvedor solo que não está escrevendo código a cada dia.

Em primeiro lugar - o que os benefícios que CI fornecer a qualquer projeto

Em segundo lugar - quem deve usar CI? Ele beneficia todos os desenvolvedores?

Foi útil?

Solução

O conceito básico do CI é que você tem um sistema que constrói o código e executa testes automatizados sempre que alguém faz uma comprometer com o sistema de controle de versão. Estes testes incluem testes unitários e funcionais, ou comportamento, mesmo testes conduzidos.

A vantagem é que você sabe - imediatamente - quando alguém quebrou a compilação. Isto quer dizer que a) se comprometeu código que compilação previne, que iria estragar qualquer um até que fez um 'update', ou B) Comprometeram código que quebrou alguns testes, o que quer meios que introduziu um bug que precisa ser corrigido, ou os testes precisam ser atualizados para refletir a mudança no código.

Se você é um desenvolvedor de solo, CI não é muito tão útil se você estiver em um bom hábito de correr seus testes antes de uma confirmação, que é o que você deve estar fazendo. Dito isto, você pode desenvolver um mau hábito de deixar o CI fazer seus testes para você.

Como um programador de solo, que principalmente se resume a disciplina. Usando CI é uma habilidade útil para ter, mas você quer evitar o desenvolvimento de qualquer maus hábitos que não se traduziria em um ambiente de equipe.

Outras dicas

Como outras pessoas têm notado, CI faz tem vantagens para um desenvolvedor de solo. Mas a pergunta que você tem que se perguntar é; vale a pena a sobrecarga? Se você é como eu, ele provavelmente irá demorar uma hora ou duas para criar um sistema de CI para um projeto, só porque eu vou ter que alocar um servidor, configurar toda a rede e instalar o software. Lembre-se que o sistema de CI só serão poupando-lhe alguns segundos de cada vez. Para um desenvolvedor de solo, estes tempos não são susceptíveis de adicionar até mais do que o tempo que levou para fazer a instalação CI.

No entanto, se você nunca criou um sistema CI antes, eu recomendo fazê-lo apenas por uma questão de aprender a fazê-lo. Ele não leva tanto tempo que não vale a pena a experiência de aprendizagem.

O benefício de mentiras CI na capacidade de descobrir cedo, quando um cheque no quebrou a compilação. Você também pode executar o seu conjunto de testes automatizados contra a construção, bem como executar qualquer tipo de ferramentas para lhe dar métricas e tal.

Obviamente, isso é muito valioso quando você tem uma equipe de commiters, dos quais nem todos são diligentes para verificar se há alterações significativas. Como um desenvolvedor de solo, ele não é tão valioso. Presumivelmente, você executar os testes de unidade, e até mesmo testes de integração, talvez. No entanto, tenho visto uma série de ocasiões em que os esquece desenvolvedor para check-in de um arquivo a partir de um conjunto.

A construção CI pode também ser pensado como a sua construção "release". O ambiente deve ser estável, e não afetado por qualquer aparelho de desenvolvimento que você acabou de adicionar à sua máquina. Ele deve permitir que você sempre reproduzir uma compilação. Isso pode ser útil se você adicionar uma nova dependência para o seu projeto, e se esqueça de configurar o ambiente de liberação de construção para levar isso em conta.

Se você precisa para suportar múltiplos compiladores então é útil para ter um sistema CI compilação para fazer tudo isso enquanto você apenas desenvolver em um IDE. Meu código constrói com VC6 através VS2008 em x86 e x64 baseia-se em VS2005 e 8, de modo que é 7 constrói por projecto e por configuração do projeto ... Ter um meio de sistema CI que eu possa desenvolver-se em um IDE e deixar que o sistema CI provar que todas os compiladores que eu ainda apoiar construção.

Da mesma forma, se você está construindo libs que são utilizados por vários projetos, em seguida, CI irá certificar-se que trabalhar com todos os projetos em vez de apenas o que você está trabalhando com agora ...

A verdade é que a integração contínua faz mais sentido em equipes. desenvolvedores individuais também pode obter algumas vantagens, você deve decidir-se se eles são suficientes para contrariar o tempo que você investir para a criação de um sistema CI-se.

  • Se você se esqueceu de check-in algum arquivo necessário, o repositório contém uma versão quebrada, mesmo se ele funciona em sua máquina. CI seria detectar nesse caso.
  • Se o seu CI-servidor é executado em uma máquina diferente, pode indicar dependências de sua build-ambiente. Meios, a compilação e todos os testes pode trabalhar em seu dev-box, mas em outra máquina algumas dependências não são cumpridas e as quebras de compilação.
  • compilações diárias pode indicar, que o seu software mais antigo não funciona com a mais recente atualização do OS / compilador / biblioteca ...
  • Se o seu CI-sistema tem um arquivo de build-artefatos você pode facilmente obter uma distribuição de uma versão mais antiga do software.
  • Alguns CI tem uma interface agradável para mostrar-lhe métricas sobre a sua construção, têm links para documentação gerada automática e coisas assim.

Nós usamos nosso sistema de CI para fazer compilações Release (bem como o automático normal "on-commit" compilações).

Ser capaz de clicar em um botão que inicia uma compilação de lançamento que percorre todos os processos para liberar a configuração é:

  • rápido (eu posso ir em frente com outras coisas, e ele é executado em uma máquina separada para que ele não está me atrasando);
  • repetitivo (não esquecer de nada, incluindo copiar a configuração para a pasta de lançamento e notificando a todos que precisa de saber)
  • confiáveis ??(sem erros, ao contrário de um ser humano!).

Em um ambiente Agile, onde você espera estar entregando software trabalhando a cada 2-4 semanas, este é definitivamente vale a pena ter, mesmo em uma equipe de 1.

CI beneficia um desenvolvedor de solo no sentido de que você está ciente se você se esqueceu de verificar algo na (porque a construção será quebrado). O valor de integração do que é diminuído quando não há outros desenvolvedores, no entanto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top