CruiseControl.NET executado como um serviço do Windows e como um processo independente se comporta de maneira diferente

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

Pergunta

Tenho um projeto que está sendo construído usando CruiseControl.NET.O projeto contém uma 'tarefa MSBuild' que executa a compilação do projeto e também os testes de unidade.O teste de unidade, por sua vez, é apenas uma tarefa 'exec' do MSBuild que executa um executável.

O teste de unidade envolve alguma comunicação remota do .NET.E quando os testes de unidade são executados através do prompt de comando do sistema, a janela do software é aberta, os testes são executados e o processo é encerrado.

Quando forço uma compilação por meio do painel da web, a compilação trava no ponto em que o teste de unidade começa a ser executado.A janela do software não abre, mas o executável está em execução.Se o processo for encerrado por meio do explorador de tarefas, a compilação será concluída com o status de 'Falha'.Isso acontece quando executo o ccnet como um serviço do Windows.

Se eu executar o CCNet diretamente (não como um serviço do Windows) e forçar uma compilação por meio do painel da web, a compilação e os testes de unidade passarão bem conforme o esperado.(com a janela do software abrindo.)

Parece que há um impasse no caso em que o CCNet é executado como um serviço do Windows.Suponho que esteja relacionado aos fluxos de saída/erro padrão.

  1. Este é um problema conhecido?

  2. Qual pode ser o problema que está acontecendo?

  3. Alguma sugestão sobre como depurar isso?

  4. Como posso contornar isso?

(Estou usando CCNet versão 1.4.4 SP1)

Foi útil?

Solução

Quando o CCNET estiver em execução como um serviço, ele não terá acesso à tela, portanto, não espere ver nada na tela nessa configuração. A primeira coisa que eu verificaria são as permissões - verifique se o serviço é executado como uma conta que tem permissões para acessar os recursos necessários. Você também possui arquivos de log CCNET, que pode encontrar via painel.

Em uma nota lateral, tente o TeamCity em vez do CCNET, seus 10 anos à frente.

Outras dicas

Talvez esta resposta ajude:O serviço Delphi Windows não pode baixar arquivos da Internet

Você deve saber que ao executar o CCNet como uma aplicação (o dosbox) ele utiliza as variáveis ​​de ambiente e todos os direitos da conta logada.Portanto, ele pode se conectar a um servidor, usar senhas em cache, obter variáveis ​​de registro para esta conta.

MAS quando executado como um serviço, a conta é aquela que você forneceu:LocalSystem por exemplo, onde env.variáveis ​​não são iguais.

Então, o que você pode fazer é alterar a conta do serviço CCNet para teste.Mude para sua conta de usuário (com senha) e tenho certeza que funcionará melhor!

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