Thesis Tracker is a Python-based project designed to collect, process, and publish metadata from French academic theses using the theses.fr API. The project is automated using GitHub Actions, with an optional Docker setup for consistent and reproducible environments.
- Data Collection: Automatically collects and processes thesis.
- Metadata Extraction: Extracts relevant information such as thesis title, author, university, and defense date.
- Automated Workflows: Uses
GitHub Actions
for automating unit tests for core functionalities usingpytest
, scan vulnerabilities withsafety
andbandit
. - Docker Integration: Provides a
Docker
setup for consistent environments across development and production.
- Python 3.11+
- Poetry for dependency management
- Pytest for running tests
- Docker (optional, for containerized environments)
-
Clone the repository:
git clone https://github.com/pierrehanne/thesis-tracker.git cd thesis-tracker
-
Install dependencies using Poetry:
poetry install
-
Activate the virtual environment:
poetry shell
To start collecting thesis data, run the main script:
python thesis_tracker.py
This project uses GitHub Actions for Continuous Integration (CI) and Continuous Deployment (CD). The CI/CD pipeline is defined in a YAML file and consists of three main jobs:
- Linting: Checks the code for formatting, import order, and style issues.
- Tools:
isort
,Flake8
,Black
- Python version: 3.11
- Poetry is used to install dependencies and manage the environment.
- Tools:
- Security Scans: Runs security scans to ensure there are no vulnerabilities in dependencies or code.
- Tools:
Safety
,Bandit
- Python version: 3.11
- Runs after the linting job.
- Tools:
- Testing: Runs unit tests in a Docker container to ensure reproducibility and consistency across environments.
- Docker Build: The pipeline builds a Docker image using Buildx for caching.
- Run Tests: The Docker container runs the pytest tests inside the built image.
You can find the workflow files in the .github/workflows directory
.
Contributions are welcome! Please submit a pull request or open an issue to discuss any changes. When contributing, ensure that new code is covered with appropriate unit tests.
This project is licensed under the MIT License. See the LICENSE file for details.
For any questions or suggestions, feel free to open an issue or reach out to the project maintainer.