1.介绍
开源是您软件的重要组成部分。在一般的现代软件产品中,超过 80% 的源代码来自开源。每个组件都可能对您的客户产生级联的法律、安全和质量影响,使其成为正确管理的最重要的事情之一。
FOSSA 可帮助您管理开源组件。我们插入您的开发工作流程,以帮助您的团队自动跟踪、管理和修复您使用的开源问题:
1、遵守软件许可证并生成所需的归属文件
2、在整个 CI/CD 工作流程中实施使用和许可政策
3、监控和修复安全漏洞
4、主动标记代码质量问题和过时的组件
2.安装
https://github.com/fossas/fossa-cli/releases
3.使用
fossa 配置文件.fossa.yml是位于项目根目录的可选文件,可用于配置项目设置。
在要上传项目的根目录,创建.fossa.yaml
version: 3
server: https://app.fossa.com #设置 CLI 将向其发送请求的端点。
apiKey:xxxxx #设置访问 FOSSA API 和上传数据(例如)或检索有关项目的信息(例如)所需的FOSSA API 密钥。
project:
id: "register-server" #项目 ID 定义了 FOSSA API 将用于引用此项目的唯一 ID。
name: register-server #名称字段设置 FOSSA 仪表板中的项目可见名称。默认情况下,这将设置为项目的 ID。
team: KEVIN #您的 FOSSA 组织中与此项目相关联的团队名称。
paths:
exclude:
- ./.fossa.yml #路径过滤部分允许您指定哪些路径应该被扫描,哪些不应该被扫描。这些路
- ./build #径应该被列为它们从项目根目录的位置。
- ./Docs
- ./.git
- ./doc
- ./docs
- ./etc
- ./gitlab
- ./pkg/mod
.fossa.yaml参数配置参考:
https://github.com/fossas/fossa-cli/blob/master/docs/references/files/fossa-yml.md
Fossa-deps 文件是一个以fossa-deps.{yaml, yml, json}项目根目录命名的文件。它可用于提供手动和供应商依赖项,在这里我用到的是指定源码扫描。
vendored-dependencies:
- name: Django
path: vendor/Django
version: 3.4.16
演示go项目操作流程
set GO111MODULE=on
set GOPROXY=https://goproxy.io
GO111MODULE=on go mod init #生成go mod 文件
GO111MODULE=on go mod tidy #更新依赖
GO111MODULE=on go mod download #下载依赖
GO111MODULE=on fossa analyze --experimental-enable-binary-discovery #go执行上传命令
执行fossa上传命令
fossa analyze --experimental-enable-binary-discovery
注意事项:
1、必须build后扫描,python、shell除外
2、针对Go语言,须采用Go mod方式
3、大量ISSUE时,通常是图片、二进制、证书等文件类型,往往误报,避免耗时澄清,采用.fossa.yaml 过滤
4、少量ISSUE时,No License Found & Flagged Policy,研发在Comment中澄清如下信息,各系统负责人确认resolve,将开发提供的信息填充即可
License:
Homepage:
LicenseURL:
5、UNKOWN DEEPDENDICES的情况,目前除组件自身的build外,其余情况要单独分析和确认。其中发现Fossa的对于Python误报情况,举例说明:
6.出现No license found,请查看是否属于误报,如有误报,请标记Resolved
7.如果出现GPL,LGPL等协议,请标记在Resolved中