Docker教程:如何将Helix QAC创建为一个容器并运行? 您所在的位置:网站首页 docker怎么使用自己创建的镜像作为基础镜像工具 Docker教程:如何将Helix QAC创建为一个容器并运行?

Docker教程:如何将Helix QAC创建为一个容器并运行?

2023-04-24 12:09| 来源: 网络整理| 查看: 265

但是,在本教程中,我将只演示如何使用一些重要的组件来构建特定的Docker镜像,我们将在Docker容器中使用这些组件作为Helix QAC工具(DaaQT)。

另外,我还将讨论在运行分析扫描工具时,如何处理项目数据配置的持久化,这样您就可以将Helix QAC项目规范和项目支持配置文件存储在Docker容器外,比如prqa 项目文件夹和pqraproject.xml.支持的文件。

对这些文件所做的任何更改将在Docker容器执行完成并关闭后持久存在。任何构建脚本的更改都会从一个构建到另一个构建输出到主机上映射的外部项目文件夹,并保持持久性。

第二部分:创建、构建和运行

首先,让我们来确定一些我选择用于构建Docker镜像的组件及其基本描述。

Helix-QAC-2022.2(C/C++静态分析解析器) ASCM-3.3.0(AUTOSAR C++14编码合规性) M3CM-3.3.0(MISRA C 2012编码合规性) MCPP-2.3.0(MISRA C++ 2008编码合规性) CERTCCM-2.3.0(C语言的安全编码标准支持) CERTCCPCM-2.3.0(CPP的安全编码标准支持)

接下来,下载您可用(或已购买)的Helix QAC解析器工具和编码合规性模块,并将这些安装文件放入主机上的已知文件夹位置。

在我的示例中,将有六个文件(一个解析器工具文件和五个编码合规性模块)。

接下来,创建一个Docker构建脚本文件。例如,我将文件命名为“qacDockerfile”,没有文件扩展名(默认名称是“dockerfile”)。该文件将由Docker引擎用来创建您的Docker镜像。基本上,它有一个命令列表,将按从上到下的顺序发送给docker引擎来执行。

然后将这些文件(包括qacDockerfile)放在DaaQT文件夹中。这些是生成此 Docker镜像所需的唯一文件。另外,请注意我将它们放在“vDockerBuilds/DaaQT”文件夹下。

以下是“qacDockerfile”脚本文件的内容和一些解释。

第1行选择了Ubuntu 22.04作为基础镜像。 第4行到第7行使Ubuntu操作系统保持最新状态,并允许设置时区。 第10行是可选的,但建议添加这些有用的工具,因为Ubuntu基础镜像是准系统。 第15行将安装基本的构建工具、GNU编译器依赖项和任何支持文件。这一步针对编译器工具链的使用需求会有所不同。但是,在我的示例中,这个镜像将使用gcc/g++ 11编译器。 第19行和第20行指示Docker引擎创建一个名为“QacWorkspace”的工作目录,所有后续命令都将使用该目录。 第25行将所有安装文件的权限更改为可执行。 第28行以静默模式安装Helix-QAC解析器工具并接受许可协议。 第31行至第35行以静默模式安装选定的编码合规性模块并接受许可协议。 第38行清理安装文件,使Docker镜像尽可能减少占用空间。

接下来,要构建Docker镜像,我们需要运行以下命令:

$> docker build --pull --no-cache -f qacDockerfile -t qacscatools:22v2.

拉取和无缓存参数用于确保始终获取最新的ubuntu镜像,并从头开始构建Docker镜像。 -f是qacDockerfile名称,默认情况下原始名称是Dockerfile。 -t是格式“name:tag”因此名称是“qacscatools”,标签是“22v2”,以指示使用了哪个Helix-QAC工具版本。 不要忘记末尾的“dot”,它表示这是一个本地目录。

构建镜像过程完成后,可以看到最后两行消息,指示写入文件并标记镜像。若要验证构建是否成功,请运行以下命令以显示所有可用Docker镜像列表。

$>docker images

(注意:上图中,图像标签ID为bd8c9d08dc4d。)

第三部分:在本地项目上运行DaaQT

在我们使用这个Docker容器化镜像(作为QAC工具的Docker——DaaQT)在本地桌面项目上运行任何静态代码分析之前,我们需要确保我们有权访问许可证服务器,以获得使用该工具的权限。

在我的示例中,我将使用外部远程Reprise许可证管理服务器来请求要使用的许可证。

首先,我们需要创建一个本地项目运行脚本,该脚本知道在哪里以及如何访问远程 Reprise许可证服务器。此项目运行脚本还必须知道Helix QAC仪表板服务器的位置,以便在分析运行完成后上传项目诊断消息结果。

让我们审查一下名为“runQACSCA.sh”的脚本文件及其内容。我将逐步解释它的作用。

第3行是对桌面计算机上项目文件夹名称的引用。 第7行是Helix QAC仪表板服务器上项目持有者的名称,用于上传诊断消息和项目信息。(注意:第8行可用于匹配本地文件夹名称。) 第9行到第11行是有关Helix QAC仪表板服务器的信息,例如URL地址(或FQDN)、服务器端口和许可证服务器端口。 第14行是本地桌面项目工作区名称服务器URL地址(或 FQDN)、服务器端口和许可证服务器端口。 第15行和第16行是对Helix QAC解析器工具所在位置的内部Docker镜像的引用,以及映射项目工作区的位置。 第19行供Docker与许可证服务器通信,以请求使用工具许可证。 第25行将Docker镜像设置为正确的入口点,以便定位映射的项目工作区。 第28行到第29行是选择一个规则配置文件用于项目。这些默认文件名是针对特定规则组配置进行标识的。您可以通过合并任何一个或多个规则配置文件来创建自己的自定义RCF文件,但在使用之前,必须在Helix QAC桌面GUI应用程序中完成自定义RCF文件的创建。此外,新的自定义名称需要与默认文件名不同。 第34行和第35行是为编译器工具链进行映射。在我的示例中,我已经映射到要使用地GNU C/CPP 11.2版本。 第38行用于创建PRQA项目配置并设置需求项目配置。 第41行让Helix QAC能够监控和跟踪项目如何用其命令进行本地构建。 如果项目需要执行一些关系跨模块分析(RCMA)和/或多线程分析(MTA),则通常使用第44行和第45行。 第47行到第49行是选择一个编码合规性模块,用于满足您的编码合规性要求需求。请确保此设置与第28行至第31行的RCF设置相匹配。 第52行是使用上述所有配置和设置参数,对您的项目执行静态代码分析。 第55行是将项目分析扫描结果上传到Helix QAC的仪表板服务器,并将其放在项目持有人中。上传的信息是包含诊断消息以及项目配置设置的源文件。

运行以下Docker命令,这些命令会将本地项目卷映射到Docker项目卷,以便保留分析数据文件。请密切注意ENTRYPOINT参数,其中的脚本文件“runQACSCA.sh”将从项目根文件夹执行。

以下是带有一些解释的Docker命令:

docker run --rm -it -v ~/ProjectsSandbox/MyCppCodeQac:/QacWorkspace/MyCppCodeQac--entrypoint=/QacWorkspace/MyCppCodeQac/runQACSCA.sh qacscatools:22v2

“run”,就是执行。 “-it”以交互方式运行Docker(因此您会获得一个带有STDIN的伪TTY)。 “--rm”会导致Docker在容器退出时自动删除容器。 “-v”表示卷映射LocalHostVolume:DockerVolume。 “--entrypoint” 为登录后的开始位置,可以是命令行开始运行带有指示内容的location/file_name.sh。

您也可以使用shell脚本来运行它,而不必记住在命令行上输入的所有参数。除了不必记住所有这些细节之外,这也使我们对脚本文件进行最小的更改,以适应其他类似的项目。

在我的例子中,我创建了一个名为“runDaaQT.sh”的shell脚本。

显示Docker命令行用法的屏幕截图。

显示shell脚本使用情况的屏幕截图。

作为选择,您也可以为CMakeNinja项目运行这个Docker容器,它的命令行与之前演示的项目类似。这个项目使用CMake和Ninja命令行构建系统。

要使用类似的命令行或shell脚本文件,您需要在命令行中对正确项目卷(CMakeNinja)名称的命令语法进行一些编辑,如下所示:

$> docker run --rm -it -v ~/QacProjectsSandbox/CMakeNinja:/QacWorkspace/CMakeNinja--entrypoint=/QacWorkspace/CMakeNinja/runQACSCA.sh qacscatools:22v2

显示CMakeNinja项目命令行用法的屏幕截图。

作者简介:

Dzuy Tran,Klocwork和Helix QAC高级解决方案架构师,Perforce公司

DzuyTran在硬件和软件嵌入式系统,RTOS,移动应用程序和企业系统的设计和开发方面拥有30多年的经验。当客户遇到技术问题时,他会帮助他们,协助进行概念验证,并演示静态代码分析工具,并帮助指导客户进行 DevOps 实施流程和持续集成部署。Dzuy拥有国立理工大学计算机科学和计算机工程硕士学位。

文章来源:http://bit.ly/3ZTux4I返回搜狐,查看更多



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有