Estos proyectos consisten en una plantilla de CookieCutter que genera una estructura completa para crear un paquete estándar PYPI.
Mientras usa este proyecto, se le pedirá que proporcione algunas entradas, como el autor, el nombre del proyecto, etc. Como resultado, obtendrá el archivo completo y la estructura de la carpeta para comenzar rápidamente a codificar su paquete.
Finger que desee crear un proyecto llamado "FedDit". Al usar esta plantilla basada en CookieCutter, podrá configurar rápidamente un paquete PYPI construido.
Primero, consigue CookieCutter. Confía en mí, es increíble:
$ Pip Instalar Cookiecutter
o con poesía :
$ Poesía Self Add Cookiecutter
Ahora ejecutarlo contra este repositorio:
$ Cookiecutter https://github.com/zhiwei2017/pyckage-cookiecutter
o:
$ Poetry Run Cookiecutter https://github.com/zhiwei2017/pyckage-cookiCutter
Se le solicitará algunos valores. Proporcionarlos, luego se creará un proyecto para usted.
ADVERTENCIA : Después de este punto, cambie ' My Awesome Project ', ' John Doe ', etc. a su propia información.
Responda las indicaciones con sus propias indicaciones deseadas. Por ejemplo:
Cloning en 'Pyckage-Cookiecutter' ... Remoto: Objetos enumeradores: 219, hecho. Remoto: Contación de objetos: 100% (219/219), hecho. Remoto: COMPREMING OBJETOS: 100% (123/123), hecho. Remoto: Total 219 (Delta 83), reutilizado 181 (Delta 69), reutilizado 0 Objetos de recepción: 100% (219/219), 41.09 KIB | 1.71 MIB/s, hecho. Resolución de deltas: 100% (83/83), hecho. [1/8] Seleccione el nombre de su proyecto (mi increíble proyecto): [2/8] URL del proyecto para alojar el código fuente. (https://repository-hosting.com/example_project): https://github.com/zhiwei2017/feddit [3/8] Nombre completo del autor. (John Doe): John Doe [4/8] Dirección de correo electrónico del autor. ([email protected]): [email protected] [5/8] Descripción corta. (¡He aquí mi increíble proyecto!): Una API Reddit falsa. [6/8] Versión semántica para usar para su lanzamiento. (0.1.0): 0.1.0 [7/8] ¿Qué licencia desea usar para su proyecto? 1 - Ninguno 2 - MIT 3 - Apache 4 - 2 cláusula BSD 5 - 3 cláusula BSD 6 - GPL Elija entre [1/2/3/4/5/6] (1): 2 [8/8] ¿Qué tuberías CI/CD planea usar? 1 - Ninguno 2 - Github 3 - Gitlab 4 - Bitbucket Elija entre [1/2/3/4] (1): 2 ** Lea los comentarios de ReadMe.Rst en su proyecto para saber cómo configurar la tubería CI/CD y usar comandos de Makefile. **
Ingrese el proyecto y eche un vistazo:
$ CD Feddit/ $ LS
Su repositorio debe tener la siguiente estructura:
Feddit ├── .github - Configuraciones de acciones de GitHub │ └── Flujos de trabajo │ ├── test.yml - tuberías para cheques de pelucas y pruebas │ ├── Release.yml - Tuberías para las versiones con etiquetas │ └── sphinx.yml - tuberías para publicar páginas de Github ├── Docios - Documentación de Esfinge │ ├── MakeFile - MakeFile define los comandos de terminal para la documentación de Sphinx │ └── Fuente - Carpeta de fuente de documentación │ ├── 01_about.rst │ ├── 02_source.rst │ ├── 03_Authors.Rst │ ├── 04_contributing.rst │ ├── Conf.py - Archivo de configuración de Sphinx │ └── index.Rst ├── Feddit │ └── __init__.py Pisas - Pruebas - Pruebas │ ├── Recursos: recursos utilizados en las pruebas │ ├── conftest.py - accesorios en las pruebas │ └── test_version.py: prueba de la versión de prueba. ├── .Gitignore ├── contribuyente. Primero - Pautas contribuyentes Licencia ├── Makefile - Comandos de terminal predefinidos ├── Manifest.in - Comandos, uno por línea, instruyendo a SetupTools para agregar o eliminar algún conjunto de archivos del SDIS ├── ReadMe.RST - Información del paquete ├── Setup.cfg - Configuraciones para Flake8, ya que no es compatible con pyproject.toml. └── PyProject.TOML - Archivo de configuración del paquete
Si desea usar la tubería CI/CD para cargar su paquete a PYPI, verifique la configuración de CI/CD de sección.
Nota :
Este repositorio se construye como un paquete de ruedas y se carga a PYPI. Puede instalarlo a través de PIP :
$ Pip Instalar Pyckage-Cookiecutter
o a través de la poesía :
$ Poesía Self Agregar pyckage-cocookiecutter
Y comience a generar un nuevo proyecto por Call:
$ pyckage_cookiecutter
o:
$ poesía run pyckage_cookiecutter
El resto es el mismo que el tutorial introducido.
Las tuberías de CI/CD están predefinidas en el proyecto generado. Verifique las siguientes secciones para las que se incluyen los pasos y cómo configurarlos en diferentes plataformas.
Puede encontrar todos los archivos de configuración de las acciones de GitHub en la carpeta .github/workflows .
| Archivo de configuración | Pasos | Reglas de activación | Variables CI/CD requeridas | Descripción de las variables CI/CD |
|---|---|---|---|---|
| test.yml | cheque mypy |
| ||
| cheque de flake8 | ||||
| cheque de bandidos | ||||
| Pruebe con Python 3.8 (Ubuntu/Mac OS/Windows) | ||||
| Pruebe con Python 3.9 (Ubuntu/Mac OS/Windows) | ||||
| Pruebe con Python 3.10 (Ubuntu/Mac OS/Windows) | ||||
| Pruebe con Python 3.11 (Ubuntu/Mac OS/Windows) | ||||
| Pruebe con Python 3.12 (Ubuntu/Mac OS/Windows) | ||||
| Twine revisa el paquete construido | ||||
| liberar.yml | desplegar en PYPI | Presiona a las etiquetas que coinciden con vxx.xx.xx | Poesía_pypi_token_pypi | Token para cargar paquete a PYPI oficial. Si está utilizando un artefactory privado, use las variables paquete_index_repository_url, paquete_index_username y paquete_index_password en su lugar. |
| Paquete_index_repository_url | URL del índice de paquetes privados. | |||
| Paquete_index_username | Nombre de usuario del índice de paquetes privados. | |||
| Paquete_index_password | Contraseña del índice de paquetes privados. | |||
| sphinx.yml | implementar páginas de Github | Empuja a la rama maestra |
Nota :
Antes de publicar las páginas GitHub de su proyecto por primera vez, cree manualmente las páginas de GH de la sucursal a través de:
$ git checkout maestro $ git checkout -b gh -páginas $ Git Push Origin GH-Pages
El archivo .gitlab-ci.yml contiene todas las configuraciones para GitLab CI.
| Etapas | Pasos | Reglas de activación | Variables CI/CD requeridas | Descripción de las variables CI/CD |
|---|---|---|---|---|
| pelusa | cheque mypy |
| ||
| cheque de flake8 | ||||
| cheque de bandidos | ||||
| prueba | Prueba con Python 3.8 | |||
| Prueba con Python 3.9 | ||||
| Prueba con Python 3.10 | ||||
| Prueba con Python 3.11 | ||||
| Prueba con Python 3.12 | ||||
| construir | Twine revisa el paquete construido | |||
| desplegar | desplegar en PYPI | Presiona a las etiquetas que coinciden con vxx.xx.xx | Poesía_pypi_token_pypi | Token para cargar paquete a PYPI oficial. Si está utilizando un artefactory privado, use las variables paquete_index_repository_url, paquete_index_username y paquete_index_password en su lugar. |
| Paquete_index_repository_url | URL del índice de paquetes privados. | |||
| Paquete_index_username | Nombre de usuario del índice de paquetes privados. | |||
| Paquete_index_password | Contraseña del índice de paquetes privados. |
Ir a la configuración .
Haga clic en la sección CI/CD .
Vaya a la sección Variables .
Haga clic en Agregar botón Variable .
Ingrese el nombre y el valor de una variable CI/CD.
Por defecto, se verifica el indicador protegido , lo que significa que la variable agregada solo se puede usar para ramas/etiquetas protegidas. Si desea mantener su variable protegida, agregue los comodines V* como etiquetas protegidas en Configuración -> Repositorio -> Etiquetas protegidas .
O puede desmarcar el cuadro para usar la variable para todas las ramas y etiquetas.
El archivo bitbucket-pipelines.yml contiene todas las configuraciones de Bitbucket Pipelines.
| Pasos | Reglas de activación | Variables CI/CD requeridas | Descripción de las variables CI/CD |
|---|---|---|---|
| cheque mypy |
| ||
| cheque de flake8 | |||
| cheque de bandidos | |||
| Prueba con Python 3.8 | |||
| Prueba con Python 3.9 | |||
| Prueba con Python 3.10 | |||
| Prueba con Python 3.11 | |||
| Prueba con Python 3.12 | |||
| Twine revisa el paquete construido | |||
| desplegar en PYPI | Presiona a las etiquetas que coinciden con vxx.xx.xx | Poesía_pypi_token_pypi | Token para cargar paquete a PYPI oficial. Si está utilizando un artefactory privado, use las variables paquete_index_repository_url, paquete_index_username y paquete_index_password en su lugar. |
| Paquete_index_repository_url | URL del índice de paquetes privados. | ||
| Paquete_index_username | Nombre de usuario del índice de paquetes privados. | ||
| Paquete_index_password | Contraseña del índice de paquetes privados. |
Vaya a la configuración del repositorio .
Haga clic en Variables del repositorio .
Haga clic en el botón Agregar .
Ingrese el nombre y el valor de una variable CI/CD.
Debe habilitar tuberías antes de agregar una nueva variable por primera vez.
| Dominio | Descripción |
|---|---|
| limpio | Retire las carpetas y artefactos autogenerados. |
| Pyc limpio | Retire los artefactos de Python. |
| construcción limpia | Eliminar los artefactos de construcción. |
| bandido | Ejecute el análisis de seguridad de Bandit. |
| mypy | Ejecute la verificación de tipo mypy. |
| escamoso | Ejecute Flake8 Linting. |
| instalar | Instale todas las dependencias y el paquete en sí. |
| prueba | Ejecutar pruebas y generar informe de cobertura. |
| construir | Construir paquete de ruedas. |
| publicar | Publique el paquete de ruedas construido. |
Un agradecimiento especial al proyecto Cookiecutter-Pypackage por la agradable plantilla .