使用 Jenkins 和容器配置扫描自动化
HCL® AppScan® Source 命令行界面 (CLI) 容器可从 HCL Harbor 和 我的 HCLSoftware 门户网站 (MHS) 获得,可用于使用 Jenkins 自动执行静态分析扫描,而无需安装 AppScan® Source 的完整实例。
先决条件
- Jenkins 环境,其中包含一个或多个安装了 Podman 的 Linux 代理程序/主机。
这是旨在使用 CLI 容器运行静态分析扫描的系统。
-
AppScan® Source for Automation 的有效许可证和相关许可证服务器信息。
-
AppScan® Source CLI 容器映像
从 HCL Harbor 或 AppScan® Source 下载 我的 HCLSoftware 门户网站 CLI 容器映像。使用有效的许可证,您的 HCL 标识将授予对这些位置的访问权。
-
AppScan® Source CLI 脚本
在 Jenkins 管道中使用容器进行扫描时需要脚本。
-
从容器访问 Jenkins 主机/代理程序相关的内容:
要扫描的应用程序必须可以从运行扫描的 Jenkins 主机进行访问。
注: 卷映射(将容器主机上的路径映射到容器中的路径)在扫描实例化期间用于此目的。
准备要扫描的应用程序
paf/ppf文件- 文件夹扫描
paf/ppf 文件扫描的应用程序- 在安装了 HCL® AppScan® Source for Analysis 的 Linux 系统上使用 AppScan® Source 客户机生成
paf/ppf文件。确保
paf和ppf文件位于要扫描的应用程序的根目录。 - 确保可以从 Jenkins 主机/代理程序访问应用程序文件和
paf/ppf文件。例如,如果应用程序可从 Jenkins 主机/代理程序上的根路径
/usr/user1/SampleApp访问,则paf/ppf文件位于/usr/user1/SampleApp/SampleApp.paf和/usr/user1/SampleApp/SampleApp.ppf。 - 确定容器所看到的卷的名称。例如,将主机上的
/usr/user1映射到容器中的cvol。注: 在容器中运行 CLI 时指定了卷映射。 - 创建 CLI 脚本。例如,
SampleApp.script位于 /usr/user1/SampleApp。在本示例中,脚本指示容器使用cvol路径访问应用程序内容。列出的命令是与 AppScan® Source CLI 结合使用的命令(在没有手动干预的情况下扫描)。login … oa /cvol/SampleApp/SampleAll.ppf scan … logout
- 确保可以从 Jenkins 主机/代理程序访问应用程序文件。
例如,应用程序可从 Jenkins 主机/代理程序上的路径 /
usr/user1/SampleApp访问。 - 确定容器所看到的卷的名称。例如,将主机上的
/usr/user1映射到容器中的cvol。注: 在容器中运行 CLI 时指定了卷映射。 - 创建 CLI 脚本。例如,
SampleApp.script位于/usr/user1/SampleApp。login … of /cvol/SampleApp/SampleAll scan … logout
在 Jenkins 主机/代理程序上准备运行时环境
- 从 AppScan® Source 将 我的 HCLSoftware 门户网站 CLI 容器下载到 Jenkins 主机,或者直接从 HCL Harbor 访问。
如果已从 MHS 下载,使用
podman load命令装入 CLI 容器映像。 - 创建一个文件(例如
env.list),其中包含在扫描期间必须可供 CLI 容器使用的环境变量列表。一些必需的信息包括:
可在此处找到完整的参数列表。AS_INSTALL_MODE=standalone AS_LICENSE_URL=<license server url>
使用容器映像启动静态分析扫描
- 使用 HCL Harbor 中的容器映像
- 使用 我的 HCLSoftware 门户网站 中的容器映像
使用 HCL Harbor 中的容器映像启动扫描
- Linux将以下 shell 命令合并到 Jenkins 管道中以扫描 SampleApp。请注意,Jenkins 主机/代理程序上的
/usr/user1映射到容器中的cvol。根据所需的 CLI 容器版本调整版本字符串。sh "podman run --rm --volume /usr/user1:/cvol --env-file /cvol/SampleApp/ env.list hclcr.io/appscan/appscan-src-cli:10.10.0 script /cvol/SampleApp/SampleApp.script - Podman Jenkins 插件将以下 Podman Jenkins 插件 API 合并到 Jenkins 管道中以扫描 SampleApp。请注意,Jenkins 主机/代理程序上的
/usr/user1映射到容器中的cvol。根据所需的 CLI 容器版本调整版本字符串。podman.image('hclcr.io/appscan/appscan-src-cli:10.10.0').run('--name container-SampleApp --rm –-volume /usr/user1:/cvol --env-file /cvol/SampleApp/env.list script /cvol/SampleApp/SampleApp.script') sh "podman logs --follow container-SampleApp"
使用 我的 HCLSoftware 门户网站 中的容器映像启动扫描
tar.gz) 提供。必须先装入容器映像,然后才能使用它进行扫描。- 将容器映像下载到 Jenkins 主机/代理程序。例如,
/appscansrc/appscan-src-cli-10.10.0.tar.gz。必须先装入容器映像,然后才能使用。
- 使用 Linux shell 命令或 Podman Linux 插件运行扫描:
- Linux将以下 shell 命令合并到 Jenkins 管道中以扫描 SampleApp。请注意,Jenkins 主机/代理程序上的
/usr/user1映射到容器中的cvol。根据所需的 CLI 容器版本调整版本字符串。podman load -i /appscansrc/appscan-src-cli-10.10.0.tar.gz sh "podman run --rm --env-file /cvol/SampleApp/env.list --volume /usr/user1:/cvol appscansrc/appscan-src-cli:10.10.0 script /cvol/SampleApp/cli.script" - Podman Jenkins 插件将以下 Podman Jenkins 插件 API 合并到 Jenkins 管道中以扫描 SampleApp。请注意,Jenkins 主机/代理程序上的
/usr/user1映射到容器中的cvol。根据所需的 CLI 容器版本调整版本字符串。podman.image(‘appscan-src-cli:10.10.0').run('--name container-SampleApp --rm –-volume /usr/user1:/cvol --env-file /cvol/SampleApp/env.list script /cvol/SampleApp/SampleApp.script') sh "podman logs --follow container-SampleApp"
- Linux