Эти проекты состоят из шаблона CookieCutter, который генерирует полную структуру для создания стандартного пакета PYPI.
Используя этот проект, вам будет предложено предоставить некоторые входы, такие как автор, имя проекта и т. Д. В результате вы получите полную структуру файла и папки, чтобы быстро начать кодировать ваш пакет.
Давайте притворимся, что вы хотите создать проект под названием «Feddit». Используя этот шаблон на основе CookieCutter, вы сможете быстро настроить сборку PYPI -пакет.
Во -первых, получить CookieCutter. Поверь мне, это круто:
$ pip установить Cookiecutter
или с поэзией :
$ Poetry Self Add CookieCutter
Теперь запустите это против этого репо:
$ cookiecutter https://github.com/zhiwei2017/pyckage-cookeiecutter
или:
$ Poetry Run CookieCutter https://github.com/zhiwei2017/pyckage-cookeiecutter
Вам будет предложено для некоторых значений. Предоставьте их, тогда для вас будет создан проект.
Предупреждение : После этого момента измените « мой потрясающий проект », « Джон Доу » и т. Д. На вашу собственную информацию.
Ответьте на подсказки с помощью ваших желаемых подсказок. Например:
Клонирование в 'pyckage-cookiecutter' ... Удаленный: перечисление объектов: 219, сделано. Удаленный: подсчет объектов: 100% (219/219), сделано. Удаленный: сжатие объектов: 100% (123/123), сделано. удаленное: общее количество 219 (Delta 83), повторно используется 181 (Delta 69), Pack Researe 0 Приемные объекты: 100% (219/219), 41,09 киб | 1,71 миб/с, сделано. Разрешение Deltas: 100% (83/83), сделано. [1/8] выберите название своего проекта (мой потрясающий проект): [2/8] URL проекта для размещения исходного кода. (https://repository-hosting.com/example_project): https://github.com/zhiwei2017/feddit [3/8] Автор полное имя. (Джон Доу): Джон Доу [4/8] Автор адрес электронной почты. ([email protected]): [email protected] [5/8] Краткое описание. (Вот мой потрясающий проект!): Поддельный API Reddit. [6/8] Семантическая версия для использования для выпуска. (0,1,0): 0,1,0 [7/8] Какую лицензию вы хотите использовать для своего проекта? 1 - нет 2 - MIT 3 - Apache 4 - 2 -й оговорка BSD 5 - 3 -rack 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 ├ack .github - конфигурации действий GitHub │ └ack Рабочие процессы │ ├ack. │ ├ack. Sphinx.yml - трубопроводы для публикации страниц GitHub Docs - документация Sphinx │ ├ack -файл - Makefile определяет команды терминалов для документации Sphinx │ └ack │ ├ack ├ ├ 01_about.rst │ ├ack ├ ├ 02_source.rst │ ├ ├новить 03_authors.rst │ ├ ├^ 04_contributing.rst │ ├ ├мобив conf.py - файл конфигурации SPHINX │ └ack index.rst Feddit │ └ack y __init__.py Tests - тесты - тесты │ ├ack │ ├ackes │ └ └мобив test_version.py - Информация о тестовой версии. ├-- -gitignore ├acking. ├-- -лицензию ├ack -файл - предопределенные терминальные команды ├ack Manifest.in - Команды, по одному на строку, инструктируя Setuptools добавлять или удалить некоторые набор файлов из SDIS ├ack readme.rst - Информация о пакете ├-- -setup.cfg - Конфигурации для Flake8, поскольку он не поддерживает pyproject.toml. File File Configuration File Pyproject.toml - файл конфигурации пакета
Если вы хотите использовать конвейер CI/CD для загрузки пакета в PYPI, проверьте конфигурацию раздела CI/CD .
Примечание :
Этот репо изготовлен как колесный пакет и загружен в PYPI. Вы можете установить его через PIP :
$ pip установить pyckage-cookiecutter
или через поэзию :
$ Poetry Self добавить pyckage-cookiecutter
И начните создавать новый проект по Call:
$ pyckage_cookiecutter
или:
$ poetry run pyckage_cookiecutter
Остальное такое же, как введенный учебник.
Трубопроводы CI/CD предопределены в сгенерированном проекте. Пожалуйста, проверьте следующие разделы, для которых включены шаги и как их настроить на разных платформах.
Вы можете найти все файлы конфигурации действий GitHub в папке .github/workflows .
| Файл конфигурации | Шаги | Триггер правил | Необходимые переменные 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 | Poety_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 CACKOUT MASTER $ git cakeout -b -pages $ git push gh-pages
Файл .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 | Poety_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.
По умолчанию проверяется защищенный флаг, что означает, что добавленная переменная может использоваться только для защищенных ветвей/тегов. Если вы хотите сохранить защиту своей переменной, добавьте подстановочные знаки V* в качестве защищенных тегов в настройках -> Repository -> Защищенные теги .
Или вы можете снять с собой поле, чтобы использовать переменную для всех ветвей и тегов.
Файл 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 | Poety_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.
Вам необходимо включить трубопроводы, прежде чем добавить новую переменную в первый раз.
| Командование | Описание |
|---|---|
| чистый | Удалите автогенерируемые папки и артефакты. |
| чистый пик | Удалите артефакты Python. |
| Чистая корпуса | Удалите артефакты сборки. |
| Бандит | Запустить анализ безопасности бандитов. |
| Mypy | Запустите проверку типа Mypy. |
| Flake8 | Запустить Flake8 Linting. |
| установить | Установите все зависимости и сам пакет. |
| тест | Запустите тесты и генерируйте отчет о покрытии. |
| строить | Сборка колеса. |
| публиковать | Публикуйте встроенный колесный пакет. |
Особая благодарность Project CookieCutter-Pypackage за отличный шаблон.