
Cruise Control.Net e projetos C/C++
Agosto 13, 2007
Nos últimos meses, tenho utilizado bastante o Cruise Control para automatizar a compilação dos projetos existentes na empresa onde eu trabalho. Enquanto estava só compilando projetos .Net tudo estava lindo e
maravilhoso, mas quando comecei a ter que integrar a compilação de projetos C/C++ a coisa ficou feia.
Como os scripts nant que compilam esses projetos, utilizam as variáveis de ambiente do Visual Studio,
definidas no arquivo “vcvarsall.bat”. Quando a compilação era disparada de dentro do Cruise Control.Net ocorriam erros,
devido não ser possível encontrar as bentidas variáveis de ambiente.
O problema é que eu não consegui achar um meio de fazer com que o serviço do Cruise Control tivesse acesso as variáveis de ambientes
definidas pelo arquivo batch do Visual Studio.
O jeito foi seguir o aconselhado no site do Cruise Control.Net e seguir a vida. Até que esta semana conversando com o Wanderley, ele deu a idéia de utilizar o Prog2Svc feito pelo Fernando para fazer com que o serviço do Cruise Control tivesse acesso as variáveis de ambiente.
Dessa forma o arquivo batch que inicializa o serviço do Cruise Control ficou dessa maneira:
call "C:\\Program Files\\Microsoft Visual Studio 8\\VC\\vcvarsall.bat" x86 cd "C:\\Program Files\\CruiseControl.NET\\server" "C:\\Program Files\\CruiseControl.NET\\server\\CCNET.exe" -remoting:on
E a linha de comando para fazer com que o Prog2Svc registre o arquivo batch como serviço foi o seguinte:
c:\\windows\\system32\\Prog2Svc.exe -add C:\\windows\\system32\\CCNetServer.Bat
O único problema é que foi necessário alterar o usuário que roda o serviço criado pelo Prog2Svc de SYSTEM
para um usuário local da máquina de compilação, por ocorrer um problema de compilação nos projetos C/C++ “Program Database Mismatch”
que é descrito aqui.