Skip to main content

Python Password Manager

Project description

VAULT PASSWORD MANAGER

Broglio Matteo - 899562
Caputo Lorenzo - 894528
El Hanafi Nadim - 894489
Fuso Valentina - 899972
Giuggioli Daniel - 894415

Repo GitLab: https://gitlab.com/mbroglio/2025_assignment2_vaultPasswordManager.git

DESCRIZIONE

Il progetto open source scelto consiste in un password manager da linea di comando che permette la memorizzazione sicura e la consultazione delle proprie password.
Il software è scritto in Python e utilizza la libreria sqlcipher per la cifratura del database SQLite in cui sono memorizzate le password.
Il lavoro svolto si concentra sull'implementazione di una pipeline DevOps per automatizzare il ciclo di vita del software dalla creazione alla distribuzione.
Il progetto ha due branch principali:

  • main: Contiene la versione stabile del codice
  • dev: Da noi creato, al fine di garantire la presenza di un ulteriore branch dedicato all'introduzioone di nuove funzionalità non ancora definitive.
    All'interno del branch dev stata aggiunta la funzionalità di classificazione delle password sulla base del loro livello di sicurezza.

Pipeline CI/CD

CONFIGURAZIONE DELL'AMBIENTE

La prima fase consiste nel creare la configurazione di default. Automaticamente replicata prima di ogni stage. Prevede la selezione di un'immagine Docker, nello specifico Python 3.11-slim, questo sarà l'ambiente di esecuzione. Nello specifico ogni job della pipeline è preceduto da uno script, definito nella sezione before_script, che si occupa di installare le dipendenze di sistema necessarie per il suo corretto funzionamento.

STAGE BUILD

In questa fase, primo stage della pipeline, viene preparato l'ambiente di esecuzione per i successivi step. Viene creato un ambiente virtuale Python utilizzando venv, che isola le dipendenze del progetto da quelle di sistema.
Al fine di garantire compatibilità tra le librerie, viene effettuato l'aggiornamento di pip, lo strumento di gestione dei pacchetti Python dopodiché avviene l'effettivo import delle librerie tramite il file requirements.txt.
Tale operazione viene eseguita su qualsiasi branch, in quanto necessaria per la corretta esecuzione di tutti gli stage successivi.

STAGE VERIFY

Lo stage verify rappresenta la fase della pipeline in cui si effettua un controllo del codice, prima di proseguire alla fase di testing. In questa fase vengono eseguiti in parallelo due tool di analisi: Prospector (Analisi Statica) e Bandit (Controlli di Sicurezza).
Sebbene vi siano due definizioni differenti, una per ciascun tool, il fatto di appartenere allo stesso stage implica che entrambi i job vengano eseguiti contemporaneamente.
Lo stage viene implementato in qualsiasi branch, in quanto fondamentale per garantire la qualità del codice prima di procedere con i test.

VERIFY PROSPECTOR

Prospector è uno strumento di analisi statica della qualità del codice. La configurazione allow_failure: true permette alla pipeline di continuare verso gli stage successivi anche se il job termina con un warning, che sono comunque notificati.

VERIFY BANDIT

Bandit sfrutta l'analisi dell'Abstract Syntax Tree (AST) per comprendere la struttura del codice e identificare costrutti potenzialmente pericolosi. Anche in questo caso la configurazione allow_failure: true è attiva per valutare i rischi senza necessariamente arrestare la pipeline.

STAGE TEST

In questo stage viene verificato il corretto funzionamento del codice tramite l'esecuzione dei test indicati in /src/unittest/test_vault.py. Il plugin Coverage per Pytest (pytest-cov) permette di misurare la percentuale di codice effettivamente eseguita durante i test. Al termine, il comando pytest --cov=. --cov-report=term genera una tabella nella quale mostra, per ogni file:

  • Stmts: numero totale di statement, o linee di codice eseguibili
  • Miss: numero di statement non eseguiti durante i testi
  • Cover: percentuale di statement coperti. La configurazione del coverage /TOTAL.*\s+(\d+%)$/ estrae la percentuale di coverage totale.
    Questo risulta essere l'ultimo stage eseguito su tutti i branch, in quanto fondamentale per garantire il corretto funzionamento del codice prima di procedere alla fase di packaging.

STAGE PACKAGE

Lo stage Package trasforma il codice sorgente, verificato e testato, in pacchetti distribuibili e facilmente installabili in altri ambienti.
Poiché in questa fase si crea un pacchetto in preparazione alla distribuzione, lo stage viene eseguito solo sul branch main.
Il file setup.py contiene tutte le informazioni necessarie per la creazione e la distribuzione del pacchetto, come nome, versione, autore e dipendenze.

STAGE RELEASE

Come Package, viene eseguito solo sul branch main, e si occupa di pubblicare i pacchetti creati precedentemente su una repository pubblica come PyPI. Il comando twine upload dist/* -u __token__ -p $PYPI_API_TOKEN utilizza Twine come strumento di uploading, autenticandosi tramite un token API e variabili definite tramite GitLab CI/CD.

STAGE DOCUMENTATION

Questa fase genera la documentazione del progetto. Viene eseguita solo sul branch main e utilizza MkDocs per creare un sito HTML dai file Markdown nella directory docs/. Il sito generato viene archiviato come artefatto nella directory public/ e può essere utilizzato per la distribuzione su GitLab Pages.

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

2025_assignment2_vaultpasswordmanager-1.3.1.tar.gz (33.4 kB view details)

Uploaded Source

Built Distribution

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

File details

Details for the file 2025_assignment2_vaultpasswordmanager-1.3.1.tar.gz.

File metadata

File hashes

Hashes for 2025_assignment2_vaultpasswordmanager-1.3.1.tar.gz
Algorithm Hash digest
SHA256 4de71721d063f052a85e3ea55e425be648128f29511e9b08fa3b3c07e567496e
MD5 79869bf59cb813395d7ee31599f01111
BLAKE2b-256 bf29edbc4d949583a124059d86fea65a00dc61bc61b449a24b802eff8f4d2805

See more details on using hashes here.

File details

Details for the file 2025_assignment2_vaultpasswordmanager-1.3.1-py3-none-any.whl.

File metadata

File hashes

Hashes for 2025_assignment2_vaultpasswordmanager-1.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 39d974b68327d13ad26c237dd30b0fafb322d141fd4cd13a4558daa835fc2b71
MD5 d3e2b6a0ccce425078619425e672e3eb
BLAKE2b-256 98b2448b5020e49d2de85e820040ff9db07ae452c9f22153f4c27ada95471670

See more details on using hashes here.

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