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

Jenkins Pipeline使用Bandit扫描Python代码漏洞构建失败排查

Jenkins集成Bandit扫描构建失败解决方案

1. 所需Jenkins插件安装

  • 核心依赖插件共2个,可选插件1个:
    • Pipeline:用于编排流水线执行逻辑
    • HTML Publisher Plugin:用于在Jenkins构建页直接展示Bandit输出的HTML报告
    • Workspace Cleanup Plugin(可选):每次构建前清理工作目录,避免旧缓存文件干扰扫描结果
  • 安装路径:进入Jenkins后台 -> 系统管理 -> 插件管理 -> 可选插件,搜索对应插件名称勾选后点击安装,安装完成重启Jenkins即可生效。

2. 仅扫描Python文件配置

不需要单独配置全局作业过滤规则,直接通过Bandit自带参数限定扫描后缀即可,同时避免非Python文件被误扫。执行扫描时添加--ext py参数,Bandit就会仅识别.py后缀的文件。

3. examples目录扫描命令修正

你当前使用的命令存在参数冲突:-r是递归扫描目录的参数,后面直接跟目录路径即可,不需要额外加*.py通配符,否则会导致递归逻辑失效,漏扫子目录下的Python文件。正确执行命令如下:

bandit -r examples/ --ext py -f html -o report.html

如果需要排除examples目录下不需要扫描的子路径,可以追加--exclude examples/skip_path/参数指定排除规则。
扫描命令执行完成后,配置HTML Publisher插件步骤,将工作目录下的report.html作为报告归档,后续构建完成就可以直接在Jenkins作业页面查看扫描结果。

4. Jenkins环境下Bandit安装方案

Linux2默认搭载的Python2.7环境经常因为PATH变量不一致、全局权限限制,导致Jenkins执行Shell时调用pip失败、或者安装完成后找不到bandit命令。不要直接使用系统全局pip安装,通过虚拟环境做隔离是最稳定的方案,可直接复用以下Pipeline脚本:

pipeline {
    agent any
    environment {
        // 提前在执行机执行which python2.7获取绝对路径替换此处
        PY2_PATH = "/usr/bin/python2.7"
    }
    stages {
        stage('环境准备') {
            steps {
                sh '''
                # 安装virtualenv,提前给Jenkins用户配置对应sudo权限即可
                sudo $PY2_PATH -m pip install virtualenv
                # 创建独立虚拟环境,所有依赖都装在工作空间内,不影响系统全局
                $PY2_PATH -m virtualenv venv
                # 激活虚拟环境
                source venv/bin/activate
                # 注意:Python2.7仅兼容1.7.4及以下版本的Bandit,高版本会报语法错误
                pip install bandit==1.7.4
                '''
            }
        }
        stage('执行安全扫描') {
            steps {
                sh '''
                source venv/bin/activate
                bandit -r examples/ --ext py -f html -o report.html
                '''
            }
        }
        stage('发布扫描报告') {
            steps {
                publishHTML(target: [
                    allowMissing: false,
                    alwaysLinkToLastBuild: true,
                    keepAll: true,
                    reportDir: '.',
                    reportFiles: 'report.html',
                    reportName: 'Bandit代码安全扫描报告'
                ])
            }
        }
    }
}

常见踩坑说明

  • 安装Bandit必须指定1.7.4版本,高于该版本的Bandit已放弃Python2.7支持,安装后执行会直接报语法错误
  • 所有执行bandit、pip的步骤都要先激活虚拟环境,否则会调用到系统全局命令,复现之前的pip不可用、找不到命令的问题
  • 如果pip下载速度慢,可以在pip install命令后加-i参数指定国内pypi镜像源提速
  • 如果提示权限不足,不要给pip加--user参数,这类问题基本是因为没有激活虚拟环境,误调用了全局pip导致的

内容的提问来源于stack exchange,提问作者Pushpa Kola

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:09:21