主要观点: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 的相关功能等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。