
# 通过流水线自动完成CodeArts制品产物二进制成分分析
#### 应用场景
随着软件功能的不断扩大，软件面临的安全风险也在增加，如何快速精准地识别软件安全风险成了一大难题。
- 传统方式需要用户打包后再手动上传软件包进行扫描，然后查看扫描结果获取软件漏洞信息，过程繁琐。
- 不同的软件漏洞风险影响不同，需手动识别。
 
通过搭建流水线，可实现从代码仓到获取软件漏洞结果的整个流程，同时可以通过配置不同的准出条件，对软件漏洞实现分级管理。
#### 方案优势
- 搭建简单，无需重复配置 只需在搭建流水线时配置一次，即可重复实现完成修改代码、构建出包、漏洞扫描的完整流程。
  
- 漏洞风险分级治理 支持配置准出条件，实现对不同风险等级软件漏洞的分级管理并对扫描结果进行拦截。
  
 
#### 约束限制
流水线可配置定时任务或外部触发执行，为避免不必要的扫描次数浪费，使用插件需要购买二进制成分分析包周期版本，暂时不支持购买按需套餐包的用户使用插件。
#### 操作流程
本文介绍如何通过流水线完成代码修改、构建出包、漏洞扫描的全过程，基本操作流程如下：
[步骤1：新建规则和策略]
[步骤2：新建Scrum项目]
[步骤3：新建代码仓库]
[步骤4：新建编译构建任务]
[步骤5：新建流水线]
[步骤6：查看插件执行结果]
 #### 步骤1：新建规则和策略
1. 登录[华为云控制台](https://console.huaweicloud.com/console/#/home)。
2. 单击![](https://support.huaweicloud.com/bestpractice-devsecurity/zh-cn_image_0000002505757442.png)，选择区域。
3. 单击左上角服务列表。
4. 搜索"流水线"。
5. 单击"流水线 CodeArts Pipeline"，进入流水线服务首页。
6. 单击右上角头像图标，在下拉菜单中选择"租户设置"，进入租户设置页面。
7. 单击左侧导航"策略管理 \> 规则"，进入规则管理页面。
8. 单击"新建规则"，进入"新建规则"页面，配置以下信息。 
   表1配置规则信息 
   | **参数项** | **说明**                                                    |
   |:---|:---|
   | 名称      | 规则名称，使用自动生成的即可。                                           |
   | 类型      | 规则类型，选择"测试"。                                              |
   | 选择插件    | 规则绑定的插件名称，选择"开源治理-二进制成分分析"。                               |
   | 插件版本    | 规则绑定的插件版本，例如选择"1.0.0"。                                    |
   | 阈值配置    | 配置检查项阈值，例如[图1]所示。 |
      
   图1新建规则   
   ![](https://support.huaweicloud.com/bestpractice-devsecurity/zh-cn_image_0000002537557193.png "点击放大")
   
   
9. 单击"确定"，完成规则创建。
10. 单击左侧导航"策略"，进入策略管理页面。
11. 单击"新建策略"，进入"新建策略"页面，输入策略名称，勾选新建好的规则。
12. 单击"确定"，完成策略创建。
 
 #### 步骤2：新建Scrum项目
1. 单击顶部导航栏"首页"。
2. 如果还没有项目，选择"Scrum"项目模板，单击"选用"，进入新建项目页。 
   如果已有项目，单击"新建 \> 新建项目"，选择"Scrum"项目，单击"选用"，进入新建项目页。
   
   
3. 项目名称填写"Scrum01"，其他保持默认即可。
4. 单击"确定"后，进入到"Scrum01"项目下。
 
 #### 步骤3：新建代码仓库
1. 在页面导航栏选择"代码 \> 代码托管"，进入代码托管页面。
2. 单击"新建仓库"，选择"按模板新建"。
3. 单击"下一步"，选择"Java Maven Demo"模板。
4. 单击"下一步"，填写仓库名称。
5. 单击"确定"，完成代码仓库的创建。
 
 #### 步骤4：新建编译构建任务
1. 在页面导航栏选择"持续交付 \> 编译构建"，进入编译构建页面。
2. 单击"新建任务"，根据需要配置任务信息。 
   1. 配置基本信息：填写任务名称，选择Repo代码源，选择[已创建的代码仓库]，选择默认分支master，单击"下一步"。
   
   2. 选择构建模板：选择Maven系统模板，单击"确定"，进入"构建步骤"页面，使用默认配置即可。
   
   
   
   
3. 单击"保存"，完成构建任务的创建。
 
 #### 步骤5：新建流水线
1. 在页面导航栏选择"持续交付 \> 流水线"，进入流水线页面。
2. 单击"新建流水线"，根据需要配置流水线信息。 
   1. 基本信息：配置以下信息，单击"下一步"。
      表2流水线基本信息 
      | 配置项  | 配置建议                                                    |
      |:---|:---|
      | 名称   | 流水线名称，使用默认生成的即可。                                        |
      | 代码源  | 选择"Repo"。                                               |
      | 代码仓  | 选择[已创建的代码仓库]。 |
      | 默认分支 | 选择"master"分支。                                           |
         
      
   
   2. 选择模板：选择"空模板"，单击"确定"。
   
   
   
   
3. 进入"任务编排"页面，系统默认生成两个阶段（"流水线源"和"阶段_1"），单击"新建阶段"新增一个阶段"二进制成分分析"。 
   1. 配置构建阶段
      1. 单击"阶段_1"的"新建任务"，弹出"新建任务"侧滑框。
      
      2. 单击"构建"分类，找到"Build构建"插件。
      
      3. 将鼠标移动到插件，单击"添加"，选择[已创建的构建任务]，选择构建任务关联的仓库，产物标识输入"javaSample"。
      
      4. 单击"任务配置"，将任务ID设置为"build"。
      
      5. 单击"确定"，完成任务配置。
       
   
   2. 配置二进制成分分析阶段
      1. 单击"二进制成分分析"阶段的"新建任务 "，选择"从空任务新建"，弹出侧滑框。
      
      2. 单击"通用"分类，找到"下载制品产物"插件。
      
      3. 将鼠标移动到插件，单击"添加"，产物链接输入"${{jobs.build.artifacts.javaSample}}"。
         - "build"为构建阶段中设置的任务ID。
         
         - "javaSample"为构建阶段中"Build构建"插件中设置的产物标识。
          
      
      4. 单击"添加步骤"，在"测试"分类找到"开源治理-二进制成分分析"插件，使用默认配置。
      
      5. 单击"确定"，完成任务配置。
      
      6. 单击"二进制成分分析"阶段的"准出条件"，在弹出的侧滑框里添加准出条件，将鼠标移动到"标准策略准出条件"上，单击"添加"，并选择[已创建好的策略]。
      
      7. 单击"确定"，完成准出条件配置。
       
   
   
   
   
4. 任务编排完成后，单击"保存并执行 "，开始执行流水线。
 
 #### 步骤6：查看插件执行结果
1. 流水线执行完成后，进入详情页面。
2. 单击"二进制成分分析"阶段的"下载制品产物"任务，弹出侧滑框。
3. 在侧滑框的"任务日志"页面，单击"详情"，页面跳转到开源治理服务对应构建包的扫描详情页面，即可查看扫描结果。
4. 在侧滑框的"任务结果"页面，单击"二进制软件成分分析"可以直接查看部分扫描结果。
5. 单击准出条件，可查看扫描结果是否满足设置的规则，从而控制流水线执行。 
   - 当扫描结果满足条件时，流水线继续执行。
   
   - 当扫描结果不满足条件，流水线停止执行。
   
   
   
   
 
