Python Password Manager
Project description
VAULT PASSWORD MANAGER
Broglio Matteo - 899562
Caputo Lorenzo - 894528
El Hanafi Nadim - 894489
Fuso Valentina - 899972
Giuggioli Daniel - 894415
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, che contiene la versione stabile del codice, e dev, da noi creato, al fine di garantire la presenza di un ulteriore branch dedicato all'introduzioone di nuove funzionalità non ancora definitive. In particolar modo è stata aggiunta la funzionalità di classificazione delle password sulla base del loro livello di sicurezza.\
Di seguito la documentazione di ogni singola operazione (stage).
DEFAULT
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.\
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./
Il file setup.py contiene tutte le informazioni necessarie per la creazione e la distribuzione del pacchetto, come nome, versione, autore e dipendenze.
STAGE DOCUMENTATION
Quest'ultimo stage, eseguito solo sul branch main, genera la docuementazione del progetto. Viene utilizzato MkDocsper convertire i file Markdown nella cartella docs/ in un sito web HTML.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file 2025_assignment2_vaultpasswordmanager-1.2.0.tar.gz.
File metadata
- Download URL: 2025_assignment2_vaultpasswordmanager-1.2.0.tar.gz
- Upload date:
- Size: 33.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
299ffbc786be49ffe3537f655efa278fb7b3524e0d344a268ac225a20bdc4aae
|
|
| MD5 |
d159e43d69bf686c6474156819a3c8fd
|
|
| BLAKE2b-256 |
cb56933d53269ee9f4523e0fdced0e794089cd7a34ad155af4c3f9f59fec256f
|
File details
Details for the file 2025_assignment2_vaultpasswordmanager-1.2.0-py3-none-any.whl.
File metadata
- Download URL: 2025_assignment2_vaultpasswordmanager-1.2.0-py3-none-any.whl
- Upload date:
- Size: 48.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c4d6cda6d1846a50db32361846fe537c0021d4654dd5d978b59c3b9d3fc0153
|
|
| MD5 |
1c8543d395096b86cb9c30e186258bf8
|
|
| BLAKE2b-256 |
5b1b68f25e769ba60daaa21c2825cab7a61ef44668ec8c4cd2a0ba8a327a0223
|