该项目由一个烹饪模板组成,该模板为创建PYPI标准软件包生成完整的结构。
在使用此项目时,将要求您提供一些输入,例如作者,项目的名称等。结果,您将获得完整的文件和文件夹结构,以快速开始编码您的软件包。
让我们假装您想创建一个名为“ Feddit”的项目。通过使用基于CookieCutter的模板,您将能够快速设置可构建的PYPI软件包。
首先,去烹饪。相信我,这很棒:
$ pip安装厨师
或诗歌:
$诗歌自我添加厨师
现在将其与此仓库相对:
$ CookieCutter https://github.com/zhiwei2017/pyckage-cookiecutter
或者:
$诗歌运行cookiecutter https://github.com/zhiwei2017/pyckage-cookiecutter
您会提示一些值。提供它们,然后为您创建一个项目。
警告:此后,将“我的真棒项目”,“ John Doe ”等更改为您自己的信息。
用自己所需的提示回答提示。例如:
克隆到“ pyckage-cookiecutter” ... 远程:枚举对象:219,完成。 远程:计数对象:100%(219/219),完成。 远程:压缩对象:100%(123/123),完成。 遥控器:总计219(Delta 83),重复使用181(Delta 69),包装重新使用0 接收对象:100%(219/219),41.09 KIB | 1.71 MIB/S,完成。 解决三角洲:100%(83/83),完成。 [1/8]选择您的项目名称(我的很棒的项目): [2/8]用于托管源代码的项目URL。 (https://repository-hosting.com/example_project):https://github.com/zhiwei2017/feddit [3/8]作者全名。 (John Doe):John Doe [4/8]作者电子邮件地址。 ([email protected]):[email protected] [5/8]简短描述。 (看我很棒的项目!):一个假的Reddit API。 [6/8]用于发布的语义版本。 (0.1.0):0.1.0 [7/8]您想用于项目的哪些许可? 1-无 2-麻省理工学院 3- apache 4-2条款BSD 5-3条款BSD 6- GPL 从[1/2/3/4/5/6](1):2 [8/8]您打算使用哪种CI/CD管道? 1-无 2 -github 3-吉特拉布 4- bitbucket 从[1/2/3/4](1):2中选择 **请阅读您项目中readme.rst的评论,以了解如何设置CI/CD管道并使用Makefile中的命令。**
输入项目并环顾四周:
$ cd feddit/ $ LS
您的存储库应具有以下结构:
Feddit ├─-.github- github操作配置 ││ - 工作流程 test.yml-覆盖和测试的管道 │├│前释放。 │││phinx.yml-出版github页面的管道 ├ - 文档 - 狮身人面像文档 Makefile- makefile定义了狮身人面像文档的终端命令 ││ - 源 - 文档源文件夹 │├├─-01_ABOUT.RST ││├─-02_source.rst ││├─-03_Authors.rst │├│─04_contributing.rst │├├─-conf.py-狮身人面像配置文件 │││─-index.rst ├ - 加迪特 │└└前__init__.py ├ - 测试 - 测试 ││├├-资源 - 测试中使用的资源 Conftest.py-测试中的固定装置 │└│─-test_version.py-测试版信息。 ├─-.gitignore ├ - �贡献。1-贡献指南 ├前许可证 ├─— makefile-预定义的终端命令 ├ - 清单。in-命令,每行1个,指示setuptools添加或删除SDI的某些文件 ├├期readme.rst-包装信息 ├─-setup.cfg- flake8的配置,因为它不支持pyproject.toml。 └ - pyproject.toml-软件包配置文件
如果要使用CI/CD管道将软件包上传到PYPI,请检查CI/CD配置部分。
笔记:
该仓库是作为轮套装并上传到PYPI的。您可以通过PIP安装它:
$ pip安装pyckage-cookiecutter
或通过诗歌:
$诗歌自我添加pyckage-cookiecutter
并开始通过呼叫生成一个新项目:
$ pyckage_cookiecutter
或者:
$诗歌运行pyckage_cookiecutter
其余的与介绍的教程相同。
CI/CD管道在生成的项目中预定义。请检查以下各节,其中包括哪些步骤以及如何在不同平台中配置它们。
您可以在.github/workflows文件夹中找到GitHub操作的所有配置文件。
| 配置文件 | 步骤 | 触发规则 | 必要的CI/CD变量 | CI/CD变量描述 |
|---|---|---|---|---|
| test.yml | Mypy检查 |
| ||
| Flake8检查 | ||||
| 强盗检查 | ||||
| 使用Python 3.8(Ubuntu/Mac OS/Windows)测试 | ||||
| 使用Python 3.9测试(Ubuntu/Mac OS/Windows) | ||||
| 使用Python 3.10测试(Ubuntu/Mac OS/Windows) | ||||
| 使用Python 3.11测试(Ubuntu/Mac OS/Windows) | ||||
| 使用Python 3.12测试(Ubuntu/Mac OS/Windows) | ||||
| 麻线检查已建造的软件包 | ||||
| Release.yml | 部署到PYPI | 推到标签匹配vxx.xx.xx | poetry_pypi_token_pypi | 代币将包裹上传到官方PYPI。如果您使用的是私人文物,请使用变量package_index_repository_url,package_index_username和package_index_password代替。 |
| package_index_repository_url | 私人包索引的URL。 | |||
| package_index_username | 私有软件包索引的用户名。 | |||
| package_index_password | 私人软件包索引的密码。 | |||
| sphinx.yml | 部署github页面 | 推到主分支 |
笔记:
在首次发布项目的GitHub页面之前,请通过以下方式手动创建分支GH页面:
$ git Checkout Master $ git Checkout -b gh页面 $ git推出原产
文件.gitlab-ci.yml包含Gitlab CI的所有配置。
| 阶段 | 步骤 | 触发规则 | 必要的CI/CD变量 | CI/CD变量描述 |
|---|---|---|---|---|
| 覆盖 | Mypy检查 |
| ||
| Flake8检查 | ||||
| 强盗检查 | ||||
| 测试 | 使用Python 3.8测试 | |||
| 使用Python 3.9测试 | ||||
| 使用Python 3.10测试 | ||||
| 使用Python 3.11测试 | ||||
| 使用Python 3.12测试 | ||||
| 建造 | 麻线检查已建造的软件包 | |||
| 部署 | 部署到PYPI | 推到标签匹配vxx.xx.xx | poetry_pypi_token_pypi | 代币将包裹上传到官方PYPI。如果您使用的是私人文物,请使用变量package_index_repository_url,package_index_username和package_index_password代替。 |
| package_index_repository_url | 私人包索引的URL。 | |||
| package_index_username | 私有软件包索引的用户名。 | |||
| package_index_password | 私人软件包索引的密码。 |
转到设置。
单击CI/CD部分。
转到变量部分。
单击添加变量按钮。
输入CI/CD变量的名称和值。
默认情况下,检查了受保护的标志,这意味着添加的变量只能用于受保护的分支/标签。如果要保持可变保护,请在设置- > repository- >受保护的标签中添加通配符v*作为受保护的标签。
或者,您可以取消选中框以将变量用于所有分支和标签。
文件bitbucket-pipelines.yml包含Bitbucket管道的所有配置。
| 步骤 | 触发规则 | 必要的CI/CD变量 | CI/CD变量描述 |
|---|---|---|---|
| Mypy检查 |
| ||
| Flake8检查 | |||
| 强盗检查 | |||
| 使用Python 3.8测试 | |||
| 使用Python 3.9测试 | |||
| 使用Python 3.10测试 | |||
| 使用Python 3.11测试 | |||
| 使用Python 3.12测试 | |||
| 麻线检查已建造的软件包 | |||
| 部署到PYPI | 推到标签匹配vxx.xx.xx | poetry_pypi_token_pypi | 代币将包裹上传到官方PYPI。如果您使用的是私人文物,请使用变量package_index_repository_url,package_index_username和package_index_password代替。 |
| package_index_repository_url | 私人包索引的URL。 | ||
| package_index_username | 私有软件包索引的用户名。 | ||
| package_index_password | 私人软件包索引的密码。 |
转到存储库设置。
单击存储库变量。
单击添加按钮。
输入CI/CD变量的名称和值。
您需要在首次添加新变量之前启用管道。
| 命令 | 描述 |
|---|---|
| 干净的 | 删除自动化文件夹和工件。 |
| 清洁pyc | 删除Python文物。 |
| 清洁建造 | 删除构建工件。 |
| 土匪 | 运行强盗安全分析。 |
| mypy | 运行MyPy类型检查。 |
| Flake8 | 运行Flake8 Linting。 |
| 安装 | 安装所有依赖项和软件包本身。 |
| 测试 | 运行测试并生成覆盖报告。 |
| 建造 | 构建轮套。 |
| 发布 | 发布内置的车轮包。 |
特别感谢cookiecutter-pypackage项目的良好贡献。