Build da aplicação para ambientes de homologação e produção

3 respostas
C

Fala pessoal, tudo certo?

atualmente na empresa onde trabalho, temos o ambiente de homologação e de produção,

no cvs temos 3 linhas de desenvolvimento, HEAD, o branch de Homologação e de Produção.

criamos assim pois temos arquivos de configuração diferentes para o ambiente de homologação e de produção.

e toda vez que vamos gerar uma versão temos que ficar comparando branchs… isso é ruim pois para dar um replace em um arquivo errado é fácil… alem do trabalho de gerar versão de homologação e depois gerar de produção.

nosso build é feito pelo maven…

gostaria de saber se tem alguma arquitetura diferente para isso ou algum modo de configurar apenas um branch, do modo que é só copiar para produção a mesma versão homologada…

como vocês usam em suas empresas?

valeu galera!

3 Respostas

D

Engraçado esse tópico.

Eu trabalhei por algum tempo em uma empresa que possui bem distintos os ambientes de homologação, testes e produção, devido à alta complexidade do negócio e do total de receita manipulado pelos diversos sistemas´.
Dentro de QA (testes) e homologação, haviam ambientes de 1º, 2º, 3º e estavam criando um 4º nível para testes (desde o código fonte até a aplicação rodando em ambiente semelhante ao de produção).
Além disso, havia ambientes distintos, servidores e VMs apenas para rodar os ambientes de QA e homolog.
Além disso, havia a divisão em serviços, web, banco de dados, webservices e CRM, divididos, mais uma vez, em projetos, manutenção de rotina e expansão.

Para cuidar disso tudo, 15 pessoas, sem contar os testers.
A estrutura era gigante, mas nenhum projeto ou sistema subia com erros.

O processo era o mesmo, pega na branch de desenvolvimento, joga em homolog, compila, faz build e deploy, joga no servidor ou ambiente e deixa para teste.

Testou, gera os pacotes, manda pra produção e produção apenas aplica e monitora.

Então, digo que dependendo da complexidade do negócio, sim, é preciso isso.
A não ser que seja apenas 2 programadores, aí não precisa de tudo isso.

A

Dá pra fazer isso com o Maven no mesmo branch.

No caso, você teria diferentes profiles para cada ambiente, e cada profile teria arquivos de configuração diferentes:

Ficaria algo do tipo:

<profiles>
		<profile>
			<id>producao</id>
			<build>
				<plugins>
					<plugin>
						<artifactId>maven-antrun-plugin</artifactId>
						<executions>
							<execution>
								<phase>test</phase>
								<goals>
									<goal>run</goal>
								</goals>
								<configuration>
									<tasks>
										<delete dir="${project.build.outputDirectory}/profiles" />
										<copy todir="${project.build.outputDirectory}" overwrite="true">
											<fileset
												dir="${project.build.sourceDirectory}/../resources/profiles/producao" />
										</copy>
									</tasks>
								</configuration>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<artifactId>maven-surefire-plugin</artifactId>
						<configuration>
							<skip>true</skip>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>

No caso, você poderia ter perfis diferentes para goals diferentes também.

Então, para compilar, você faria:

mvn clean install -Pproducao
L

opa, blz?

a configuração do profile fica no pom.xml da minha aplicação ou no setting.xml?

obrigado pela ajuda galera!

Criado 4 de novembro de 2011
Ultima resposta 26 de abr. de 2012
Respostas 3
Participantes 4