GitLab 15.0.1中SAST作业未在流水线显示,如何排查解决?
解决GitLab 15.0.1自托管SAST作业不显示的问题
1. 修正.gitlab-ci.yml配置
自托管GitLab不会自动生成SAST作业,必须在项目CI配置中明确引入SAST模板:
include: - template: Security/SAST.gitlab-ci.yml # 若自定义了流水线阶段,必须包含SAST默认依赖的test阶段 stages: - build - test # 缺失此阶段会导致SAST作业被跳过 - deploy
如果项目使用特定编程语言,也可引入对应语言的SAST子模板(如Security/SAST/bandit.gitlab-ci.yml用于Python),通用模板已覆盖大部分主流开发语言。
2. 验证SAST启用状态
- 实例级:管理员账号进入
Admin Area > Settings > CI/CD > Security and Compliance,确认Static Application Security Testing (SAST)已勾选。 - 项目级:进入项目
Settings > Security and Compliance > Configuration(CE版本)或Settings > CI/CD > Security scanners(EE版本),确保SAST开关已开启。若找不到对应选项,检查GitLab版本是否为支持SAST的CE/EE版本(15.0 CE已包含基础SAST功能)。
3. 排查Runner与镜像拉取问题
你的自托管Runner使用Docker执行器,需确认:
- Runner所在虚拟机可访问
registry.gitlab.com(SAST镜像仓库),离线环境需提前拉取SAST镜像到本地并配置Runner使用本地镜像源。 - 查看Runner日志(通常在
/var/log/gitlab-runner/目录),确认无镜像拉取失败、容器创建权限不足等报错。 - 若Runner配置了特定标签,需在CI配置中给SAST作业添加对应标签,或修改Runner为无标签运行模式。
4. 检查流水线作业状态
进入项目CI/CD > Pipelines,点击对应流水线ID查看所有作业:
- 若SAST作业显示为
skipped,说明GitLab未检测到可扫描代码(如空项目、无对应语言代码文件),添加测试代码(如Python的.py、Java的.java文件)后重新运行流水线。 - 若完全无SAST作业,说明CI模板未正确引入或实例级SAST未启用。
5. 确认版本兼容性
GitLab 15.0.1的SAST模块可能存在已知bug,可查看对应版本的官方说明文档,若问题持续,建议升级到15.0.x系列的最新补丁版本。
内容的提问来源于stack exchange,提问作者E. Wex
相关产品推荐
相关产品推荐

