RUNES
Des pipelines générés selon vos règles.
RUNES génère vos workflows d'intégration continue à partir d'un fichier de conventions et de vos règles de sécurité. Vous décrivez la règle une fois ; RUNES l'applique à chaque dépôt.
Où en est RUNES
RUNES n'est pas encore publié, et nous ne sommes pas en mesure d'en faire la démonstration aujourd'hui. La partie intégration continue sera libre et open source ; la partie déploiement continu s'appuie sur notre contrôleur d'infrastructure. Écrivez-nous pour être prévenu de la publication.
La convention non appliquée n'est pas une convention.
Les règles de sécurité écrites dans un document sont appliquées de façon inégale d'un dépôt à l'autre. Générer le pipeline plutôt que le documenter supprime l'écart entre la règle et son application.
Ce que fait RUNES
5 capacités
-
Toutes les forges principales
GitHub, GitLab, Forgejo et Gitea. Forgejo et Gitea ne sont pas une note de bas de page : ce sont les forges que font tourner les organisations qui tiennent à héberger leur code elles-mêmes, et c'est sur l'une d'elles que nous hébergeons le nôtre.
-
Une règle, un fichier YAML
Les conventions communes (nomenclature, artefacts attendus) vivent dans un dépôt global. Chaque dépôt ne porte que ses valeurs propres : les artefacts que produit son intégration continue, et les cibles de déploiement à créer, machine virtuelle, conteneur LXC ou conteneur applicatif.
-
Règles de sécurité par défaut
Versions d'actions épinglées, génération de SBOM, recherche de secrets, analyse des images de conteneurs, signature des artefacts. Ce sont les réglages par défaut du pipeline généré, pas une option laissée à la discipline de chaque dépôt.
-
Quarante dépôts ne basculent pas en une fois
Vous migrez dépôt par dépôt, à votre rythme, et un mode dry-run montre ce qui serait écrit avant que quoi que ce soit ne le soit. Les workflows écrits à la main restent en place tant qu'ils n'ont pas été repris.
-
Quand la convention change
Une modification du dépôt global se propage aux dépôts qui en héritent ; ce qui est propre à un dépôt s'y modifie. La régénération passe par une pull request : ce sont vos mainteneurs qui la relisent et qui décident, selon votre propre processus.
La règle, en un fichier
Les conventions communes vivent dans un dépôt global. Chaque dépôt ne porte que ce qui lui est propre : les artefacts que son intégration continue produit, et les cibles que son déploiement doit créer.
# runes.yaml
extends: pagma/conventions@v1
ci:
artifacts:
- name: api
type: container
registry: registry.example.fr/api
cd:
targets:
- kind: vm
host: proxmox-prod
- kind: lxc
host: proxmox-prod
- kind: container
runtime: podman
Exemple illustratif. Le format n'est pas encore stabilisé ; cette page sera mise à jour avec le format publié.
Avec votre infrastructure
Relié à l'infrastructure que nous exploitons, RUNES ne s'arrête pas à l'intégration continue : les pipelines générés demandent au contrôleur de créer les machines et les conteneurs cibles.
Parlons de vos pipelines.
Quelles forges utilisez-vous, et quelles règles voulez-vous appliquer à tous vos dépôts ? Écrivez-nous : nous vous prévenons à la publication, et votre cas orientera ce que nous construisons.
Détail technique
- Format des règles
- YAML. Un dépôt global pour les conventions communes, un fichier par dépôt pour ses valeurs propres.
- Forges
- GitHub, GitLab, Forgejo, Gitea et les autres forges git.
- Génération
- Pipelines multi-plateforme à partir d'un jeu de conventions unique.
- Réglages par défaut
- Actions épinglées, SBOM, recherche de secrets, analyse des images de conteneurs, artefacts signés.
- Exécution
- Extension VS Code et interface en ligne de commande. Le déploiement continu est exécuté par le runner RUNES.
- Licence
- Intégration continue libre et open source ; déploiement continu inclus dans la prestation d'infrastructure.
Modalités tarifaires
- RUNES CI
- Libre et open source.
- RUNES CD
- Inclus dans la prestation d'infrastructure.
- Dépôts
- Sans limite.