Skip to main content

Projeto da matéria de Engenharia de Software

Project description

Downloader Multithread com GUI

CI/CD Pipeline

Projeto desenvolvido para a disciplina de Engenharia de Software. A aplicação foi construída em Python com interface em Tkinter e realiza downloads em múltiplas threads, dividindo o arquivo em partes e montando o arquivo final ao término da transferência.

Integrantes

  • Guilherme
  • Luan Robert

Funcionalidades

  • Download de arquivos em múltiplas threads
  • Interface gráfica com Tkinter
  • Montagem automática do arquivo final
  • Geração de logs do processo de download
  • Pipeline CI/CD com testes, build, cobertura, deploy e notificação

Estrutura do Projeto

Requisitos

  • Python 3.9 ou superior
  • tkinter disponível no ambiente para execução da interface
  • Dependências listadas em requirements.txt

Instalação das dependências:

pip install -r requirements.txt

Instalação do projeto em modo local:

pip install -e .

Como Executar

Depois de instalar o projeto:

c14-np1

Alternativamente, a partir da raiz do projeto:

PYTHONPATH=src python -m app

Como Rodar os Testes

Execução dos testes unitários:

python -m pytest

Execução com geração de relatório JUnit:

python -m pytest --junitxml=report.xml

Cobertura de Testes

O projeto utiliza pytest-cov para gerar relatório de cobertura em HTML.

python -m pytest --cov=downloader --cov=gui --cov=app --cov-report=html

O relatório gerado fica na pasta htmlcov/.

Pipeline CI/CD

O projeto possui um pipeline configurado no GitHub Actions com as seguintes etapas:

  1. tests Executa os testes unitários e salva o relatório report.xml como artifact.

  2. build Gera a distribuição do pacote Python com python -m build e publica o conteúdo de dist/ como artifact.

  3. coverage Executa os testes com cobertura e publica o relatório HTML como artifact.

  4. pypi-publish Publica o pacote no PyPI após o sucesso das etapas de build e cobertura.

  5. notification Executa um script Python externo para enviar um e-mail com o resumo final do pipeline.

Paralelismo do Pipeline

Após a etapa tests, os jobs build e coverage podem prosseguir de forma independente. Isso atende ao requisito de possuir jobs em paralelo dentro do pipeline.

Artifacts Gerados

  • test-report: relatório dos testes unitários
  • release-dists: arquivos gerados em dist/
  • coverage-report: relatório HTML de cobertura

Deploy

O deploy adotado neste projeto é a publicação do pacote Python no PyPI, caracterizando deploy de artefato de build.

Projeto no PyPI:

  • https://pypi.org/project/c14-np1/

Para a publicação automática funcionar, o repositório precisa estar configurado no PyPI como Trusted Publisher ou usar autenticação por token de API.

Notificação por E-mail

A etapa de notificação utiliza o script send_notification.py e depende dos seguintes secrets no GitHub Actions:

  • EMAIL_USER
  • EMAIL_PASS
  • NOTIFICATION_EMAIL

Opcionalmente, também podem ser definidos:

  • SMTP_SERVER
  • SMTP_PORT

O script envia um resumo com o status de:

  • testes
  • build
  • cobertura
  • deploy

Testes Implementados

O projeto possui mais de 20 cenários de testes unitários cobrindo:

  • fluxo principal de segmentação e montagem de arquivos
  • formatação e conversão de taxas e tamanhos
  • casos de erro e entradas inválidas
  • cenários de borda, como valores vazios, zero e ordenação de partes

Arquivos de teste:

Links de Teste

Alguns arquivos públicos que podem ser usados para validar a aplicação:

Uso de IA

Ferramentas de IA foram utilizadas como apoio para:

  • revisão da estrutura do workflow CI/CD
  • refinamento da documentação
  • organização incremental das etapas do pipeline

As sugestões geradas foram revisadas e adaptadas manualmente antes de serem incorporadas ao projeto.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

c14_np1-0.1.5.tar.gz (12.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

c14_np1-0.1.5-py3-none-any.whl (13.5 kB view details)

Uploaded Python 3

File details

Details for the file c14_np1-0.1.5.tar.gz.

File metadata

  • Download URL: c14_np1-0.1.5.tar.gz
  • Upload date:
  • Size: 12.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for c14_np1-0.1.5.tar.gz
Algorithm Hash digest
SHA256 1936b4aa7e679609a98afd7c754f69a172fa85b396ad5ff3bb5e712cf6cb2061
MD5 9ace3971ad6a75a9fd627bf8ac6166e5
BLAKE2b-256 4df25bc78e54b75d2f17abf2c1685165f0b169c09f5aa0b6c342223329bdf9f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for c14_np1-0.1.5.tar.gz:

Publisher: cicd.yml on guilhermecmr/C14-NP1

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c14_np1-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: c14_np1-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 13.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for c14_np1-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 f853c783956f88c9eacc31ec141604e4a6c76a36511ea8fd9ffee1c10f5b4ce7
MD5 0880e2d46d0c97cbe44fe06b2decdff5
BLAKE2b-256 4fbc4373b1869058c3949da17ba26d1bc4b2b599b8a13376d387bdf95f4664ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for c14_np1-0.1.5-py3-none-any.whl:

Publisher: cicd.yml on guilhermecmr/C14-NP1

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page