如何在GitLab Windows Runner上禁用杀毒软件(Windows Defender)?
解决GitLab Windows Runner中PyInstaller误报杀毒拦截问题
方法一:CI脚本内临时禁用Windows Defender实时防护
直接在.gitlab-ci.yml的构建步骤中添加PowerShell命令,临时关闭实时监控:
# 关闭Windows Defender实时防护 Set-MpPreference -DisableRealtimeMonitoring $true # 可选:验证防护状态 Get-MpPreference | Select-Object DisableRealtimeMonitoring
注意:该操作需要Runner具备管理员权限,需确保Runner配置允许以管理员身份执行任务。
方法二:修改GitLab Runner配置实现永久禁用(单Runner生效)
如果需要针对该Runner永久关闭防护,可修改Runner的配置文件:
- 定位到Runner配置文件,默认路径为
C:\GitLab-Runner\config.toml - 在
[[runners]]区块下调整shell配置,让脚本以管理员身份运行:
[[runners]] name = "你的Windows Runner名称" url = "你的GitLab实例地址" token = "你的Runner令牌" executor = "shell" shell = "powershell -ExecutionPolicy Bypass -NoProfile -Verb RunAs"
- 重启GitLab Runner服务使配置生效:
Restart-Service gitlab-runner
之后在CI脚本中执行禁用命令即可长期生效(仅针对该Runner)。
方法三:通过CI变量控制防护开关
在项目的CI/CD变量中添加DEFENDER_DISABLE=true,然后在脚本中判断执行关闭操作:
stages: - build build: stage: build tags: - windows script: - if ($env:DEFENDER_DISABLE -eq "true") { Set-MpPreference -DisableRealtimeMonitoring $true } # 执行你的PyInstaller构建命令 - pyinstaller your-script.py
注意事项
- 临时禁用仅在当前Job执行周期内有效,弹性Runner在Job结束后会重置环境
- 共享Runner通常无法修改全局配置,优先选择脚本内临时禁用的方式
- 执行命令前确认Runner权限足够,否则会出现权限不足的报错
内容的提问来源于stack exchange,提问作者bers
相关产品推荐
相关产品推荐

