該項目由一個烹飪模板組成,該模板為創建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項目的良好貢獻。