使用 Jenkins 和儲存器配置掃描自動化

可從 HCL Harbor 和 HCL Software License Management Portal 取得的 HCL® AppScan® Source 指令行介面 (CLI) 儲存器,可在以 Jenkins 將靜態分析掃描自動化時使用,無須安裝完整的 AppScan® Source 實例。

使用儲存器掃描的主要步驟如下:
  1. 準備應用程式
  2. 準備執行時期環境
  3. 從儲存器影像啟動掃描

必要條件

開始前,請確定您的環境符合以下要求:
  • Jenkins 環境,包括另一個已安裝 Docker 的 Linux 代理程式/主機。

    這是要使用 CLI 儲存器執行靜態分析掃描的目標系統。

  • AppScan® Source for Automation 的有效授權和相關授權伺服器資訊。

  • AppScan® Source CLI 儲存器影像

    HCL HarborHCL 軟體授權管理入口網站 下載 AppScan® Source CLI 儲存器影像。擁有有效授權後,您的 HCL ID 可授予這些位置的存取權。

  • AppScan® Source CLI Script

    使用 Jenkins 管道中的儲存器掃描需有 Script。

  • 從儲存器存取 Jenkins 主機/代理程式上的內容:

    要掃描的應用程式必須可從執行掃描的 Jenkins 主機存取。

    註: 在掃描實例化過程中,系統會將磁區對映(將儲存器主機上的路徑對映到儲存器中的路徑)用於此目的。

準備要掃描的應用程式

使用以下任一項目準備要掃描的應用程式:
  • paf/ppf 檔案
  • 資料夾掃描
使用 paf/ppf 檔案準備要掃描的應用程式
  1. 在已安裝 HCL® AppScan® Source for Analysis 的 Linux 系統上,使用 AppScan® Source 用戶端產生 paf/ppf 檔案。

    確保 pafppf 檔案位於所要掃描之應用程式的根目錄下。

  2. 確保應用程式檔案和 paf/ppf 檔案可從 Jenkins 主機/代理程式存取。

    例如,如果可在 Jenkins 主機/代理程式上的根路徑 /usr/user1/SampleApp 存取應用程式,則 paf/ppf 檔案會位於 /usr/user1/SampleApp/SampleApp.paf/usr/user1/SampleApp/SampleApp.ppf

  3. 確定儲存器所看到的磁區名稱。
    例如,將主機上的 /usr/user1 對映至儲存器中的 cvol
    註: 磁區對映是在儲存器中執行 CLI 時所指定的。
  4. 建立 CLI Script。例如,/usr/user1/SampleApp 中的 SampleApp.script
    就此範例而言,Script 會告訴儲存器使用 cvol 路徑存取應用程式內容。所列出的指令是與 AppScan® Source CLI 一起使用的指令(不需手動介入的掃描)。
    login …
    oa /cvol/SampleApp/SampleAll.ppf
    scan
    …
    logout
準備應用程式以進行資料夾掃描:
  1. 確保應用程式檔案可從 Jenkins 主機/代理程式存取。

    例如,應用程式可從 Jenkins 主機/代理程式上的路徑 /usr/user1/SampleApp 存取。

  2. 確定儲存器所看到的磁區名稱。
    例如,將主機上的 /usr/user1 對映至儲存器中的 cvol
    註: 磁區對映是在儲存器中執行 CLI 時所指定的。
  3. 建立 CLI Script。例如,/usr/user1/SampleApp 中的 SampleApp.script
    login …
    oa /cvol/SampleApp/SampleAll.ppf
    scan
    …
    logout

在 Jenkins 主機/代理程式上準備執行時期環境

若要準備 Jenkins 主機/代理程式上的執行時期環境
  1. HCL FNOAppScan® Source CLI 儲存器下載至 Jenkins 主機,或直接從 HCL Harbor 存取。

    如果是從 HCL FNO 下載,請使用 docker load 指令載入 CLI 儲存器影像。

  2. 建立包含掃描期間必須提供給 CLI 儲存器之環境變數清單的檔案(例如 env.list)。一些必要資訊包括:
    AS_INSTALL_MODE=standalone
    AS_LICENSE_TYPE=CLS
    AS_LICENSE_SERVER_ID=<specify the license server ID>
    完整的參數清單可在此處找到。

使用儲存器影像啟動靜態分析掃描

請以兩種方式的其中一種啟動掃描:

使用 HCL Harbor 的儲存器影像啟動掃描

使用 Linux 殼層指令或 Docker Linux 外掛程式執行掃描:
  • Linux
    將下列殼層指令整合至 Jenkins 管道中,以掃描 SampleApp。請注意,Jenkins 主機/代理程式上的 /usr/user1 會對映至儲存器中的 cvol。根據所需的 CLI 儲存器版本調整版本字串。
    sh "docker run --rm --volume /usr/user1:/cvol --env-file /cvol/SampleApp/ env.list hclcr.io/appscan/appscan-src-cli:10.1.0 script /cvol/SampleApp/SampleApp.script
  • Docker Jenkins 外掛程式
    將下列 Docker Jenkins 外掛程式 API 整合至 Jenkins 管道,以掃描 SampleApp。請注意,Jenkins 主機/代理程式上的 /usr/user1 會對映至儲存器中的 cvol。根據所需的 CLI 儲存器版本調整版本字串。
    docker.image('hclcr.io/appscan/appscan-src-cli:10.1.0').run('--name container-SampleApp --rm –-volume /usr/user1:/cvol --env-file /cvol/SampleApp/env.list script /cvol/SampleApp/SampleApp.script')
    
    sh "docker logs --follow container-SampleApp"

使用 HCL 軟體授權管理入口網站 的儲存器影像啟動掃描

AppScan® Source CLI 儲存器影像可以在 HCL 軟體授權管理入口網站 中以封存庫格式 (tar.gz) 取得。用於掃描前必須先載入儲存器影像。
  1. 下載儲存器影像至 Jenkins 主機/代理程式。例如 /appscansrc/appscan-src-cli-10.1.0.tar.gz

    使用前必須先載入儲存器影像。

  2. 使用 Linux 殼層指令或 Docker Linux 外掛程式執行掃描:
    • Linux
      將下列殼層指令整合至 Jenkins 管道中,以掃描 SampleApp。請注意,Jenkins 主機/代理程式上的 /usr/user1 會對映至儲存器中的 cvol。根據所需的 CLI 儲存器版本調整版本字串。
      docker load -i /appscansrc/appscan-src-cli-10.1.0.tar.gz
      
      sh "docker run --rm --env-file /cvol/SampleApp/env.list --volume /usr/user1:/cvol appscansrc/appscan-src-cli:10.1.0 script /cvol/SampleApp/cli.script"
    • Docker Jenkins 外掛程式
      將下列 Docker Jenkins 外掛程式 API 整合至 Jenkins 管道,以掃描 SampleApp。請注意,Jenkins 主機/代理程式上的 /usr/user1 會對映至儲存器中的 cvol。根據所需的 CLI 儲存器版本調整版本字串。
      docker.image(‘appscan-src-cli:10.1.0').run('--name container-SampleApp --rm –-volume /usr/user1:/cvol --env-file /cvol/SampleApp/env.list script /cvol/SampleApp/SampleApp.script')
      
      sh "docker logs --follow container-SampleApp"