2.2. Format d’emballage du cadre opérateur
Ce guide décrit le format d’emballage pour les opérateurs pris en charge par Operator Lifecycle Manager (OLM) dans Red Hat OpenShift Service sur AWS.
2.2.1. Format de paquet Copier lienLien copié sur presse-papiers!
Le format groupé pour les opérateurs est un format d’emballage introduit par le Cadre de l’opérateur. Afin d’améliorer l’évolutivité et de permettre aux utilisateurs en amont d’héberger leurs propres catalogues, la spécification de format groupé simplifie la distribution des métadonnées de l’opérateur.
Le bundle Opérateur représente une seule version d’un Opérateur. Les manifestes de paquets sur disque sont conteneurisés et expédiés sous forme d’image de paquet, qui est une image de conteneur non-runnable qui stocke les manifestes Kubernetes et les métadonnées de l’opérateur. Le stockage et la distribution de l’image de paquet sont ensuite gérés à l’aide d’outils de conteneurs existants tels que podman et docker et des registres de conteneurs tels que Quay.
Les métadonnées de l’opérateur peuvent inclure:
- Informations qui identifient l’opérateur, par exemple son nom et sa version.
- Des informations supplémentaires qui pilotent l’interface utilisateur, par exemple son icône et quelques exemples de ressources personnalisées (CRs).
- API requise et fournies.
- Images connexes.
Lorsque le chargement se manifeste dans la base de données du Registre de l’opérateur, les exigences suivantes sont validées:
- Le faisceau doit avoir au moins un canal défini dans les annotations.
- Chaque paquet a exactement une version de service cluster (CSV).
- Lorsqu’un CSV possède une définition de ressource personnalisée (CRD), ce CRD doit exister dans le paquet.
2.2.1.1. Les manifestes Copier lienLien copié sur presse-papiers!
Les manifestes de paquets se réfèrent à un ensemble de manifestes Kubernetes qui définissent le déploiement et le modèle RBAC de l’opérateur.
Le bundle comprend un CSV par répertoire et généralement les CRD qui définissent les API appartenant au CSV dans son répertoire /manifestes.
Exemple de mise en page de format de paquet
Autres objets pris en charge
Les types d’objets suivants peuvent également être inclus en option dans le répertoire /manifestes d’un bundle:
Les types d’objets optionnels pris en charge
-
ClusterRole
-
ClusterRoleBinding
-
ConfigMap
-
ConsoleCLIDownload
-
ConsoleLink
-
ConsoleQuickStart
-
ConsoleYamlSample
-
Budget de perturbation de Pod
-
Classe de priorité
-
À propos de PrometheusRule
-
Le rôle
-
À propos de RoleBinding
-
Le secret
-
Le service
-
Compte de ServiceAccount
-
À propos de ServiceMonitor
-
À propos de VerticalPodAutoscaler
Lorsque ces objets optionnels sont inclus dans un paquet, Operator Lifecycle Manager (OLM) peut les créer à partir du paquet et gérer leur cycle de vie avec le CSV:
Cycle de vie pour les objets optionnels
- Lorsque le CSV est supprimé, OLM supprime l’objet optionnel.
Lorsque le CSV est mis à jour:
- Lorsque le nom de l’objet optionnel est le même, OLM le met à jour en place.
- Lorsque le nom de l’objet optionnel a changé d’une version à l’autre, OLM le supprime et le recrée.
2.2.1.2. Annotations Copier lienLien copié sur presse-papiers!
Le bundle inclut également un fichier annotations.yaml dans son répertoire /metadata. Ce fichier définit des données agrégées de niveau supérieur qui aident à décrire le format et les informations du paquet sur la façon dont le paquet devrait être ajouté dans un index de paquets:
Exemple annotations.yaml
- 1
- Le type de média ou le format du paquet Opérateur. Le format Register+v1 signifie qu’il contient un CSV et ses objets Kubernetes associés.
- 2
- Le chemin dans l’image vers le répertoire qui contient l’opérateur se manifeste. Cette étiquette est réservée à une utilisation future et actuellement par défaut aux manifestes/. La valeur manifeste.v1 implique que le paquet contient des manifestes d’opérateur.
- 3
- Le chemin dans l’image vers le répertoire qui contient des fichiers de métadonnées sur le paquet. Cette étiquette est réservée à une utilisation future et actuellement par défaut aux métadonnées/. La valeur métadonnées.v1 implique que ce paquet possède les métadonnées de l’opérateur.
- 4
- Le nom du paquet.
- 5
- La liste des canaux auxquels le bundle s’abonne lorsqu’elle est ajoutée dans un Registre d’opérateur.
- 6
- Le canal par défaut auquel un opérateur doit être souscrit lorsqu’il est installé à partir d’un registre.
En cas d’inadéquation, le fichier annotations.yaml fait autorité car le registre de l’opérateur sur le groupe qui s’appuie sur ces annotations n’a accès qu’à ce fichier.
2.2.1.3. Dépendances Copier lienLien copié sur presse-papiers!
Les dépendances d’un opérateur sont listées dans un fichier de dépendances.yaml dans le dossier métadonnées d’un bundle. Ce fichier est facultatif et actuellement utilisé uniquement pour spécifier des dépendances explicites de version d’opérateur.
La liste de dépendances contient un champ de type pour chaque élément pour spécifier quel type de dépendance il s’agit. Les types de dépendances des opérateurs suivants sont pris en charge:
emballage OLM.
- Ce type indique une dépendance pour une version spécifique de l’opérateur. Les informations de dépendance doivent inclure le nom du paquet et la version du paquet au format semver. À titre d’exemple, vous pouvez spécifier une version exacte telle que 0.5.2 ou une gamme de versions telles que >0.5.1.
à propos de OLM.gvk
- Avec ce type, l’auteur peut spécifier une dépendance avec des informations de groupe/version/type (GVK), similaire à l’utilisation existante CRD et API dans un CSV. Il s’agit d’un chemin permettant aux auteurs de l’opérateur de consolider toutes les dépendances, API ou versions explicites, pour être au même endroit.
limite OLM.
- Ce type déclare des contraintes génériques sur les propriétés arbitraires de l’opérateur.
Dans l’exemple suivant, les dépendances sont spécifiées pour un opérateur Prometheus et etcd CRD:
Exemple de fichier dépendances.yaml
2.2.1.4. À propos de l’opm CLI Copier lienLien copié sur presse-papiers!
L’outil Opm CLI est fourni par le Cadre d’opérateur pour une utilisation avec le format de paquet Opm. Cet outil vous permet de créer et de maintenir des catalogues d’opérateurs à partir d’une liste de paquets d’opérateurs similaires aux référentiels de logiciels. Le résultat est une image de conteneur qui peut être stockée dans un registre de conteneurs puis installée sur un cluster.
Le catalogue contient une base de données de pointeurs vers l’opérateur manifeste du contenu qui peut être interrogé via une API incluse qui est servie lorsque l’image du conteneur est exécutée. Dans Red Hat OpenShift Service sur AWS, Operator Lifecycle Manager (OLM) peut référencer l’image dans une source de catalogue, définie par un objet CatalogSource, qui sonne l’image à intervalles réguliers pour permettre des mises à jour fréquentes aux opérateurs installés sur le cluster.
- Consultez les outils CLI pour les étapes d’installation de l’opm CLI.
2.2.2. Faits saillants Copier lienLien copié sur presse-papiers!
Les catalogues basés sur des fichiers sont la dernière itération du format de catalogue dans Operator Lifecycle Manager (OLM). Il s’agit d’un texte simple (JSON ou YAML) et d’une évolution de configuration déclarative du format de base de données SQLite antérieur, et il est entièrement rétrocompatible. L’objectif de ce format est d’activer l’édition de catalogue de l’opérateur, la composabilité et l’extensibilité.
- Édition de l’édition
Avec les catalogues basés sur des fichiers, les utilisateurs qui interagissent avec le contenu d’un catalogue sont en mesure d’apporter des modifications directes au format et de vérifier que leurs modifications sont valides. Comme ce format est en texte brut JSON ou YAML, les mainteneurs de catalogue peuvent facilement manipuler les métadonnées de catalogue à la main ou avec des outils JSON ou YAML largement connus et pris en charge, tels que le jq CLI.
Cette modifiabilité permet les fonctionnalités suivantes et les extensions définies par l’utilisateur:
- La promotion d’un faisceau existant vers un nouveau canal
- Changer le canal par défaut d’un paquet
- Algorithmes personnalisés pour ajouter, mettre à jour et supprimer les chemins de mise à niveau
- Composabilité
Les catalogues basés sur des fichiers sont stockés dans une hiérarchie de répertoire arbitraire, ce qui permet la composition du catalogue. À titre d’exemple, envisagez deux répertoires de catalogues distincts basés sur des fichiers : catalogA et catalogB. Le mainteneur de catalogue peut créer un nouveau catalogue combiné en créant un nouveau catalogue C et en copiant le catalogueA et le catalogueB.
Cette composabilité permet des catalogues décentralisés. Le format permet aux auteurs de l’opérateur de maintenir des catalogues spécifiques à l’opérateur, et il permet aux mainteneurs de construire trivialement un catalogue composé de catalogues individuels de l’opérateur. Les catalogues basés sur des fichiers peuvent être composés en combinant plusieurs autres catalogues, en extrayant des sous-ensembles d’un catalogue, ou une combinaison de ces deux catalogues.
NoteLes paquets en double et les paquets dupliqués dans un paquet ne sont pas autorisés. La commande de validation opm renvoie une erreur si des doublons sont trouvés.
Les auteurs de l’opérateur étant plus familiers avec leur opérateur, ses dépendances et sa compatibilité de mise à niveau, ils sont en mesure de maintenir leur propre catalogue spécifique à l’opérateur et d’avoir un contrôle direct sur son contenu. Avec les catalogues basés sur des fichiers, les auteurs de l’opérateur possèdent la tâche de construire et de maintenir leurs paquets dans un catalogue. Cependant, les mainteneurs de catalogues composites ne possèdent que la tâche de gérer les paquets dans leur catalogue et de le publier aux utilisateurs.
- Extensibilité
La spécification de catalogue basée sur des fichiers est une représentation de bas niveau d’un catalogue. Bien qu’il puisse être maintenu directement sous sa forme de bas niveau, les mainteneurs de catalogue peuvent construire des extensions intéressantes sur le dessus qui peuvent être utilisées par leur propre outil personnalisé pour effectuer un certain nombre de mutations.
À titre d’exemple, un outil pourrait traduire une API de haut niveau, telle que (mode=semver), jusqu’au format de catalogue de bas niveau basé sur des fichiers pour les chemins de mise à niveau. Il se peut qu’un mainteneur de catalogue doive personnaliser toutes les métadonnées du paquet en ajoutant une nouvelle propriété à des paquets répondant à certains critères.
Bien que cette extensibilité permette de développer des outils officiels supplémentaires en plus des API de bas niveau pour le futur Red Hat OpenShift Service sur les versions AWS, l’avantage majeur est que les responsables du catalogue ont également cette capacité.
À partir de Red Hat OpenShift Service sur AWS 4.11, le catalogue par défaut Red Hat fourni par l’opérateur publie dans le format de catalogue basé sur des fichiers. Les catalogues de Red Hat fournis par défaut pour Red Hat OpenShift Service sur AWS 4.6 à 4.10 publiés dans le format de base de données SQLite obsolète.
Les sous-commandes opm, les drapeaux et les fonctionnalités liés au format de base de données SQLite sont également obsolètes et seront supprimés dans une version ultérieure. Les fonctionnalités sont toujours prises en charge et doivent être utilisées pour les catalogues utilisant le format de base de données SQLite obsolète.
La plupart des sous-commandes et des drapeaux opm pour travailler avec le format de base de données SQLite, tels que le prune de l’index opm, ne fonctionnent pas avec le format de catalogue basé sur des fichiers. Consultez Gérer les catalogues personnalisés pour plus d’informations sur le travail avec les catalogues basés sur les fichiers.
2.2.2.1. La structure des répertoires Copier lienLien copié sur presse-papiers!
Les catalogues basés sur des fichiers peuvent être stockés et chargés à partir de systèmes de fichiers basés sur des répertoires. L’opm CLI charge le catalogue en marchant le répertoire racine et en récursant dans des sous-répertoires. Le CLI tente de charger tous les fichiers qu’il trouve et échoue si des erreurs se produisent.
Les fichiers non catalog peuvent être ignorés en utilisant les fichiers .indexignore, qui ont les mêmes règles pour les modèles et la préséance que les fichiers .gitignore.
Exemple de fichier .indexignore
Les responsables du catalogue ont la flexibilité de choisir la disposition souhaitée, mais il est recommandé de stocker les blobs de catalogue de chaque paquet dans des sous-répertoires distincts. Chaque fichier individuel peut être soit JSON ou YAML; il n’est pas nécessaire que chaque fichier d’un catalogue utilise le même format.
La structure de base recommandée
Cette structure recommandée a la propriété que chaque sous-répertoire de la hiérarchie des répertoires est un catalogue autonome, ce qui rend les opérations triviales de système de fichiers triviales de composition, de découverte et de navigation du catalogue. Le catalogue peut également être inclus dans un catalogue parent en le copiant dans le répertoire racine du catalogue parent.
2.2.2.2. Les schémas Copier lienLien copié sur presse-papiers!
Les catalogues basés sur des fichiers utilisent un format, basé sur la spécification du langage CUE, qui peut être étendu avec des schémas arbitraires. Le schéma _Meta CUE suivant définit le format auquel tous les blobs de catalogues basés sur des fichiers doivent adhérer:
_Méta schema
Aucun schéma CUE listé dans cette spécification ne doit être considéré comme exhaustif. La commande de validation opm a des validations supplémentaires qui sont difficiles ou impossibles à exprimer de manière concise dans CUE.
Le catalogue de gestion du cycle de vie de l’opérateur (OLM) utilise actuellement trois schémas (olm.package, olm.channel et olm.bundle), qui correspondent aux concepts de paquets et de paquets existants d’OLM.
Chaque paquet Opérateur dans un catalogue nécessite exactement un blob olm.package, au moins un blob olm.channel et un ou plusieurs blobs olm.bundle.
Les schémas Olm.* sont réservés aux schémas définis par OLM. Les schémas personnalisés doivent utiliser un préfixe unique, tel qu’un domaine que vous possédez.
2.2.2.2.1. schéma OLM.package Copier lienLien copié sur presse-papiers!
Le schéma olm.package définit les métadonnées au niveau du paquet pour un opérateur. Cela inclut son nom, sa description, son canal par défaut et son icône.
Exemple 2.1. schéma OLM.package
2.2.2.2.2. schéma OLM.canal Copier lienLien copié sur presse-papiers!
Le schéma olm.channel définit un canal à l’intérieur d’un paquet, les entrées de paquet qui sont membres du canal et les chemins de mise à niveau pour ces paquets.
Lorsqu’une entrée de paquet représente un bord dans plusieurs blobs olm.canal, elle ne peut apparaître qu’une seule fois par canal.
Il est valable pour une valeur de remplacement d’une entrée de référencer un autre nom de paquet qui ne peut pas être trouvé dans ce catalogue ou un autre catalogue. Cependant, tous les autres invariants de canal doivent tenir vrai, comme un canal n’ayant pas plusieurs têtes.
Exemple 2.2. schéma OLM.canal
Lors de l’utilisation du champ skipRange, les versions de l’opérateur sauté sont taillées à partir du graphique de mise à jour et sont plus longues installables par les utilisateurs avec la propriété spec.startingCSV des objets d’abonnement.
Il est possible de mettre à jour progressivement un opérateur tout en gardant les versions précédemment installées à la disposition des utilisateurs pour l’installation future en utilisant à la fois le champ skipRange et le champ de remplacement. Assurez-vous que le champ remplace la version précédente immédiate de la version de l’opérateur en question.
2.2.2.2.3. schéma OLM.bundle Copier lienLien copié sur presse-papiers!
Exemple 2.3. schéma OLM.bundle
2.2.2.2.4. schéma OLM.déprécations Copier lienLien copié sur presse-papiers!
Le schéma optionnel olm.deprecations définit les informations de déprécation pour les paquets, les paquets et les canaux dans un catalogue. Les auteurs d’opérateurs peuvent utiliser ce schéma pour fournir des messages pertinents sur leurs opérateurs, tels que l’état du support et les chemins de mise à niveau recommandés, aux utilisateurs exécutant ces opérateurs à partir d’un catalogue.
Lorsque ce schéma est défini, le service Red Hat OpenShift sur la console web AWS affiche des badges d’avertissement pour les éléments affectés de l’opérateur, y compris tous les messages de déprécation personnalisés, sur les pages pré- et post-installation de l’opérateur.
L’entrée de schéma olm.deprecations contient un ou plusieurs des types de référence suivants, qui indique la portée de déprécation. Après l’installation de l’opérateur, tous les messages spécifiés peuvent être considérés comme des conditions d’état sur l’objet d’abonnement associé.
Le type | Champ d’application | État du statut |
---|---|---|
| Représente l’ensemble du paquet |
|
| Il représente un canal |
|
| Il représente une version de bundle |
|
Chaque type de référence a ses propres exigences, comme détaillé dans l’exemple suivant.
Exemple 2.4. Exemple de schéma olm.deprecations avec chaque type de référence
- 1
- Chaque schéma de déprécation doit avoir une valeur de paquet, et cette référence de paquet doit être unique dans tout le catalogue. Il ne doit pas y avoir de champ de nom associé.
- 2
- Le schéma olm.package ne doit pas inclure un champ nom, car il est déterminé par le champ de paquet défini plus tôt dans le schéma.
- 3
- Les champs de messages, pour tout type de référence, doivent être d’une longueur non nulle et représenté comme un blob de texte opaque.
- 4
- Le champ nom du schéma olm.channel est requis.
- 5
- Le champ nom du schéma olm.bundle est requis.
La fonction de déprécation ne tient pas compte du chevauchement de la déprécation, par exemple le paquet par rapport au canal par rapport au faisceau.
Les auteurs de l’opérateur peuvent enregistrer les entrées de schéma olm.deprecations en tant que fichier deprecations.yaml dans le même répertoire que le fichier index.yaml du paquet:
Exemple de structure de répertoire pour un catalogue avec déprécations
my-catalog └── my-operator ├── index.yaml └── deprecations.yaml
my-catalog
└── my-operator
├── index.yaml
└── deprecations.yaml
2.2.2.3. Les propriétés Copier lienLien copié sur presse-papiers!
Les propriétés sont des morceaux arbitraires de métadonnées qui peuvent être attachés à des schémas de catalogue basés sur des fichiers. Le champ type est une chaîne qui spécifie efficacement la signification sémantique et syntaxique du champ de valeur. La valeur peut être tout JSON ou YAML arbitraire.
L’OLM définit une poignée de types de propriétés, encore une fois en utilisant le préfixe Olm.* réservé.
2.2.2.3.1. immobilier OLM.package Copier lienLien copié sur presse-papiers!
La propriété olm.package définit le nom et la version du paquet. Il s’agit d’une propriété requise sur les paquets, et il doit y avoir exactement l’une de ces propriétés. Le champ packageName doit correspondre au champ paquet de première classe du paquet, et le champ de version doit être une version sémantique valide.
Exemple 2.5. immobilier OLM.package
2.2.2.3.2. immobilier OLM.gvk Copier lienLien copié sur presse-papiers!
La propriété olm.gvk définit le groupe/version/type (GVK) d’une API Kubernetes fournie par ce paquet. Cette propriété est utilisée par OLM pour résoudre un paquet avec cette propriété en tant que dépendance pour d’autres bundles qui répertorient le même GVK qu’une API requise. Le GVK doit adhérer aux validations Kubernetes GVK.
Exemple 2.6. immobilier OLM.gvk
2.2.2.3.3. conditions d’utilisation OLM.package.required Copier lienLien copié sur presse-papiers!
La propriété olm.package.required définit le nom du paquet et la gamme de versions d’un autre paquet que ce paquet nécessite. Dans chaque propriété de paquet requise, une liste de paquets, OLM s’assure qu’un opérateur est installé sur le cluster pour le paquet listé et dans la gamme de versions requise. Le champ versionRange doit être une plage sémantique valide (semver).
Exemple 2.7. la propriété OLM.package.required
2.2.2.3.4. conditions d’utilisation OLM.gvk.required Copier lienLien copié sur presse-papiers!
La propriété olm.gvk.required définit le groupe/version/type (GVK) d’une API Kubernetes que ce paquet nécessite. Dans chaque propriété GVK requise, une liste de paquets, OLM s’assure qu’un opérateur est installé sur le cluster qui le fournit. Le GVK doit adhérer aux validations Kubernetes GVK.
Exemple 2.8. la propriété OLM.gvk.required
2.2.2.4. Exemple de catalogue Copier lienLien copié sur presse-papiers!
Avec les catalogues basés sur des fichiers, les responsables du catalogue peuvent se concentrer sur la curation et la compatibilité de l’opérateur. Étant donné que les auteurs de l’opérateur ont déjà produit des catalogues spécifiques à l’opérateur pour leurs opérateurs, les responsables du catalogue peuvent construire leur catalogue en rendant chaque catalogue Opérateur dans un sous-répertoire du répertoire racine du catalogue.
Il existe de nombreuses façons possibles de créer un catalogue basé sur des fichiers; les étapes suivantes décrivent une approche simple:
Conserver un fichier de configuration unique pour le catalogue, contenant des références d’image pour chaque opérateur dans le catalogue:
Exemple de fichier de configuration du catalogue
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exécutez un script qui analyse le fichier de configuration et crée un nouveau catalogue à partir de ses références:
Exemple de script
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.2.5. Lignes directrices Copier lienLien copié sur presse-papiers!
Considérez les directives suivantes lors de la maintenance des catalogues basés sur des fichiers.
2.2.2.5.1. Des paquets immuables Copier lienLien copié sur presse-papiers!
L’avis général de Operator Lifecycle Manager (OLM) est que les images groupées et leurs métadonnées doivent être traitées comme immuables.
Lorsqu’un paquet cassé a été poussé à un catalogue, vous devez supposer qu’au moins un de vos utilisateurs a été mis à niveau vers ce paquet. Basé sur cette hypothèse, vous devez libérer un autre paquet avec un chemin de mise à niveau à partir du paquet cassé pour s’assurer que les utilisateurs avec le paquet cassé installé reçoivent une mise à niveau. L’OLM ne réinstallera pas un paquet installé si le contenu de ce paquet est mis à jour dans le catalogue.
Cependant, il y a certains cas où un changement dans les métadonnées du catalogue est préféré:
- Canal promotion: Si vous avez déjà publié un paquet et décidez plus tard que vous souhaitez l’ajouter à un autre canal, vous pouvez ajouter une entrée pour votre paquet dans un autre blob olm.channel.
- De nouveaux chemins de mise à niveau: Si vous publiez une nouvelle version de paquet 1.2.z, par exemple 1.2.4, mais 1.3.0 est déjà publié, vous pouvez mettre à jour les métadonnées du catalogue pour 1.3.0 pour sauter 1.2.4.
2.2.2.5.2. Contrôle des sources Copier lienLien copié sur presse-papiers!
Les métadonnées du catalogue doivent être stockées dans le contrôle de la source et traitées comme source de vérité. Les mises à jour des images de catalogue devraient inclure les étapes suivantes:
- Actualisez le répertoire du catalogue contrôlé par la source avec un nouveau commit.
- Créez et poussez l’image du catalogue. Employez une taxonomie de marquage cohérente, telle que :dernière ou :<target_cluster_version>, afin que les utilisateurs puissent recevoir des mises à jour d’un catalogue au fur et à mesure qu’ils deviennent disponibles.
2.2.2.6. L’utilisation de CLI Copier lienLien copié sur presse-papiers!
En ce qui concerne les instructions concernant la création de catalogues basés sur des fichiers à l’aide de l’opm CLI, voir Gérer les catalogues personnalisés. En ce qui concerne la documentation de référence sur les commandes opm CLI liées à la gestion des catalogues basés sur des fichiers, consultez les outils CLI.
2.2.2.7. Automatisation Copier lienLien copié sur presse-papiers!
Les auteurs d’opérateurs et les responsables du catalogue sont encouragés à automatiser la maintenance de leur catalogue avec des flux de travail CI/CD. Les mainteneurs de catalogues peuvent encore s’améliorer à ce sujet en construisant l’automatisation GitOps pour accomplir les tâches suivantes:
- Les auteurs de la demande de tirage (PR) sont autorisés à apporter les modifications demandées, par exemple en mettant à jour la référence d’image de leur paquet.
- Assurez-vous que les mises à jour du catalogue passent la commande opm valid.
- Assurez-vous que les références mises à jour du paquet ou de l’image du catalogue existent, que les images du catalogue s’exécutent avec succès dans un cluster, et que les opérateurs de ce paquet peuvent être installés avec succès.
- Fusionner automatiquement les PR qui passent les vérifications précédentes.
- Automatiquement reconstruire et republier l’image du catalogue.