Linux节点上Jenkins用户无法执行Fortify sourceanalyzer命令如何解决
问题核心成因
bash: sourceanalyzer: command not found的本质原因是,以US-KIRAN身份安装Fortify时,软件可执行文件的路径仅写入了US-KIRAN用户的专属环境配置,Jenkins对应的US-JENKINS用户没有关联该路径,部分场景下还会存在目录读取/执行权限的拦截。
分步配置操作
- 定位
sourceanalyzer的实际安装路径
切回US-KIRAN登录节点,执行which sourceanalyzer,拿到命令对应的完整bin目录绝对路径,比如常见的安装路径为/opt/Fortify/Fortify_SCA_and_Apps_19.2.0/bin,把这个路径完整记下来。 - 为US-JENKINS用户补充PATH环境配置
针对Linux下Jenkins非交互式shell加载环境的特性,选以下任意一种可靠方式配置即可,避免配置不生效的问题:- 系统用户级配置
切换到US-JENKINS用户,依次编辑用户目录下的.bashrc和.bash_profile文件,在两个文件的末尾都追加如下配置:
保存后执行export FORTIFY_HOME=/你查到的Fortify安装根目录(即bin目录的上一级) export PATH=$PATH:$FORTIFY_HOME/binsource ~/.bashrc和source ~/.bash_profile让配置即时生效。 - Jenkins任务级配置(更灵活,适配集群节点场景)
在对应扫描任务的配置页,安装启用「Environment Injector」插件,在构建步骤的环境变量配置块中,直接填入如下内容:
这种方式不需要改动系统用户的全局配置,也能避免节点shell启动模式差异导致的环境加载失效。PATH=$PATH:/你查到的Fortify bin目录绝对路径
- 系统用户级配置
- 调整目录访问权限
逐层检查Fortify安装路径上的每一级目录权限,必须保证US-JENKINS用户对每一级路径都有可进入(x)、可读(r)权限:- 如果Fortify安装在US-KIRAN的个人家目录下(比如
/home/US-KIRAN/fortify),默认家目录权限通常为700,会直接拦截其他用户的访问。 - 权限调整参考:执行
sudo chmod 755 /home/US-KIRAN /home/US-KIRAN/fortify,同时为bin目录下的sourceanalyzer可执行文件赋予执行权限:sudo chmod +x /home/US-KIRAN/fortify/bin/sourceanalyzer。
- 如果Fortify安装在US-KIRAN的个人家目录下(比如
配置生效验证
切换到US-JENKINS用户,执行sourceanalyzer --v,如果能正常输出对应Fortify版本信息,即代表配置完成。如果仍报错,优先核对PATH中的路径拼写是否正确、逐级目录权限是否满足要求。
内容的提问来源于stack exchange,提问作者Raghu Ram
相关产品推荐
相关产品推荐

