我在Azure上运行的Windows Server 2016 Datacenter Edition VM中设置BuildBot worker。 这将使用Visual Studio C ++编译器构build我们的Windows产品。
我已经到了在pipe理桌面会话中安装和运行worker的地步。 它连接到我们的构build主服务器,似乎能够根据testing版本的结果访问所需的所有工具和服务。
我一直在努力让工人作为一项服务来运作。 这将使自动运行worker成为非特权用户成为可能。
除了…服务没有启动。 当我查看事件日志时,在“Windows日志→系统”中看到两个错误:
事件ID:7000
由于以下错误,BuildBot服务无法启动:服务没有及时响应启动或控制请求。
事件ID:7009
在等待BuildBot服务连接时达到了超时(30000毫秒)
BuildBot本身没有login“Windows日志→应用程序”的事件,并且在尝试启动时立即logging这些事件(并且服务报告为失败)。
目前,该服务设置为“本地系统”(我打算稍后限制权限)运行。 据我所知,“LocalSystem”应该可以访问所有本地资源,所以我不认为文件系统权限可能会导致这个问题。
有没有经常遇到这样的服务失败的原因?
还有我应该看的其他日志或诊断信息吗?
我可以采取哪些其他措施来确定导致此故障的原因?
编辑:即使使用此堆栈溢出答案中提供的简单testing服务,此问题是可重现的。
问题原来是未注册的DLL。 具体来说,pywin32提供的Python服务支持需要特定的DLL才能与win32 API交互。 安装pywin32时应该自动安装这些DLL:
pip install pypiwin32
正如在这个堆栈溢出答案中提到的,在这种情况下正确的修复是运行:
python C:\Python27\Scripts\pywin32_postinstall.py install
这解决了我的问题。