You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab CI/CD流水线中Dependency Scanning未触发问题排查

问题:GitLab CI/CD流水线中Dependency Scanning阶段未显示

我是GitLab新手,正在尝试搭建一个示例CI/CD流水线,配置代码如下:

variables:
    REPO_NAME: devsecopscollab/my_test_repo
    IMAGE_TAG: demo-app-1.0

include:
    - template: SAST.gitlab-ci.yml
    - template: Dependency-Scanning.gitlab-ci.yml

stages:
    - Test
    - Build
    - Deploy

job1_runTests:
    stage: Test
    image: python:3.10.8
    before_script:
        - apt-get update && apt-get install make
    script:
        - make test

sast:
    stage: Test
    artifacts:
        name: sast
        paths:
            - gl-sast-report.json
        reports:
            sast: gl-sast-report.json
        when: always

dependency_scanning:
    stage: Test
    variables:
        CI_DEBUG_TRACE: "true"
    artifacts:
        name: dependency_scanning
        paths:
            - gl-dependency-scanning-report.json
        reports:
            dependency_scanning: gl-dependency-scanning-report.json
        when: always

job2_buildImage:
    stage: Build
    image: docker:20.10.21
    services:
        - docker:20.10.21-dind
    variables:
        DOCKER_TLS_CERTDIR: "/certs"
    before_script:
        - docker login -u $DOCKERHUB_USER -p $DOCKERHUB_PASS
    script:
        - docker build -t $REPO_NAME:$IMAGE_TAG .
        - docker push $REPO_NAME:$IMAGE_TAG

job3_deploy:
    stage: Deploy
    before_script:
        - chmod 400 $SSH_KEY 
    script:
        - ssh -o StrictHostKeyChecking=no -i $SSH_KEY ubuntu@$PUBLIC_IP "
            docker login -u $DOCKERHUB_USER -p $DOCKERHUB_PASS &&
            docker ps -aq | xargs --no-run-if-empty docker stop | xargs --no-run-if-empty docker rm &&
            docker run -d -p 5000:5000 $REPO_NAME:$IMAGE_TAG"

但我的流水线未显示Dependency Scanning阶段,请问该流水线配置是否存在问题?为何Dependency Scanning阶段不可见?我期望流水线中能显示依赖扫描阶段。


原因分析与解决方案

1. 自定义任务覆盖模板默认配置

你手动定义了dependency_scanning任务,而GitLab官方的Dependency-Scanning.gitlab-ci.yml模板本身已经包含该任务的完整默认配置。手动同名任务会覆盖模板配置,但如果自定义配置缺失关键触发逻辑(比如自动检测项目类型的规则),就会导致扫描任务无法正常触发,流水线中自然看不到该阶段。

2. 依赖清单文件缺失

Dependency Scanning需要依据项目的依赖清单文件(比如Python项目的requirements.txt、pyproject.toml)才能启动扫描。如果仓库根目录没有这类文件,GitLab会自动跳过该任务,不会在流水线中显示。

3. 修复步骤

  • 删除自定义的dependency_scanning任务块:保留include中的模板引用即可,模板会根据你的项目类型自动配置并触发扫描任务,无需手动覆盖。
  • 确认仓库存在依赖清单文件:针对你的Python项目,确保根目录下有requirements.txt或pyproject.toml等依赖声明文件。
  • 检查基础配置:确认GitLab版本在11.9以上(支持Dependency Scanning),项目已启用CI/CD功能,且运行流水线的账号有足够权限。
  • 查看流水线日志:如果问题依旧,查看流水线的完整日志,确认是否有任务被跳过的提示信息,定位具体原因。

内容的提问来源于stack exchange,提问作者DevSecOps Collab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 11:40:40