Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CI e automação de deploys em bibliotecas Python

CI e automação de deploys em bibliotecas Python

DevOps Extreme 2021

Camila Maia

August 13, 2021
Tweet

More Decks by Camila Maia

Other Decks in Programming

Transcript

  1. CI e automação de deploys
    em bibliotecas Python
    Para deixar qualquer DevOps orgulhoso ⭐
    DevOps Extreme - Ago 2021
    Camila Maia

    View Slide

  2. Esta apresentação está disponível em:
    speakerdeck.com/cmaiacd

    View Slide

  3. Quem sou eu?
    - Desenvolvedora Backend
    - 10+ anos xp 👵
    - Python 🐍 e Ruby 💎
    - OpenSource e Comunidades ❤
    - Organização de eventos:
    Pyjamas, EuroPython, Python Brasil….

    View Slide

  4. - Primeiro perfil aprovado no
    programa de Sponsors para quem
    reside no Brasil 󰎙
    Quem sou eu?

    View Slide

  5. A biblioteca
    ● Biblioteca Python
    ● Gerenciamento de pacotes e dependências via Poetry
    ● Distribuída via PyPI e TestPyPI
    ● Código no GitHub

    View Slide

  6. Integração Contínua:
    ● Testes unitários + Cobertura de Testes
    ● Lint: checagem de formatação do código, tipagem estática e formatação
    de mensagens de commit
    ● Testes de integração
    Automação de deploys:
    ● Merge no branch main: deploy no TestPyPI
    ● Nova release: deploy no PyPI
    O objetivo

    View Slide

  7. Ferramenta

    View Slide

  8. A Aplicação Exemplo

    View Slide

  9. ● Framework de código aberto
    ● Command line interface (CLI)
    ● Escrito em Python
    Objetivos:
    1. Fornecer Live Documentation
    2. Possibilitar a implementação de Testes de Integração

    View Slide

  10. Fluxo
    ESPECIFICAÇÃO
    YAML / JSON
    RELATÓRIO
    EFETUA AS
    REQUESTS
    EXECUTA OS
    TESTES

    View Slide

  11. Integração Contínua

    View Slide

  12. Integração Contínua
    Main
    Branch 1
    Testes Unitários
    Lint
    Testes de Integração

    View Slide

  13. Makefile
    test:
    @pytest --cov=./scanapi --cov-report=xml
    black:
    @poetry run black -l 80 --check . --exclude=.venv
    flake8:
    @poetry run flake8 --ignore=E501,W501,E231,W503
    mypy:
    @poetry run mypy scanapi
    gitlint:
    @poetry run gitlint --ignore-stdin
    check: black flake8 mypy gitlint

    View Slide

  14. Pytest and Codecov

    View Slide

  15. Lint

    View Slide

  16. Testes de Integração - Run Examples

    View Slide

  17. Deploys

    View Slide

  18. Deploys
    Main
    Branch 1
    Publish to TestPyPI
    New Release
    Publish to PyPI

    View Slide

  19. timestamp = `date -u +'%Y%m%d%H%M%S'`
    change-version:
    @poetry version `poetry version -s | cut -f-3 -d.`.dev$(timestamp)
    Makefile + Setup das Chaves

    View Slide

  20. Publish to TestPyPI

    View Slide

  21. Publish to PyPI

    View Slide

  22. 👀

    View Slide

  23. scanapi.dev 🌐

    View Slide

  24. GitHub
    - https://github.com/scanapi
    Twitter
    - @ScanAPI_
    Discord
    - discord.scanapi.dev
    Comunicação: ScanAPI
    Bora trocar uma ideia! 🗣

    View Slide

  25. MUITO OBRIGADA!
    @cmaiacd camilamaia
    󰠁
    cmaiacd.com

    View Slide