> For the complete documentation index, see [llms.txt](https://cleyrop.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cleyrop.gitbook.io/docs/la-fabrique/gerer-les-images.md).

# Gérer les images

Une image Docker est une version exécutable de votre code, buildée depuis un repository Git et stockée dans le registre interne Cleyrop.

***

## Gérer les images dans le registre interne

Pour builder des images Docker depuis votre code source, vous devez connecter un repository Git externe.

### Connecter un repository privé

**Prérequis :**

* Disposer d'un repository GitLab avec votre code source et un Dockerfile
* Avoir accès à la clé SSH de la plateforme Cleyrop (disponible dans votre profil utilisateur)

La connexion à un repository privé se fait via SSH.

1. Depuis la fiche de votre App, accédez à l'onglet **Registre interne**
2. Cliquez sur **Créer une image**
3. Dans la section **Repository**, cliquez sur **+ Ajouter un repository externe**
4. Saisissez l'**URL SSH** de votre repository (ex : `git@gitlab.com:mon-org/mon-repo.git`)
5. Cliquez sur **Copier votre clé SSH** pour récupérer la clé publique de la plateforme
6. Dans GitLab, ajoutez cette clé comme **Deploy Key** :
   * Accédez à votre repository → Settings → Deploy keys
   * Cliquez sur **Add deploy key**
   * Collez la clé SSH copiée
   * Cochez **Allow write access** si nécessaire
7. Revenez sur Cleyrop et cliquez sur **Tester votre connexion**
8. Si le test réussit, cliquez sur **Ajouter**

{% hint style="info" %}
Nommer votre clé avec un nom explicite pour pouvoir la retrouver
{% endhint %}

### Connecter un repository public

Si votre repository est public, aucune deploy key n'est nécessaire.

1. Dans la section **Repository**, cliquez sur **+ Ajouter un repository externe**
2. Saisissez l'**URL HTTPS** de votre repository (ex : `https://gitlab.com/mon-org/mon-repo.git`)
3. Cliquez sur **Tester votre connexion**
4. Si le test réussit, cliquez sur **Ajouter**

### Gestion des erreurs

| Erreur                                                     | Cause                           | Solution                                                   |
| ---------------------------------------------------------- | ------------------------------- | ---------------------------------------------------------- |
| "Nous ne sommes pas parvenus à accéder à votre repository" | Clé SSH non ajoutée ou invalide | Vérifiez que la Deploy Key est bien configurée dans GitLab |
| "Permissions insuffisantes"                                | Droits de lecture manquants     | Assurez-vous que la Deploy Key a les droits de lecture     |
| "Ce repository ne contient aucun tag"                      | Repository sans tags Git        | Créez au moins un tag ou utilisez une branche              |

{% hint style="success" %}
La clé SSH de la plateforme est également consultable depuis votre **profil utilisateur** → section **Clés SSH**.
{% endhint %}

## Créer et builder une image

1. Depuis la fiche de votre App, accédez à l'onglet **Registre interne**
2. Cliquez sur **Créer une image**
3. Configurez le repository (voir section précédente)
4. Dans la section **Configuration** :
   * Renseignez le **chemin vers le Dockerfile** (ex : `/Dockerfile`)
   * Choisissez quelle référence sera prise pour build l'image : une **branche** ou un **tag** Git.
   * Choisissez la branche ou le tag en question depuis le menu déroulant.
5. Dans la section **Image** :
   * Le nom de version est pré-rempli avec le nom de la branche/tag
   * Vous pouvez le modifier si nécessaire
6. Cliquez sur **Créer**

{% hint style="info" %}
Réutiliser un nom de version existant **écrase** l'image précédente. Un message de confirmation s'affiche avant l'opération.
{% endhint %}

Le build est lancé. L'image peut avoir par les états suivants :

| Statut        | Description                                                         |
| ------------- | ------------------------------------------------------------------- |
| **En cours**  | Build en cours d'exécution                                          |
| **Valide**    | Build réussi, image disponible dans le registre                     |
| **En erreur** | Premier build échoué, aucune image disponible                       |
| **Attention** | Rebuild échoué, mais une version précédente valide reste disponible |

## Actions disponibles sur une image

* **Rebuild** : relancer un build sur la même branche/tag (récupère le dernier commit)
* **Supprimer** : supprimer l'image du registre
* **Copier l'URL** : copier l'URL de l'image pour l'utiliser dans une instance
* Visualiser le résultat du **Scan CVE** du build

<figure><img src="/files/nuF51JWd8s0qgOWVIeTs" alt="" width="563"><figcaption></figcaption></figure>

* **Consulter les logs de build :** Les logs de build sont disponibles dans la fiche détail de l'image. Ils permettent de diagnostiquer les erreurs en cas d'échec.

<figure><img src="/files/ciLn2MtFzNRmoHNvszn1" alt="" width="563"><figcaption></figcaption></figure>

### Bonnes pratiques pour le build d'images

* **Utilisez des tags Git** pour vos versions de production plutôt que des branches
* **Versionnez explicitement** vos images (ex : v1.0.0, v1.1.0) pour faciliter le rollback
* **Consultez les logs de build** en cas d'échec pour identifier rapidement les erreurs
* **Évitez d'écraser** les images en production : créez une nouvelle version plutôt que de rebuild sur le même tag

***

## Dépôts Git

Un dépôt Git est un espace de versioning Git **hébergé directement sur la plateforme Cleyrop**, sans nécessiter de repository externe ni de configuration de credentials.

Il permet de **centraliser et versionner le code source** destiné à alimenter une ou plusieurs Apps. Un dépôt peut être utilisé par plusieurs Apps simultanément, et existe indépendamment de ceux-ci.

### Accéder aux Dépôts Git

Les dépôts internes sont accessibles depuis **La** **Fabrique > Dépôts Git**

Chaque membre du projet peut consulter la liste des dépôts existants. Pour chaque dépôt, vous pouvez voir :

* Le nom du dépôt
* Son Responsable
* Le nombre d'Apps qui l'utilisent

| Rôle           | Droits                                                                   |
| -------------- | ------------------------------------------------------------------------ |
| Responsable    | Lecture, écriture, upload, suppression de fichiers, création de branches |
| Autres membres | Lecture seule                                                            |

### Créer un Dépôt Git

* Accédez à **La** **Fabrique → Dépôts Git**
* Cliquez sur **Créer**
* Renseignez le nom, l'identifiant et la description
* Cliquez sur **Créer**

Vous êtes automatiquement redirigé vers la fiche détail du dépôt. Un fichier `README.md` est créé automatiquement sur la branche `main`.

{% hint style="info" %}
Le créateur du dépôt devient automatiquement son owner.
{% endhint %}

### Explorer un dépôt - fiche détail

La fiche détail d'un dépôt est organisée en trois onglets :

* **Fichiers** — Parcourez l'arborescence, consultez et éditez les fichiers
* **Informations**

Le responsable peut éditer les informations :

* Renommez le dépôt ou modifiez sa description
* Transférez la responsabilité du dépôt à un autre Platform Manager ou Data Worker

### Gérer les fichiers d'un dépôt

Depuis l'onglet **Fichiers**, sélectionnez une branche et effectuez les actions suivantes (owner uniquement) :

**Éditer un fichier**

* Sélectionnez la branche souhaitée
* Naviguez jusqu'au fichier et ouvrez-le
* Modifiez le contenu
* Cliquez sur **Sauvegarder** — un commit est automatiquement créé

**Uploader un fichier**

* Sélectionnez la branche souhaitée
* Cliquez sur **Uploader**
* Sélectionnez un ou plusieurs fichiers (100 Mo max par fichier)
* Confirmez — un commit est automatiquement créé

**Supprimer un fichier**

* Sélectionnez la branche souhaitée
* Ouvrez le fichier
* Cliquez sur **Supprimer**
* Confirmez la suppression — un commit est automatiquement créé

**Créer une branche**

* Depuis la fiche détail, cliquez sur le sélecteur de branches
* Saisissez le nom de la nouvelle branche
* Sélectionnez la branche source (par défaut : `main`)
* Confirmez

{% hint style="info" %}
La création d'une branche n'impacte aucune App existante.
{% endhint %}

### Supprimer un dépôt Git

Seul l'owner du dépôt peut le supprimer. La suppression est irréversible.

1. Accédez à **La Fabrique → Dépôts Git**
2. Ouvrez la fiche détail du dépôt à supprimer
3. Cliquez sur **Supprimer**
4. Saisissez le nom du dépôt pour confirmer

À la suppression :

* Le dépôt est retiré de la plateforme
* Le dépôt Git associé est définitivement supprimé
* Les apps qui utilisaient ce dépôt restent accessibles mais ne pourront plus être buildées tant qu'un nouveau dépôt valide n'est pas associé

### Utiliser un dépôt Git dans une App

Un dépôt interne peut être utilisé comme source de build pour une image Docker d'une App ou d'un Tool.

Depuis la fiche de votre App, onglet **Registre interne** :

1. Cliquez sur **Créer une image**
2. Choisissez **Dépôt interne** comme source
3. Sélectionnez le dépôt souhaité
4. Choisissez le type de référence Git (branche ou tag) et la référence correspondante
5. Lancez le build

{% hint style="info" %}
Seuls les dépôts dont vous êtes owner sont listés.
{% endhint %}

Depuis la fiche détail d'une App, un onglet **Dépôts liés** liste tous les dépôts internes utilisés comme source de build pour cette App.
