Você pode fazer uma compilação em uma única etapa?


14

Do teste de joel :

Você pode fazer uma compilação em uma única etapa?

Eu tenho que dizer que não posso. Atualmente, estou trabalhando em um aplicativo Web que possui uma lista de planilhas com itens que devem ser executados para implantar. Então, minha pergunta é como posso automatizar isso ? Tem que ser uma organização ampla? Dicas / técnicas?


3
Depende do que são os itens da lista? Idealmente, sim, você deve poder automatizá-lo.
Ninguém

4
pt.wikipedia.org/wiki/Build_automation BTW: Alguns ficam um passo é demais :) :) #
1913

Todos os tipos - mover arquivos, executar scripts de procedimentos armazenados etc - existem 14 etapas!
precisa saber é o seguinte

2
De um ângulo diferente, o que você acha que não consegue automatizar na lista?
Tyanna

1
A questão de como automatizar uma construção não é subjetiva e deve ser feita no Stack Overflow. A pergunta também deve ter mais informações sobre as tarefas necessárias, para obter uma resposta útil.
David Thornley

Respostas:


10

Make pode automatizar o processo de compilação em uma única etapa. Make pode fazer praticamente o que você quiser. Não sei por que o sapporo pensa que o Make se aplica apenas ao C / C ++. Você pode usar make para executar qualquer tipo de comando. Ele nem está ligado à programação, embora seja para isso que é normalmente usado.


2
make é um desses tipos de "canivete suíço"; adoro trabalhar com isso. Outra coisa a apontar onde o make seria útil é que, se você estiver automatizando sua construção / processo / etc, e uma ou mais etapas dependerem da conclusão de outra com êxito, a make será interrompida se essa etapa falhar, não permitindo que essas outras etapas prossigam e possivelmente causar problemas.
Will

1
Como muitos 'aplicativos / sistemas nix estão instalados com' ./configure; faço; make install 'Eu acho que o make também funciona como um mecanismo de instalação. Se isso for possível, também tenho certeza de que pode resolver o dilema do OP.
JBRWilkinson

Faça, mas a sintaxe é bastante obscura. Até o momento, encontrei duas alternativas: SCons (muito mais fácil que o Make + makedepend) e uma ferramenta para automatizar a criação do Makefile (proprietário).
Matthieu M.

@JbRWilkinson ... como eu disse make pode fazer praticamente o que quiser;)
pemdas

3

Dependendo do seu ambiente, você pode olhar para Make (C / C ++), Ant / Maven (Java), Gradle (Groovy) - é com isso que estou familiarizado. As chances são altas, existe uma solução popular para o seu ambiente.


Sua um ambiente ASP.NET / SQL
billy.bob

@ m.edmondson - então cruisecontrol.sourceforge.net é provavelmente o seu caminho a percorrer
bobah

Outro bom ambiente de integração contínua para o ASP.NET é o TeamCity. Eu usei o CruiseControl e o TeamCity e achei o TeamCity um pouco mais fácil de usar e um pouco mais poderoso. Mas isso pode não ser mais o caso.
RationalGeek

NANT é a variante .NET ANT que usamos bem como um complemento ao Cruise Control, que eu não usaria para criar código para implantação em que você tende a desejar algumas coisas adicionais incluídas / aprimoradas / parâmetros definidas e alteradas e assim por diante . É nisso que a ANT / NANT é boa.
91111 Jon Hopkins

A segunda sugestão de Jon Hopkinds - nant é uma ótima combinação para o seu ambiente.
precisa saber é o seguinte


0

Claro que existe uma maneira de automatizar isso. Com ferramentas como Chef , a configuração de um novo servidor recém-instalado pode ser tão fácil quanto:

knife bootstrap ip.address -N aNameForTheServer -r "role[some functionality]"

No meu caso, algumas etapas executadas por esse único comando são:

  • Instale as bibliotecas, programas e módulos Python necessários
  • Crie novos usuários com privilégios de acesso especificados
  • Crie novos bancos de dados, carregue o esquema necessário, defina a propriedade e os direitos de acesso
  • Faça o download e prepare o código do projeto e depois escreva as informações de configuração
  • Coloque tudo no modo de produção iniciando servidores de banco de dados, configurando tarefas cron etc.

Não tenho certeza de como o Chef funcionará em seu ambiente, pois o suporte do Windows está listado como "preliminar", mas para o sistema baseado em UNIX, é o joelho da abelha.

O Puppet é um sistema semelhante que é um pouco mais antigo que o chef e pode oferecer melhor suporte ao Windows.


0

É simples com o Maven no mundo Java

mvn clean deploy

Em nossa configuração, isso faz toda a construção necessária do arquivo WAR (puxando as dependências JAR conforme necessário), a implantação no servidor da web dev e a criação de dados de teste enlatados no banco de dados dev. Uma vez instalado, o Maven lida com os testes funcionais abrangentes através do SeleniumRC para verificar se o aplicativo funciona.

Esse comando único faz com que o aplicativo seja totalmente implantado no cluster do servidor dev, para que esteja prontamente disponível para outros desenvolvedores trabalharem imediatamente (supondo que ele tenha passado nos testes). É incomum uma falha na implantação do desenvolvedor, pois os desenvolvedores verificaram que ela trabalha localmente mvn clean install.

O artefato de captura instantânea (WAR) é então copiado no repositório Maven para compartilhamento com outros desenvolvedores (conforme o deploycomportamento padrão do Maven ).

OK, mas você implantou apenas uma captura instantânea no dev, e quanto a teste e produção?

A distribuição para os servidores de teste e de produção (mais tarde) é realizada através do processo de liberação do Maven, que gostamos de manipular manualmente para garantir que alguém esteja atento a qualquer saída suspeita. Os testadores trabalham apenas com artefatos liberados, não instantâneos.

Depois de lançado, um script de construção simples é usado para enviar o arquivo WARTP para o cluster do servidor de teste por SFTP, novamente com alguém assistindo o processo para garantir que nada dê errado.

Finalmente, depois que todos os testadores ficam satisfeitos, o arquivo WAR inalterado é transferido por SFTP até o cluster de servidores de produção de failover, com alguém vigiando de perto e uma posição imediata de reversão em caso de desastre.


0

Achei que poderia checar esse teste do Joel ...

Eu criei um servidor de compilação em python automatizado usando pychron .

O código foi sincronizado com o VSS a partir da linha de comando, construído com borland make (a maioria dos IDEs cria arquivos make para você, mesmo que eles não os chamem assim. O Delphi costumava criar arquivos make e chamá-los de arquivos .BPG, agora eles ' re arquivos XML do MSBuild e você pode usar o MSBuild) e os erros foram colocados em um arquivo XML que eu continuava adicionando.

Então .. Basta escrever um arquivo em lotes e fazer essas coisas.

  1. Sincronizar código do controle de origem
  2. Exclua coisas estúpidas (arquivos de configuração individuais de projetos) que você sabe que o impedirão de construir tudo.
  3. Construa tudo (eu construiria tudo, faria todo irmão).
  4. Registre seus erros, avisos e outras coisas, mas não pare de construir. (Se você for realmente inteligente, extrairá o nome da última pessoa que fez check-in no arquivo que causou a quebra da compilação e enviou a ele um nastygram)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.