项目模板工具

一个用于创建和管理项目模板的工具,包含CI/CD集成、文档生成和测试框架。

  • by sciserver
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 sciserver/cas-jobs-sdss-mcp

使用说明

SSEC-JHU<软件包名称>

基于https://github.com/nicknochnack/BuildMCPServer

所有其他人使用的基础回购模板。

使用此模板时要做的事情:

  • 跑 python project_setup.py
  • 在README.md中取消对DOI的注释并更正 <insert_ID_number>.
  • 更正.zenodo.json中的“description”字段,以反映子仓库的描述。
  • 更正 CI Status 在URL中使用正确标记的徽章。
  • 将包裹导入https://readthedocs.org/.
  • 更新 zenodo.json。有关更多详细信息,请参阅 zenodo.json文档 和 zenodo关于贡献者与创作者的文档.
  • 更新下面的快速入门指南。

此模板中包含的内容:

  • 许可证文件
  • 行为准则
  • 股份有限公司建造与安装。 pip 依赖性要求。
  • Dependabot GitHub行动
  • GitHub操作的CI:lint、pytest、构建docker镜像并将其发布到GitHub Packages。
  • Dockerfile。
  • Pytest示例。
  • Githooks。

快速入门指南

在此处添加如何使代码尽快运行的简化说明,并提供使用示例。 这不应该试图涵盖所有操作系统和/或构建变体,而只是规范版本。因为用户最有可能 从GitHub.com查看此README,假设回购上下文可能是最好的,其中说明如下。 或者,如果这个包是在PyPi上分发的,也许只是 pip install <package-name>,然后快速 用户指令就足够了。

  • git clone https://github.com/ssec-jhu/base-template
  • conda create -n package_name python pip
  • conda activate package_name
  • pip pinstall -e .
  • 添加用户说明。

安装、构建和运行说明

县 :

有关其他cmd,请参阅 Conda备忘单.

  • 下载并安装 迷你康达 或 蟒蛇.
  • 创建新环境(env)并安装 conda create -n <environment_name>
  • 激活/切换到新环境 conda activate <environment_name>
  • cd 进入repo目录。
  • 安装 python 和 pip conda install python=3.11 pip
  • 安装所有必需的依赖项(假设本地开发工作),有两种方法可以做到这一点
    • 如果使用tox(推荐) pip install -r requirements/dev.txt.
    • 如果您想设置一个在tox之外运行的所有要求的环境 pip install -r requirements/all.txt.

构建:

使用Docker:

  • 下载并安装Docker-请参阅 Docker安装文档.
  • cd 进入repo目录。
  • 构建图像: docker build -t <image_name> .

Python生态系统:

  • cd 进入repo目录。
  • conda activate <environment_name>
  • 在<environment_name>conda环境中构建并安装软件包: pip install .
  • 在dev/可编辑模式下执行相同的操作(对repo的更改将在python内核重新启动时反映在env安装中) 注意:这是开发工作的首选安装方法。 pip install -e .. 注意:如果您没有从安装依赖项 requirements/dev.txt,您可以安装 一组约束更宽松的deps,使用: pip install -e .[dev].

跑

使用Docker:

  • 遵循上述步骤 使用Docker指令构建.
  • 从映像运行容器: docker run -d -p 8000:8000 <image_name>. 注: -p 8000:8000 特定于使用端口8000的示例应用程序。
  • 或者,可以从以下位置提取图像 ghcr.io/ssec-jhu/ 例如。, docker pull ghcr.io/ssec-jhu/base-template:pr-1.

Python生态系统:

  • 遵循上述步骤 使用Python生态系统指令构建.
  • 跑 uvicorn package_name.app.main:app --host 0.0.0.0 --port", "8000. 注意:这只是一个示例,显然取决于应用程序。

用途:

由子仓库完成。

测试

注意:以下步骤需要 pip install -r requirements/dev.txt.

使用tox

  • 运行tox tox。这将在tox虚拟环境中运行所有linting、安全、测试、文档和包构建。
  • 要运行单个步骤,请使用 tox -e {step} 例如, tox -e test, tox -e build-docs等等。

通常,在github操作中运行的CI测试将使用tox如上所述运行。另见 ci.yml.

毒素之外:

下面假设您正在运行没有tox的步骤,并且所有要求都安装在conda环境中,例如 pip install -r requirements/all.txt.

注意:Tox将为您运行这些程序,特别是在需要设置环境并在Tox权限之外运行这些程序的情况下。

Linting:

有助于测试拼写错误、语法、样式和其他简单的代码分析测试。

  • cd 进入repo目录。
  • 切换/激活正确的环境: conda activate <environment_name>
  • 跑 ruff .
  • 每次您执行以下操作时,都可以自动运行(推荐给开发人员) git push 通过安装提供的 pre-push git挂钩可用 ./githooks. 说明就在那个文件里——只是 cp ./githooks/pre-push .git/hooks/;chmod +x .git/hooks/pre-push.

安全检查:

使用以下工具便于检查安全问题 匪徒.

  • cd 进入repo目录。
  • bandit --severity-level=medium -r package_name

单元测试:

有助于在模块化级别测试核心包功能。

  • cd 进入repo目录。
  • 运行所有可用测试: pytest .
  • 运行特定测试: pytest tests/test_util.py::test_base_dummy.

回归测试:

有助于测试核心数据结果在开发过程中是否不同。

  • 在制品

烟雾测试:

有助于在应用程序和基础架构级别进行测试。

  • 在制品

构建文档:

便于构建、测试和查看文档。

  • cd 进入repo目录。
  • pip install -r requirements/docs.txt
  • cd docs
  • make clean
  • make html
  • 要在默认浏览器中查看文档,请运行 open docs/_build/html/index.html.