从 Biocontainers 迁移到 Seqera Containers:第 2 部分

主要观点:nf-core 采用 Wave 实现软件容器构建自动化,将容器迁移至 Seqera Containers 平台,以提高软件环境的重现性和可靠性。

关键信息

  • 模块层面:模块贡献者通过编辑environment.yml更新软件依赖,自动化处理容器构建(Docker、Singularity 等),并在meta.yml中记录容器信息,包括不同架构的名称、构建 ID 和扫描 ID 等。
  • 管道层面:为每个软件打包类型和平台自动生成配置文件,nextflow.config导入这些配置文件,根据所选配置文件使用相应的容器或 Conda 环境,还提供了新的_arm_oras后缀的配置文件。
  • 自动化流程:包括更新 Conda 包、容器图像创建、nf-test 版本快照、自动版本更新(Renovate)等,确保软件依赖及时更新且测试通过后自动合并 PR,减少手动干预。
  • 边缘情况:存在一些无法使用自动化的边缘情况,如本地模块、部分无法在 Bioconda 打包的工具等,需要手动更新容器声明。
  • 后续工作:列出了完成此项目所需的多项工作,包括改进nextflow inspect、添加和 lint 模块 Renovate 注释等,预计在 2024 年底完成大部分工作。

重要细节

  • Conda 锁文件可精确记录依赖栈,提高 Conda 用户环境的重现性和 Conda CI 测试的可靠性。
  • Singularity 使用oras://协议有优势(如减少资源占用、支持私有仓库认证等),但也有一些限制(如不使用共享缓存、下载时需安装 Singularity 等)。
  • 自动化过程中,通过wave-cli构建容器图像,nf-test 用于验证容器生成的正确性,Renovate 自动更新软件版本。
  • 配置文件的生成和更新机制,以及在不同情况下(如模块导入、管道运行等)如何使用这些配置文件。
  • 对于边缘情况,可手动更新容器声明或使用自定义容器,并可在 quay.io 存储自定义容器。
  • 未来工作包括改进nextflow inspect、完善 nf-core/tools 和 nf-core/modules 的相关功能等。
阅读 25
0 条评论