Como fazer uma compilação (java) como “CM-independente” possível? (CM = Configuration Manager)

StackOverflow https://stackoverflow.com/questions/486668

Pergunta

Eu estive pensando em fazer um projeto constrói eu segurar, como "independente" de mim (CM) quanto eu puder. Por isso eu não automação significa apenas via scripts / ferramentas - embora definitivamente inclui-lo. Este é um projecto sujeito a muito caos e assim automação "total" não seria realista.

Aqui está o que eu estou apontando para:

Qualquer pessoa deve ser capaz de fazer a construção (com alguma automação e um pouco de documentação / orientações) - por exemplo -. A CM novato, ou mesmo um desenvolvedor sem experiência CM

Meus primeiros pensamentos são para conseguir isso:

  1. Pregando o processo de solicitação Construir (através de formulários de compilação que capturam todos os detalhes necessários para a construção de modo que nada cai das rachaduras apenas porque a sua na cabeça de alguém)

  2. Simplificar a criar etapas para que eles possam ser capturados em uma documentação simples como uma seqüência de comandos - um macaco treinado deve ser capaz de executar com a construção (bem .. não insultando mas - você começa a idéia :-))

  3. Usando os recursos da ferramenta para o cabo (leia ANT, SVN) de tal forma que os problemas potenciais são bem pego com antecedência e também ajuda fornecer melhores alertas em caso de falhas / problemas.

  4. Ter a liberdade de ficar doente ou tomar essas férias ocasionais sem os ataques de pânico gerente de projeto recebendo toda vez que eu mencionar um par de dias fora. :-)

Eu ficaria feliz de ter alguns pensamentos e idéias para me ajudar neste sentido. Obrigado a todos!

Foi útil?

Solução

Na Urbancode , nos referimos a isso como o "Bob the Builder" anti-padrão. A boa notícia é que Bob (você) quer sair do loop. Quando o cara build não pode ir de férias ou ficar doente, sem partes do processo de moagem a uma parada, não há realmente um problema inaceitável. Se eu sou um homem de apostas, como você iniciar o processo de simplificar o processo para níveis "macaco treinado", você vai saber porque você está gastando seu tempo fazendo essas coisas rote quando você é inteligente e poderia realmente ser a adição valor em algum lugar.

Os sintomas da síndrome de "Bob the Builder" em nosso livro:

  1. Todas as solicitações para constrói ou constrói de um certo tipo, passar por um indivíduo ou pequena equipe.
  2. resposta a estes pedidos de construção é irritantemente lento para os desenvolvedores. Se a equipe de construção é na hora do almoço, eles esperam horas.
  3. Bob, ou a equipe de Bobs, gastam uma porcentagem significativa de seu tempo fazendo tarefas repetitivas.
  4. Os Bobs casa indo para o dia, indo almoçar, ir de férias, ou ficar doente impedem a capacidade da equipe para fazer as coisas.

Nós dizemos a nossos AnthillPro clientes para empurrar tudo isso tipo de coisa em sua automação. Ter dois tipos de compilação que usam máquinas diferentes, diferentes números de compilação, etc não deve ser um problema.

O primeiro passo é emburrecer o processo. Dirigir tanto complexidade quanto possível para que você possa chegar até o processo de "macaco treinado". Uma vez que você tem algo que se aproxima, substituindo o macaco com um computador é muito fácil.

Eu daria um conselho mais específico, mas eu não acho que você nos disse onde a complexidade vem, diferente de caos. Às vezes, nesta situação, você precisa atacar práticas caóticos e maus. Você está fazendo compilações "Esta linha de base no código-fonte e esses dois arquivos e esses três arquivos?" Isso seria complicado e provavelmente precisará de um CMer no circuito. Encontrar uma maneira de proibi-lo. Substituindo isso com "Criar um ramo, e fazer alterações específicas para esse ramo" faz construir o factível construir por esse macaco.

Você deve ser capaz de defender essas mudanças como de alto risco. Mesmo que você é bom, você terá dias ruins e querem tomar o erro humano da equação, tanto quanto possível. Ao mesmo tempo, se você está atirando para uma resposta mais rápida para os desenvolvedores e self-service (que presumivelmente desenvolvimento e gestão quiser) algumas coisas terão de ser feitas automateable / monkeyable.

Tendo melhores formas pode ser bom nesse ínterim, e usando suas ferramentas bem é sempre bom, mas gostaria de atacar o problema "macaco treinado" bastante agressiva. Qualquer coisa que não pode ser feito por um macaco treinado (ou um computador) deve ser um candidato para sair do processo. Uma vez que você tê-lo para baixo para o status de "macaco treinado", obter o seu automação de construção no lugar de modo nem você nem os desenvolvedores precisam estar macacos. Isso muda o seu papel de "Bob the Builder" para "Bob o sistema de compilação do proprietário".

Outras dicas

Simplificar a criar etapas para que eles possam ser capturados em uma documentação simples como uma seqüência de comandos - um macaco treinado deve ser capaz de executar com a construção (bem .. não insultando mas - você começa a idéia :-) )

Se isso é possível do que deveria ser possível executar a compilação em uma única etapa através de um script (mayy que ser uma formiga, festança, maven ou qualquer script). Esse deve ser o objetivo, então, basicamente qualquer um pode fazer a compilação.

O objetivo de desenvolver um processo de construção deve ser esta:

  1. Comece com um diretório vazio em qualquer lugar (tabula rasa, se preferir)
  2. Certifique-se de uma pequena ferramentas de ferramentas básicas é intalled (para mim isso é geralmente Java + Maven + SVN cliente de linha de comando)
  3. Confira um única diretório do seu SVN / CVS /...
  4. Iniciar um único comando (e que significa algo que não tem 25 parâmetros)
  5. Wait (possivelmente um bom tempo)
  6. Tenha sua construção completa

Se você não pode fazer isso, então o seu processo de construção ainda não é bom o suficiente.

Se você acha que você não pode alcançá-lo, em seguida, descrever em detalhe quais as ações que você precisa fazer, além de que a lista não é possível fazer por uma máquina de Turing completo.

Normalmente não existe tal ponto a. É apenas as ferramentas ausentes / know-how / motivação. Eu, pessoalmente, descobri que é mais fácil de fazer isso, do que para descrever por que ele não pode ser feito.

Boa sorte.

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