Note sur le Dépôt Officiel
Ce projet est maintenu sur le GitLab de la Mairie de Villejuif. Des miroirs en lecture seule peuvent exister sur d'autres plateformes (GitHub, etc.), mais cette instance est la seule source officielle. Toutes les contributions (tickets, requêtes de fusion) doivent y être soumises.
Note on the Official Repository
This project is maintained on the Mairie de Villejuif's GitLab. Read-only mirrors may exist on other platforms (GitHub, etc.), but this instance is the single source of truth. All contributions (issues, merge requests) must be submitted here.
Un script shell robuste qui utilise l'API officielle de GitLab pour surveiller l'apparition de nouveaux dépôts publics et envoyer des notifications par email.
- Robuste et fiable : Utilise l'API JSON officielle de GitLab, éliminant les erreurs liées au scraping HTML.
- Notification unique : Envoie un email seulement lors de la première détection d'un dépôt (basé sur son ID).
- Templates d'email externes : Le contenu des emails est géré dans des fichiers
template.fr.mdettemplate.en.mdfaciles à modifier. - Deux modes d'envoi d'email : Utilise
sendmail(par défaut) ou un serveur SMTP externe. - Support bilingue : Messages en français ou anglais.
- Logging complet et Mode test (
--dry-run). - Notification CC optionnelle : Peut mettre en copie l'auteur du dernier commit.
- Sortie améliorée : Affiche des informations claires sur les dépôts traités, ignorés et les destinataires des emails.
Exécutez la commande suivante pour télécharger et installer la dernière version dans un répertoire gitlabmonitor :
curl -sSL https://gitlab.villejuif.fr/depots-public/gitlabmonitor/-/raw/main/install.sh | shAfficher les méthodes d'installation alternatives (Git, téléchargement manuel)
git clone https://gitlab.villejuif.fr/depots-public/gitlabmonitor.git
cd gitlabmonitor
chmod +x gitlab-public-repo-monitor.shVous pouvez télécharger la dernière archive .tar.gz directement :
L'historique complet des versions est aussi disponible sur la page des Releases.
Après l'installation, créez votre fichier de configuration :
cd gitlabmonitor
cp config.conf.example config.confEnsuite, éditez config.conf pour ajuster les variables à vos besoins.
| Variable | Description | Défaut |
|---|---|---|
GITLAB_URL |
URL de votre instance GitLab. | "https://gitlab.example.com" |
NOTIFICATION_LANGUAGE |
Langue des notifications (FR ou EN). |
"FR" |
EMAIL_TO |
Destinataire principal des alertes. | "admin@example.com" |
EMAIL_FROM |
Expéditeur des alertes. | "gitlab-monitor@example.com" |
EMAIL_SUBJECT_FR / _EN |
Sujet des emails (utilise $REPONAME). |
... |
SMTP_SERVER |
(Optionnel) Serveur SMTP pour l'envoi. | "" |
SMTP_PORT |
(Optionnel) Port du serveur SMTP. | "25" |
SMTP_USER |
(Optionnel) Utilisateur pour l'authentification SMTP. | "" |
SMTP_PASS |
(Optionnel) Mot de passe pour l'authentification SMTP. | "" |
SMTP_TLS |
(Optionnel) Mettre à "true" pour utiliser SMTPS. |
"" |
CC_COMMIT_AUTHOR |
Mettre à true pour mettre en copie l'auteur du dernier commit. |
false |
API_TIMEOUT |
Timeout en secondes pour les appels API. | 30 |
LOG_LEVEL |
Niveau de log (DEBUG, INFO, WARN, ERROR). |
"INFO" |
Pour mettre à jour le script vers la dernière version, exécutez la commande suivante depuis le répertoire d'installation :
./gitlab-public-repo-monitor.sh --upgradeLe script vous guidera à travers le processus de mise à jour de manière interactive et sécurisée, en préservant vos fichiers config.conf et vos templates personnalisés.
# Exécution normale
./gitlab-public-repo-monitor.sh
# Mode test (n'envoie pas d'email et ne met pas à jour le cache)
./gitlab-public-repo-monitor.sh --dry-run
# Lancer la procédure de mise à jour
./gitlab-public-repo-monitor.sh --upgradePour exécuter le script automatiquement, vous pouvez ajouter une entrée à votre crontab (crontab -e).
Exemple simple : Exécution toutes les heures.
0 * * * * /chemin/complet/vers/gitlab-public-repo-monitor.sh >> /var/log/gitlab-monitor-cron.log 2>&1Exemple avancé : Exécution tous les jours à 7h00, en s'assurant que le script s'exécute depuis son propre répertoire pour une gestion correcte des logs et des fichiers templates.
0 7 * * * cd /chemin/complet/vers/gitlab-public-repo-monitor/ && ./gitlab-public-repo-monitor.shCe projet utilise pre-commit pour garantir la qualité et la cohérence du code avant chaque commit. Les hooks sont configurés dans le fichier .pre-commit-config.yaml.
-
Installez
pre-commitsur votre poste. La méthode recommandée est viapipxpour l'isoler de vos autres projets Python :pipx install pre-commit
-
Activez les hooks Git pour ce dépôt. Depuis la racine du projet, lancez :
pre-commit install
Désormais, avant chaque commit, les outils de formatage, de linting et de détection de secrets s'exécuteront automatiquement.
A robust shell script that uses the official GitLab API to monitor for new public repositories and send email notifications.
- Robust and Reliable: Uses the official GitLab JSON API, eliminating errors from HTML scraping.
- Unique Notification: Sends an email only upon first detection (based on the repository's ID).
- External Email Templates: Email content is managed in easy-to-edit
template.fr.mdandtemplate.en.mdfiles. - Dual Email Sending Modes: Uses
sendmail(default) or an external SMTP server. - Bilingual Support: Messages in French or English.
- Complete Logging and Dry-run Mode (
--dry-run). - Optional CC Notification: Can CC the author of the last commit.
- Enhanced Output: Displays clear information about processed, skipped repositories and email recipients.
Run the following command to download and install the latest version into a gitlabmonitor directory:
curl -sSL https://gitlab.villejuif.fr/depots-public/gitlabmonitor/-/raw/main/install.sh | shShow alternative installation methods (Git, manual download)
git clone https://gitlab.villejuif.fr/depots-public/gitlabmonitor.git
cd gitlabmonitor
chmod +x gitlab-public-repo-monitor.shYou can download the latest .tar.gz archive directly:
The full release history is also available on the Releases page.
After installation, create your configuration file:
cd gitlabmonitor
cp config.conf.example config.confThen, edit config.conf to adjust the variables to your needs.
| Variable | Description | Default |
|---|---|---|
GITLAB_URL |
URL of your GitLab instance. | "https://gitlab.example.com" |
NOTIFICATION_LANGUAGE |
Notification language (FR or EN). |
"FR" |
EMAIL_TO |
Primary recipient for alerts. | "admin@example.com" |
EMAIL_FROM |
Sender of the alerts. | "gitlab-monitor@example.com" |
EMAIL_SUBJECT_FR / _EN |
Email subject (uses $REPONAME). |
... |
SMTP_SERVER |
(Optional) SMTP server for sending emails. | "" |
SMTP_PORT |
(Optional) SMTP server port. | "25" |
SMTP_USER |
(Optional) User for SMTP authentication. | "" |
SMTP_PASS |
(Optional) Password for SMTP authentication. | "" |
SMTP_TLS |
(Optional) Set to "true" to use SMTPS. |
"" |
CC_COMMIT_AUTHOR |
Set to true to CC the last commit author. |
false |
API_TIMEOUT |
Timeout in seconds for API calls. | 30 |
LOG_LEVEL |
Log level (DEBUG, INFO, WARN, ERROR). |
"INFO" |
To update the script to the latest version, run the following command from within the installation directory:
./gitlab-public-repo-monitor.sh --upgradeThe script will guide you through a safe and interactive update process, preserving your config.conf and any custom templates.
# Normal execution
./gitlab-public-repo-monitor.sh
# Dry-run mode (does not send emails or update the cache)
./gitlab-public-repo-monitor.sh --dry-run
# Run the upgrade procedure
./gitlab-public-repo-monitor.sh --upgradeTo run the script automatically, you can add an entry to your crontab (crontab -e).
Simple Example: Run every hour.
0 * * * * /full/path/to/gitlab-public-repo-monitor.sh >> /var/log/gitlab-monitor-cron.log 2>&1Advanced Example: Run every day at 7:00 AM, ensuring the script runs from its own directory for proper log and template file handling.
0 7 * * * cd /full/path/to/gitlab-public-repo-monitor/ && ./gitlab-public-repo-monitor.sh