Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

Ferramenta

Slide 8

Slide 8 text

A Aplicação Exemplo

Slide 9

Slide 9 text

● 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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

Integração Contínua

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

Pytest and Codecov

Slide 15

Slide 15 text

Lint

Slide 16

Slide 16 text

Testes de Integração - Run Examples

Slide 17

Slide 17 text

Deploys

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

Publish to TestPyPI

Slide 21

Slide 21 text

Publish to PyPI

Slide 22

Slide 22 text

👀

Slide 23

Slide 23 text

scanapi.dev 🌐

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

MUITO OBRIGADA! @cmaiacd camilamaia 󰠁 cmaiacd.com