使用HPCRunner一键构建镜像
前置条件
- 待构建镜像的节点已挂载配置YUM源。
YUM源挂载配置建议使用全量的ISO Everything包。
- 待构建镜像的节点需要服务器有外网权限。如无外网权限请先配置外网权限或外网代理。
安装步骤
- 使用PuTTY工具,以root用户登录节点。
- 安装基础依赖包。执行如下命令:
yum -y install git time zlib zlib-devel gcc gcc-c++ environment-modules python python3 python3-devel python3-libs python3-pip cmake make numactl numactl-devel numactl-libs rpmdevtools wget libtirpc libtirpc-devel unzip flex tar patch glibc-devel rpcbind csh perl-XML-LibXML xorg-x11-xauth curl curl-devel libcurl-devel libxml2-devel
- 克隆仓库。如已通过手动下载了贾维斯智能助手(HPCRunner),则忽略该步骤,否则执行如下命令:
git clone https://gitee.com/openeuler/hpcrunner.git
回显结果包含如下示例内容,表示HPCRunner克隆成功:
... Cloning into 'hpcrunner'... remote: Enumerating objects: 13018, done. remote: Counting objects: 100% (171/171), done. remote: Compressing objects: 100% (142/142), done. remote: Total 13018 (delta 89), reused 57 (delta 23), pack-reused 12847 (from 1) Receiving objects: 100% (13018/13018), 72.71 MiB | 2.57 MiB/s, done. Resolving deltas: 100% (6150/6150), done.
- 初始化HPCRunner。执行如下命令:
cd hpcrunner
source init.sh
- 安装go。执行如下命令:
- 配置加载go环境变量。执行如下命令:
module load ${JARVIS_ROOT}/software/modulefiles/go/1.18
无回显结果表示正常。
- 安装singularity。执行如下命令:
./jarvis -install singularity/3.9.6 any
回显结果包含如下示例内容,表示singularity安装成功:
... SUCCESSFULLY EXECUTED AT 2025-10-13 09:55:31, CONGRATULATIONS!!!
- 配置加载singularity环境变量。执行如下命令:
module load ${JARVIS_ROOT}/software/modulefiles/singularity/3.9.6
无回显结果表示正常。
- 使用singularity构建镜像。执行如下命令:
singularity build ${HOME}/openeuler-gcc-ecFlow-5.5.2.sif container/ecFlow/5.5.2/openeuler-gcc-ecFlow-5.5.2.def
回显结果包含如下示例内容,表示镜像构建成功:
... SUCCESSFULLY EXECUTED AT 2025-10-14 08:16:21, CONGRATULATIONS!!! INFO: Adding labels INFO: Adding environment to container INFO: Creating SIF file... INFO: Build complete: ${HOME}/openeuler-gcc-ecFlow-5.5.2.sif
- 运行“singularity build”命令需要服务器有外网权限。
- ${HOME}/openeuler-gcc-ecFlow-5.5.2.sif 表示生成的.sif文件保存到当前用户家目录。
- 运行测试生成的镜像。执行如下命令:
singularity exec ${HOME}/openeuler-gcc-ecFlow-5.5.2.sif ecflow_client --version
回显结果包含如下示例内容,表示运行测试成功:
Ecflow version(5.5.2) boost(1.72.0) compiler(gcc 10.3.1) protocol(JSON cereal 1.3.0) openssl(enabled) Compiled on Oct 9 2025 19:58:29
如遇到文件系统只读的权限问题可加参数--writable-tmpfs执行,执行如下命令:
singularity exec --writable-tmpfs ${HOME}/openeuler-gcc-ecFlow-5.5.2.sif ecflow_client --version
运行和验证
可通过源码包自带的shell脚本进行集成测试,以下骤为测试步骤。
- 执行以下命令在容器中切换到ecFlow的源码单元测试用例目录并执行单元测用例(容器所在路径和ecFlow软件目录可根据实际情况调整):
singularity exec ${HOME}/openeuler-gcc-ecFlow-5.5.2.sif bash -c 'cd ${JARVIS_TMP}/ecFlow-5.5.2-Source/build && make test'
- 用例执行结果查看,如图1所示。