Jenkins TCA 插件
支持在 Jenkins 中安装 TCA 插件,通过流水线触发代码分析。
安装指引
进入
Jenkins页面,访问系统管理 -> 插件管理 -> Advanced settings页面,将下载的 Jenkins TCA 插件安装包上传后部署。
使用指引
先在 TCA 上创建好
团队和项目(如果已有,可忽略),并接入代码仓库,可参考 快速开始。接入仓库后,进入代码库页面,并点击
插件配置,进入 TCA 插件配置弹框页,并选择Jenkins 流水线页签。
在
Jenkins 流水线页签选择需要使用的分析方案,如果没有,需要先创建,可参考分析方案。点击
生成 Jenkinsfile TCA 插件配置按钮,复制配置信息,然后按需配置到代码库下的 Jenkinsfile或流水线 Script中:代码库 Jenkinsfile 配置
进入代码仓库根目录下,将生成的配置内容复制到
Jenkinsfile中(如果不存在,需要先创建Jenkinsfile文件,点击了解更多),在流水线中选择Pipeline script from SCM,并设置脚本路径为Jenkinsfile。流水线 Script 配置
进入
Jenkins 流水线,选择Pipeline script,将生成的配置内容复制到脚本中,并在代码分析步骤前拉取待扫描代码库,可以使用git或checkout插件下载。
到此插件已配置完毕。如需调整参数配置,可参考如下:
pipeline { agent any stages { // 拉取代码示例 stage ('拉取代码') { steps { git 'https://github.com/xxx.git' } } stage ('代码分析') { steps { tca ( // 必填参数 scmType: 'git', // 代码库类型 repoUrl: 'http://xxx', // 代码库地址 orgSid: 'xxx', // 团队编号,从TCA官网获取 teamName: 'xxx', // 项目名称,从TCA官网获取 schemeID: xxx, // 分析方案ID,从TCA官网获取 token: 'xxx', // 个人凭证信息(个人敏感信息,请注意保密!) // 选填参数 domain: 'xxx', // TCA URL,用于API请求和报告链接生成,默认为https://tca.tencent.com scanDir: '', // 需要分析的相对目录,指定代码仓库下的子目录作为分析目录,适用于大仓场景只分析某个模块目录,默认不配置,为扫描代码仓库根目录。 revision: '', // 分析版本号,可通过环境变量'{SCM}_COMMIT'设置(SCM可选[GIT]),默认不配置,为当前工作空间的代码版本 sourceBranch: '', // 分支名称,可通过环境变量'{SCM}_BRANCH'设置(SCM可选[GIT]),默认不配置,为当前工作空间的代码分支;如拉取代码时未指定分支,则该选项为必填 targetBranch: '' // 需要对比的目标分支名称,适用于MR场景,可通过环境变量'{SCM}_TARGET_BRANCH'设置(SCM可选[GIT]),默认为空 total: false, // 是否全量扫描,默认为 false,即增量扫描 continueOnThresholdNoPass: false, // 门禁不通过也不阻塞后续步骤,不勾选,默认阻塞后续步骤 // 本地分析参数 localScan: true, // 开启本地分析,不勾选,默认为节点分析 clientWorkspace: '', // 客户端工作空间,用于本地分析,默认为'~/tca_client' preCmd: '', // 前置命令(需要前置操作时使用),默认为空 buildCmd: '', // 编译命令(分析编译型语言时使用),默认为空 exclude: '', // 需要过滤的目录或文件(相对路径),多个路径用英文逗号(,)分隔,路径格式遵循python fnmatch语法,默认为空 include: '' // 指定只分析的目录或文件(相对路径),多个路径用英文逗号(,)分隔,路径格式遵循python fnmatch语法,默认为空 ) } } } }提示
可以按需将
tca步骤提取出来写入Jenkins 流水线的任意阶段中!插件参数详解:
必填参数和
domain参数通过 TCA 插件配置页自动生成。revision和sourceBranch会通过本地 git 命令获取当前工作空间下代码库的版本和源分支,如果获取失败,需要用户自行配置,也可以通过环境变量设置。插件只会在执行失败或者门禁不通过的情况下阻塞流水线,设置
continueOnThresholdNoPass可以在门禁不通过的情况下也不阻塞流水线。localScan可开启本地分析,复用当前流水线执行环境,不再将任务发送到常驻节点;本地分析参数只有localScan=true才生效。本地分析需要下载客户端,可以配置
clientWorkspace为客户端目录,固定该目录可以复用客户端,不用每次耗时下载。preCmd和buildCmd只有在分析方案有配置编译型工具的情况下使用。本地分析默认超时时间为
2h,可通过环境变量TCA_LOCAL_TIMEOUT设置超时时间,单位为h。
本地结果文件:
插件默认在当前工作空间下生成结果文件
tca_report.json,也可通过TCA_RESULT_FILE环境变量配置文件路径,结果文件包含以下内容:status: success(成功)/failure(门禁不通过)/error(失败)
status_code: 0(成功)/255(门禁不通过)/1(失败)
text: 执行情况
description: 详细结果
url: 分析结果链接
scan_report: 详细报告
lintscan: 代码检查结果
duplicatescan: 代码重复率结果
cyclomaticcomplexityscan: 圈复杂度结果
clocscan: 代码统计结果
qualityscan: 门禁结果