Esses projetos consistem em um modelo de cozinheiro que gera uma estrutura completa para criar um pacote padrão PYPI.
Ao usar este projeto, você será solicitado a fornecer alguns insumos como o autor, o nome do projeto etc. Como resultado, você obterá a estrutura completa do arquivo e da pasta para começar rapidamente a codificar seu pacote.
Vamos fingir que você deseja criar um projeto chamado "Feddit". Ao usar este modelo com base no CookiecTutter, você poderá configurar rapidamente um pacote PyPI construível.
Primeiro, pegue o CookieCutter. Confie em mim, é incrível:
$ pip install cookiecutter
ou com poesia :
$ poetry self add cookiecutter
Agora execute -o contra este repo:
$ Cookiecutter https://github.com/zhiwei2017/pyckage-cookiecutter
ou:
$ poetry run cookiecutter https://github.com/zhiwei2017/pyckage-cookiecutter
Você será solicitado a alguns valores. Forneça a eles, então um projeto será criado para você.
Aviso : depois deste ponto, mude ' meu projeto incrível ', ' John Doe ', etc. para suas próprias informações.
Responda aos avisos com seus próprios prompts desejados. Por exemplo:
Clonando em 'pyckage-cookiecutter' ... Remoto: enumerando objetos: 219, feito. Remoto: Counting Objetos: 100% (219/219), feito. Remoto: Compactando objetos: 100% (123/123), concluído. Remoto: Total 219 (Delta 83), reutilizado 181 (Delta 69), Reilvatou-se 0 Objetos recebidos: 100% (219/219), 41,09 KIB | 1.71 MIB/S, feito. Resolvando deltas: 100% (83/83), feito. [1/8] Selecione o nome do seu projeto (meu projeto incrível): [2/8] URL do projeto para hospedar o código -fonte. (https://repository-hosting.com/example_project): https://github.com/zhiwei2017/feddit [3/8] Nome completo do autor. (John Doe): John Doe [4/8] Endereço de e -mail do autor. ([email protected]): [email protected] [5/8] Descrição curta. (Eis que meu projeto incrível!): Uma API falsa do Reddit. [6/8] Versão semântica a ser usada para liberação. (0.1.0): 0.1.0 [7/8] Qual licença você deseja usar para o seu projeto? 1 - Nenhum 2 - MIT 3 - Apache 4 - 2 -cláusulas BSD 5 - 3 cláusulas BSD 6 - GPL Escolha entre [1/2/3/4/5/6] (1): 2 [8/8] Quais pipelines CI/CD você planeja usar? 1 - Nenhum 2 - Github 3 - Gitlab 4 - Bitbucket Escolha entre [1/2/3/4] (1): 2 ** Por favor, leia os comentários do ReadMe.rst em seu projeto para saber como configurar o pipeline CI/CD e usar comandos do makefile. **
Entre no projeto e dê uma olhada em volta:
$ CD Feddit/ $ ls
Seu repositório deve ter a seguinte estrutura:
Feddit ├── .github - configurações de ações do github │ └── Fluxos de trabalho │ ├── test.yml - pipelines para verificações de linha e teste │ ├── Release.yml - Pipelines para lançamentos com tags │ └sto ├── Documentos - documentação de Sphinx │ ├sto │ └── Fonte - Pasta de fonte de documentação │ ├── 01_about.rst │ ├── 02_source.rst │ ├── 03_Authors.RST │ ├── 04_CONTRIBULING.RST │ ├── conf.py - arquivo de configuração de esfing │ └── index.rst ├── Feddit │ └── __init__.py ├── testes - testes │ ├── Recursos - Recursos usados em testes │ ├── Conftest.py - acessórios em testes │ └── test_version.py - Informações da versão de teste. ├── .gitignore ├── contribuindo.rst - Diretrizes contribuindo ├── licença ├── Makefile - Comandos de terminais predefinidos ├── Manifest.in - Comandos, um por linha, instruindo o SetupTools a adicionar ou remover algum conjunto de arquivos do SDIS ├── ReadMe.rst - Informações do pacote ├── setup.cfg - configurações para flake8, pois não suporta pyproject.toml. └── PyProject.toml - arquivo de configuração do pacote
Se você deseja usar o pipeline CI/CD para fazer upload do seu pacote para o Pypi, verifique a configuração da seção CI/CD .
Observação :
Este repositório é construído como um pacote de rodas e carregado para o PYPI. Você pode instalá -lo através do PIP :
$ pip install pyckage-cookiecutter
ou através da poesia :
$ poesia self add pyckage-cookiecutter
E comece a gerar um novo projeto de chamada:
$ pyckage_cookiecuttertutter
ou:
$ poetry run pyckage_cookiecutter
O resto é o mesmo que o tutorial introduzido.
Os pipelines CI/CD são predefinidos no projeto gerado. Verifique as seções seguintes para as quais as etapas estão incluídas e como configurá -las em diferentes plataformas.
Você pode encontrar todos os arquivos de configuração das ações do GitHub na pasta .github/workflows .
| Arquivo de configuração | Passos | Gatilho regras | Variáveis de CI/CD necessárias | Variáveis CI/CD Descrição |
|---|---|---|---|---|
| test.yml | MyPy cheque |
| ||
| Flake8 cheque | ||||
| Bandit Check | ||||
| Teste com Python 3.8 (Ubuntu/Mac OS/Windows) | ||||
| Teste com Python 3.9 (Ubuntu/Mac OS/Windows) | ||||
| Teste com Python 3.10 (Ubuntu/Mac OS/Windows) | ||||
| Teste com Python 3.11 (Ubuntu/Mac OS/Windows) | ||||
| Teste com Python 3.12 (Ubuntu/Mac OS/Windows) | ||||
| Twine Verifique o pacote construído | ||||
| release.yml | implantar para Pypi | Empurra para tags correspondentes a vxx.xx.xx | Poetry_pypi_token_pypi | Token para fazer upload do pacote para o PYPI oficial. Se você estiver usando uma artefática privada, use o Package_index_repository_url, package_index_username e package_index_password. |
| Package_index_repository_url | URL do índice de pacotes privados. | |||
| Package_index_username | Nome de usuário do índice de pacotes privados. | |||
| Package_index_password | Senha do índice de pacotes privados. | |||
| sphinx.yml | Implante páginas do GitHub | Empurra para o ramo mestre |
Observação :
Antes de publicar as páginas do Github do seu projeto pela primeira vez, crie manualmente as Páginas GH da filial por:
$ git checkout mestre $ Git checkout -b gh -páginas $ git push origem gh-pages
O arquivo .gitlab-ci.yml contém todas as configurações do GitLab CI.
| Estágios | Passos | Gatilho regras | Variáveis de CI/CD necessárias | Variáveis CI/CD Descrição |
|---|---|---|---|---|
| LING | MyPy cheque |
| ||
| Flake8 cheque | ||||
| Bandit Check | ||||
| teste | Teste com Python 3.8 | |||
| Teste com Python 3.9 | ||||
| Teste com Python 3.10 | ||||
| Teste com Python 3.11 | ||||
| Teste com Python 3.12 | ||||
| construir | Twine Verifique o pacote construído | |||
| implantar | implantar para Pypi | Empurra para tags correspondentes a vxx.xx.xx | Poetry_pypi_token_pypi | Token para fazer upload do pacote para o PYPI oficial. Se você estiver usando uma artefática privada, use o Package_index_repository_url, package_index_username e package_index_password. |
| Package_index_repository_url | URL do índice de pacotes privados. | |||
| Package_index_username | Nome de usuário do índice de pacotes privados. | |||
| Package_index_password | Senha do índice de pacotes privados. |
Vá para configurações .
Clique na seção CI/CD .
Vá para a seção Variáveis .
Clique no botão Adicionar variável .
Insira o nome e o valor de uma variável CI/CD.
Por padrão, o sinalizador protegido é verificado, o que significa que a variável adicionada só pode ser usada para ramificações/tags protegidas. Se você deseja manter sua variável protegida, adicione os curingas v* como tags protegidas nas configurações -> repositório -> tags protegidas .
Ou você pode desmarcar a caixa para usar a variável para todas as ramificações e tags.
O arquivo bitbucket-pipelines.yml contém todas as configurações dos pipelines Bitbucket.
| Passos | Gatilho regras | Variáveis de CI/CD necessárias | Variáveis CI/CD Descrição |
|---|---|---|---|
| MyPy cheque |
| ||
| Flake8 cheque | |||
| Bandit Check | |||
| Teste com Python 3.8 | |||
| Teste com Python 3.9 | |||
| Teste com Python 3.10 | |||
| Teste com Python 3.11 | |||
| Teste com Python 3.12 | |||
| Twine Verifique o pacote construído | |||
| implantar para Pypi | Empurra para tags correspondentes a vxx.xx.xx | Poetry_pypi_token_pypi | Token para fazer upload do pacote para o PYPI oficial. Se você estiver usando uma artefática privada, use o Package_index_repository_url, package_index_username e package_index_password. |
| Package_index_repository_url | URL do índice de pacotes privados. | ||
| Package_index_username | Nome de usuário do índice de pacotes privados. | ||
| Package_index_password | Senha do índice de pacotes privados. |
Vá para as configurações do repositório .
Clique em variáveis de repositório .
Clique no botão Adicionar .
Insira o nome e o valor de uma variável CI/CD.
Você precisa habilitar pipelines antes de adicionar uma nova variável pela primeira vez.
| Comando | Descrição |
|---|---|
| limpar | Remova pastas e artefatos autogenerados. |
| Clean-Pyc | Remova os artefatos do Python. |
| construção limpa | Remova artefatos de construção. |
| bandido | Execute a análise de segurança de bandidos. |
| mypy | Execute a verificação do tipo mypy. |
| Flake8 | Execute o revestimento de Flake8. |
| instalar | Instale todas as dependências e o próprio pacote. |
| teste | Execute testes e gerar relatório de cobertura. |
| construir | Construa o pacote da roda. |
| publicar | Publique o pacote de roda construída. |
Agradecimentos especiais ao projeto CookieCutter-Pypackage pelo bom modelo de contribuição .