如何解决无法通过gitlab-runner
这是我关于stackoverflow的第一个问题。希望你的眼睛不会因为我的英语而流血过多。 长话短说:我无法通过gitlab-runner停止我的自定义Windows服务。
我想在gitlab CI \ CD期间实现的目标是:
- 向我的服务发出停止工作的信号
- 定期检查此服务状态,以确定其是否停止
因此,为了方便起见,我在本地安装了壳gitlab-runner,而gitlab服务器看到了我的本地运行器。 我的Windows服务的名称具有以下格式:“ My.Service.Name ”。
gitlab-ci.yml 包含作业“ my_job_name ”,该脚本在脚本部分sc.exe queryex My.Service.Name
中带有以下命令(试图获取服务状态)。
命令执行给我错误[SC] EnumQueryServicesStatus:OpenService FAILED 1060: The specified service does not exist as an installed service
。
基本上,sc.exe stop My.Service.Name
也会失败,并显示错误[SC] OpenService FAILED 1060: The specified service does not exist as an installed service
。
我的服务是通过以下方式创建的:sc create My.Service.Name binPath= "path\to\exe\My.Service.Name.exe -service" DisplayName= My.Service.Name start= delayed-auto depend= MSMQ
。
sc.exe queryex My.Service.Name
个通话中的Local query result。
我已经被检查过了
- 我的服务存在并且在services.msc( My.Service.Name )中具有相同的服务和显示名称
- 服务名称不包含任何空格(如果缺少引号)
- 简单的命令
sc.exe queryex
(通过gitlab-runner)给我提供的并不是我可以在本地services.msc中看到的所有服务 - 替代命令也没有为我提供来自services.msc
Get-Service -ComputerName .
的所有服务(通过gitlab-runner) - 在本地执行的相同命令通过sc.exe
sc.exe queryex My.Service.Name
和 在PowerShellGet-Service | where {$_.name -like "*My.Service.Name*"} or Get-Service -ComputerName .
中获取服务
- 两个服务 gitlab-runner 和 My.Service.Name 都使用本地管理员帐户运行
- 本地运行
gitlab-runner.exe exec shell my_job_name
也给了我想要的结果,因此我可以查询服务信息甚至停止服务 - 基于类似的问题,我还检查了Windows RPC服务是否已启用并且当前正在运行
那么,为什么某些服务(包括我的服务)未在sc.exe和Get-Service的结果中列出(通过gitlab-runner)?我怀疑这里有一些许可问题。 任何帮助将不胜感激。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。