托管GitLab CI/CD Runner的Windows服务器是否需安装Docker?
GitLab CI/CD添加代码覆盖率与安全扫描的Docker使用说明
核心逻辑
GitLab官方的安全扫描(SAST、Dependency Scanning等)和部分覆盖率工具,依赖预构建的Docker镜像——这些镜像已经打包好了适配.NET的扫描工具(比如dotnet-sast、SonarScanner),你不需要自己从零配置容器内容,只需要确保GitLab Runner能正常调用这些镜像。
具体操作步骤
1. 先在Windows服务器上安装Docker
这是基础前提:你的GitLab Runner所在的Windows服务器必须装好Docker Desktop(Windows版),并确保Docker服务处于运行状态,因为Runner需要拉取官方的扫描镜像来执行任务。
2. 配置GitLab Runner的执行器(关键)
如果你的Runner之前用的是shell执行器(直接在Windows服务器本地跑命令),需要改成docker或docker-windows执行器,或者新增一个使用Docker执行器的Runner:
- 配置完成后,Runner会自动从GitLab的容器仓库拉取官方提供的扫描镜像,完全不需要你手动下载或配置镜像内部的脚本、工具。
3. 在.gitlab-ci.yml中添加对应任务
代码覆盖率(适配.NET 6)
不需要额外Docker镜像,直接在现有测试任务里生成覆盖率报告,让GitLab自动解析:
test: stage: test script: - dotnet test --collect:"XPlat Code Coverage" artifacts: reports: cobertura: '**/coverage.cobertura.xml'
这个任务用shell或docker执行器都能跑,只要服务器上装了.NET 6 SDK就行。
安全扫描(以SAST为例)
直接套用GitLab官方模板,Runner会自动处理镜像拉取和扫描:
include: - template: Security/SAST.gitlab-ci.yml sast: variables: SAST_DEFAULT_ANALYZERS: "dotnet-sast" # 只启用.NET相关扫描器
流水线运行时,Runner会自动下载dotnet-sast镜像,在容器内完成代码扫描,再把结果上报给GitLab。
误区澄清
- 不用手动下载或配置扫描用的Docker容器:官方模板已经指定了镜像地址,Runner会自动完成拉取、运行、销毁的全流程。
- 如果坚持用
shell执行器,也可以手动安装扫描工具(比如SonarScanner CLI),但这种方式需要自己维护工具版本,远不如Docker方式省心,也不符合GitLab的最佳实践。
内容的提问来源于stack exchange,提问作者endurium
相关产品推荐
相关产品推荐

