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

HCL Harbor 和 HCL FlexNet Operations 入口網站 (FNO) 顯示的 HCL®AppScan® 來源 指令行介面 (CLI) 儲存器可搭配 Jenkins 自動化靜態分析掃描,無須安裝 AppScan® 來源 的完整執行個體。

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

必備項目

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

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

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

  • AppScan® 來源 CLI 儲存器映像檔

    HCL HarborHCL FNO 下載 AppScan® 來源 CLI 儲存器映像檔。取得有效的授權後,您的 HCL ID 會將存取權授與這些位置。

  • AppScan® 來源 CLI script

    在 Jenkins 管線中使用儲存器進行掃描時,需要 Script。

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

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

    註: 在掃描實例化期間,磁區對映(儲存器主機上的路徑對映到儲存器中的路徑)會用於此用途。

準備要掃描的應用程式

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

    請確定 pafppf 檔案位於要掃描的應用程式根目錄。

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

    例如,如果應用程式可在 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® 來源 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® 來源 CLI 儲存器下載至 Jenkins 主機,或直接從 HCL Harbor 存取。

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

  2. 建立包含環境變數清單的檔案(例如 env.list),這些環境變數必須在掃描期間可供 CLI 儲存器使用。部分的必要資訊包括:
    AS_INSTALL_MODE=standalone
    AS_LICENSE_TYPE=CLS
    AS_LICENSE_SERVER_ID=<specify the license server ID>
    您可以在這裡找到完整的參數清單。

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

使用下列兩種方式的其中一種來啟動掃描:
  • 使用來自 HCL Harbor 的儲存器映像檔
  • 使用 FlexNet Operations (FNO) 中的儲存器映像檔

使用來自 HCL Harbor 的儲存器映像檔來啟動掃描

使用 Linux Shell 指令或 Docker Linux 外掛程式來執行掃描:
  • Linux
    將下列 Shell 指令併入 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 FNO 的儲存器映像檔來啟動掃描

AppScan® 來源 CLI 儲存器映像檔可在 HCL FNO 中取得,採用封存格式 (tar.gz)。必須先載入儲存器映射檔,再使用掃描。
  1. 將儲存器映射檔下載至 Jenkins 主機/代理程式。例如 /appscansrc/appscan-src-cli-10.1.0.tar.gz

    在使用前必須先載入儲存器映射檔。

  2. 使用 Linux Shell 指令或 Docker Linux 外掛程式來執行掃描:
    • Linux
      將下列 Shell 指令併入 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"