
Un dépôt pour générer automatiquement et maintenir à jour une série d'images Docker via GitHub Actions.
RAUDI (Regularly and Automatically Updated Docker Images) génère et maintient automatiquement à jour une série d'Images Docker via GitHub Actions pour les outils qui ne sont pas fournis par leurs développeurs.
RAUDI est ce qui vous évitera de créer et gérer manuellement un grand nombre d'Images Docker. Chaque fois qu'un logiciel est mis à jour, vous devez mettre à jour l'Image Docker si vous voulez utiliser les dernières fonctionnalités, les dépendances ne fonctionnent plus.
C'est compliqué et chronophage.
Ne vous inquiétez plus, nous nous en occupons.
Vous pouvez soit forker ce dépôt et utiliser le workflow GitHub vous-même, soit l'utiliser localement (et gérer son exécution comme vous le souhaitez).
Si vous souhaitez forker ce dépôt, vous devez également configurer quelques secrets pour pouvoir pousser vos images sur votre compte Docker Hub personnel. Deux secrets GitHub doivent être définis :
Après avoir défini ces secrets, vous devez modifier la variable organization définie dans le fichier tools/main.py, car elle est configurée pour pousser sur Docker Hub pour SecSI.
C'est tout : allez dans Action, activez-la pour votre dépôt forké, attendez minuit, et le Workflow fera le travail lourd !
Ce dépôt peut également être exécuté localement. Les prérequis à remplir sont les suivants :
Voici la documentation pour travailler avec BuildX : https://docs.docker.com/buildx/working-with-buildx/
La phase de configuration est assez simple, il suffit de lancer les commandes suivantes :
git clone https://github.com/cybersecsi/RAUDI
cd RAUDI
pip install -r requirements.txt
Vous êtes prêt !
Pour exécuter les tests, vous devez installer pytest avec la commande pip install pytest (il n'est pas dans requirements.txt car il n'est nécessaire que pour les tests), puis vous pouvez lancer :
pytest -s
ou
python -m pytest -s
pour exécuter les tests.
RAUDI peut construire et pousser tous les outils placés dans le répertoire tools. Plusieurs options peuvent être utilisées lors de son exécution. Avant de l'utiliser localement, vous devez créer un fichier .env (vous pouvez simplement copier le fichier .env.sample) et y ajouter votre jeton d'accès personnel GitHub pour éviter la limitation de débit. Pour les utilisateurs non authentifiés, GitHub autorise jusqu'à 60 requêtes par heure, tandis que les utilisateurs authentifiés peuvent en effectuer jusqu'à 15 000 par heure. Pour cette raison, nous vous conseillons de l'ajouter ! Vous pouvez également créer un jeton d'accès personnel sans aucune portée, car tout ce que nous faisons est de lire quelques informations pour chaque dépôt GitHub.
Dans ce mode, RAUDI essaie de construire tous les outils si nécessaire. La commande pour l'exécuter est simplement :
python3 ./raudi.py --all
Dans ce mode, RAUDI essaie de construire uniquement l'outil spécifié. La commande dans ce cas est :
python3 ./raudi.py --single <nom_outil>
nom_outil DOIT être le nom du répertoire dans le dossier tools.
Étant donné que le paramètre tests a été ajouté à la structure de configuration de l'outil, il peut être utile de tester si les commandes insérées renvoient bien un code de statut 0. La commande pour tester un outil spécifique est :
python3 ./raudi.py --test <nom_outil>
nom_outil DOIT être le nom du répertoire dans le dossier tools.
Si vous voulez connaître les outils disponibles, vous pouvez exécuter cette commande :
python3 ./raudi.py --list
Si vous voulez ajouter rapidement un nouveau dossier d'outil à partir de l'un des templates disponibles, vous pouvez exécuter cette commande :
python3 ./raudi.py --bootstrap <nouveau_nom_outil>
| Option | Description | Valeur par défaut |
|---|---|---|
| --push | Pousser automatiquement vers Docker Hub | False |
| --remote | Vérifier sur Docker Hub plutôt que sur Docker local avant la construction | False |
| --force | Construire ou non si une image avec le même nom de tag a été trouvée | False |
Voici la liste actuelle des outils qui ont été ajoutés. Ce sont tous des outils qui n'ont pas d'Image Docker officielle fournie par le développeur :