Up-to-date to the latest release of your favorite opensource tools.”
Rnotify, is a Python tool for tracking releases. By using it, you are notified of the latest release of your configured repositories. It uses the Github, and Gitlab APIs to scrape the data of the releases related to your repositories, and sends you a message to notify you of the latest release, by Email.
For more details, installation instructions, and configuration, please refer to the documentation below.
Why building Rnotify ?
At the time, I worked within a team, in which our technical environment heavily depends on open source projects, and we had many tools that were outdated. Being unable to track the new releases of each single opensource application, was the reason for it.
Thus, I created Rnotify, to do the job for us. A backend application, that keeps us updated with the new releases.
What are the supported developer platforms ?
At the moment, the application supports only the Github, and the Gitlab APIs. However, if there's the need to support another platform, please open an issue for it, or add it yourself, and open a pull request.
Do I need API keys for using Rnotify ?
It is not mandatory to provide any API keys. Still, both the Github, and Gitlab APIs, have some limitations without the API keys. The short answer is, unless you have too many repositories listed, or doing checks on a hourly basis, the application still works fine, without the API keys.
Please take a deeper look at the documentation Github Rate Limits, Gitlab Rate Limits.
What are the notification services supported ?
The application was designed to send notifications via emails only. This doesn't eliminate the chance to adding more services in the future.
Can I change the HTML template for the notification ?
Yes totally. Create your own HTML template, whilst respecting the data fields, and the Jinja syntax.
What are the supported RDBMS ?
At the current moment only SQLite
and PostgreSQL
are supported.
How can I run Rnotify ?
Rnotify, was designed to be run on as Function as a Service
tool, however a Dockerfile
is provided, so the application can be run on a container based system.
Please make sure to build your image first.
# Update the values for your config.toml
# Update values
cp example.config.toml config.toml
# Run docker-compose
docker-compose up
.
├── requirements # Requirements files
│ ├── common.txt
│ └── dev.txt
├── src # Source Code
│ ├── __init__.py
│ ├── config.py # Config files
│ ├── database.py # Database config
│ ├── models.py # Release db model
│ ├── main.py # main code
│ └── utils.py # Utility code
├── templates # Notification email templates
│ ├── notification.html.j2
│ └── notification.txt.j2
├── tests # Tests
│ └── test_utils.py
├── README.md # README
├── Makefile # Makefile
├── pytest.ini # Pytest config
├── example.config.toml # Config file example
├── .gitignore # Git ignore
├── docker-compose.yaml # Docker compose setup
├── .dockerignore # Docker ignore
└── Dockerfile # Dockerfile
To run this project, you will need the RNOTIFY_CONFIG_FILE
environment variable (mandatory), it refers to the configuration file.
Setup development environment
# Create virtual environment
python3 -m venv .venv/
source .venv/bin/activate
pip install --upgrade pip
# Install dependencies
make setup
# Copy configuration file
# Update the values
cp example.config.toml config.toml
Setup environment variables
export RNOTIFY_CONFIG_FILE="./config.toml"
Database
For development, we're using SQLite
as a RDBMS. In case of an alternative is being used, please make sure to update the values in the configuration.
Docker Image
I believe that each person should build his own project, having his own image, therefore I didn't provide any url to a hosted image.