The increasing importance of Computational Science and Engineering has highlighted the need for high-quality scientific software. However, research software development is often hindered by limited funding, time, staffing, and technical resources. To address these challenges, we introduce PyPackIT, a cloud-based automation tool designed to streamline research software engineering in accordance with FAIR (Findable, Accessible, Interoperable, and Reusable) and Open Science principles. PyPackIT is a user-friendly, ready-to-use software that enables scientists to focus on the scientific aspects of their projects while automating repetitive tasks and enforcing best practices throughout the software development life cycle. Using modern Continuous software engineering and DevOps methodologies, PyPackIT offers a robust project infrastructure including a build-ready Python package skeleton, a fully operational documentation and test suite, and a control center for dynamic project management and customization. PyPackIT integrates seamlessly with GitHub's version control system, issue tracker, and pull-based model to establish a fully-automated software development workflow. Exploiting GitHub Actions, PyPackIT provides a cloud-native Agile development environment using containerization, Configuration-as-Code, and Continuous Integration, Deployment, Testing, Refactoring, and Maintenance pipelines. PyPackIT is an open-source software suite that seamlessly integrates with both new and existing projects via a public GitHub repository template at https://github.com/repodynamics/pypackit.
翻译:计算科学与工程日益增长的重要性凸显了对高质量科学软件的需求。然而,研究软件开发常受限于资金、时间、人员和技术资源。为应对这些挑战,我们推出PyPackIT——一款基于云的自动化工具,旨在遵循FAIR(可发现、可访问、可互操作、可重用)与开放科学原则,简化研究软件工程流程。PyPackIT作为用户友好、开箱即用的软件,使科研人员能够专注于项目的科学内容,同时自动化重复性任务并在软件开发生命周期中贯彻最佳实践。通过采用现代持续软件工程与DevOps方法,PyPackIT提供稳健的项目基础设施,包括可立即构建的Python包骨架、完整可用的文档与测试套件,以及用于动态项目管理和定制的控制中心。该工具与GitHub版本控制系统、问题追踪器和拉取请求模型无缝集成,建立全自动的软件开发工作流。借助GitHub Actions,PyPackIT通过容器化、配置即代码以及持续集成、部署、测试、重构和维护流水线,提供云原生敏捷开发环境。PyPackIT作为开源软件套件,可通过公共GitHub仓库模板(https://github.com/repodynamics/pypackit)无缝集成至新建与现有项目中。