Eu tenho um script que descompacta um pacote MVC,minimiza todos os arquivos CSS e js e os compacta novamente. Funciona perfeitamente na minha máquina e no servidor CI como administrador ou conta TeamCity. Quando o TeamCity puxa e executa, o script fornece toda a saída esperada, não relata um erro, mas nunca descompacta o arquivo.
write-host "creating shell object"
$shell_app=new-object -com shell.application
write-host "creating zip file"
$zip_file = $shell_app.namespace("C:tempPokerLeagueWebSite.zip")
write-host "setting folder to unzip to"
$destination = $shell_app.namespace("C:tempzy98")
write-host "about to copy files from zip"
$destination.Copyhere($zip_file.items(), 0x4)
write-host "finished"
Aqui está o resultado do TeamCity:
[23:01:03]: Step 5/5: test ps1 file (Powershell)
[23:01:03]: [Step 5/5] Starting: C:Windowssystem32cmd.exe /c
C:WindowsSysWOW64WindowsPowerShellv1.0powershell.exe -NonInteractive -File
C:TeamCitybuildAgentwork71e78d4c543e0594Toolstest.ps1 && exit /b %ERRORLEVEL%
[23:01:03]: [Step 5/5] in directory: C:TeamCitybuildAgentwork71e78d4c543e0594
[23:01:03]: [Step 5/5] creating shell object
[23:01:03]: [Step 5/5] creating zip file
[23:01:03]: [Step 5/5] setting folder to unzip to
[23:01:03]: [Step 5/5] about to copy files from zip
[23:01:03]: [Step 5/5] finished
[23:01:03]: [Step 5/5] Process exited with code 0
[23:01:03]: Publishing internal artifacts
[23:01:03]: [Publishing internal artifacts] Sending build.finish.properties.gz file
[23:01:03]: Build finished
Se eu executar o comando exato no servidor da conta TeamCity, ele funcionará corretamente:
C:Windowssystem32cmd.exe /c C:WindowsSysWOW64WindowsPowerShellv1.0powershell.exe -NonInteractive -File C:TeamCitybuildAgentwork71e78d4c543e0594Toolstest.ps1 && exit /b %ERRORLEVEL%
Só posso pensar que é algo que o TeamCity está fazendo ou algo relacionado ao fato de estar funcionando como um serviço, mas estou perplexo e não consigo descobrir isso.
Respostas:
1 para resposta № 1Corri para esse mesmo problema ontem.Tem algo a ver com permissões, embora nenhum erro tenha sido registrado. Tenho uma máquina Windows Server para meu agente de compilação e a configurei para funcionar como um serviço do Windows. Mudei a configuração de Login para o serviço ser um usuário em vez da conta SYSTEM e tudo parecia bem até que eu tive o mesmo problema que você. Nunca encontrei uma maneira de consertar ao executar o agente como um serviço, então mudei para executar o agente a partir do arquivo /bin/agent.bat. Eu poderia obter praticamente a mesma configuração executando-o como uma tarefa agendada e na inicialização. Mas, no final das contas, mudar para não funcionar como um serviço do Windows resolveu o problema para mim.
3 para resposta № 2
Usei a resposta de "user1545905", mas precisei reiniciar manualmente o serviço do agente TeamCity após a reinicialização do servidor. Você pode fornecer ao usuário de serviço do agente TeamCity Controle total sobre o diretório.