Back to Gitlabhq

Administration du registre de paquets GitLab

doc-locale/fr-fr/administration/packages/_index.md

19.2.012.5 KB
Original Source

{{< details >}}

  • Niveau : Free, Premium, Ultimate
  • Offre : GitLab Self-Managed

{{< /details >}}

Pour utiliser GitLab comme dépôt privé pour divers gestionnaires de paquets courants, utilisez le registre de paquets. Vous pouvez créer et publier des paquets, qui peuvent être utilisés comme dépendances dans des projets en aval.

Formats pris en charge {#supported-formats}

Le registre de paquets prend en charge les formats suivants :

Type de paquetVersion de GitLab
Composer13.2+
Conan 112.6+
Conan 218.1+
Go13.1+
Maven11.3+
npm11.7+
NuGet12.8+
PyPI12.10+
Paquets génériques13.5+
Helm Charts14.1+

Le registre de paquets est également utilisé pour stocker les données du registre de modèles.

Contributions acceptées {#accepting-contributions}

Le tableau suivant répertorie les formats de paquets qui ne sont pas pris en charge. Envisagez de contribuer à GitLab pour ajouter la prise en charge de ces formats.

<!-- vale gitlab_base.Spelling = NO -->
FormatStatut
Chef#36889
CocoaPods#36890
Conda#36891
CRAN#36892
DebianBrouillon : Merge request
Opkg#36894
P2#36895
Puppet#36897
RPM#5932
RubyGems#803
SBT#36898
TerraformBrouillon : Merge request
Vagrant#36899
<!-- vale gitlab_base.Spelling = YES -->

Limites de débit {#rate-limits}

Lors du téléchargement de paquets en tant que dépendances dans des projets en aval, de nombreuses requêtes sont effectuées via l'API Packages. Vous pouvez donc atteindre les limites de débit appliquées aux utilisateurs et aux adresses IP. Pour résoudre ce problème, vous pouvez définir des limites de débit spécifiques pour l'API Packages. Pour plus de détails, consultez les limites de débit du registre de paquets.

Activer ou désactiver le registre de paquets {#enable-or-disable-the-package-registry}

Le registre de paquets est activé par défaut. Pour le désactiver :

{{< tabs >}}

{{< tab title="Linux package (Omnibus)" >}}

  1. Modifiez /etc/gitlab/gitlab.rb :

    ruby
    # Change to true to enable packages - enabled by default if not defined
    gitlab_rails['packages_enabled'] = false
    
  2. Enregistrez le fichier et reconfigurez GitLab :

    shell
    sudo gitlab-ctl reconfigure
    

{{< /tab >}}

{{< tab title="Helm chart (Kubernetes)" >}}

  1. Exportez les valeurs Helm :

    shell
    helm get values gitlab > gitlab_values.yaml
    
  2. Modifiez gitlab_values.yaml :

    yaml
    global:
      appConfig:
        packages:
          enabled: false
    
  3. Enregistrez le fichier et appliquez les nouvelles valeurs :

    shell
    helm upgrade -f gitlab_values.yaml gitlab gitlab/gitlab
    

{{< /tab >}}

{{< tab title="Docker" >}}

  1. Modifiez docker-compose.yml :

    yaml
    version: "3.6"
    services:
      gitlab:
        environment:
          GITLAB_OMNIBUS_CONFIG: |
            gitlab_rails['packages_enabled'] = false
    
  2. Enregistrez le fichier et redémarrez GitLab :

    shell
    docker compose up -d
    

{{< /tab >}}

{{< tab title="Self-compiled (source)" >}}

  1. Modifiez /home/git/gitlab/config/gitlab.yml :

    yaml
    production: &base
      packages:
        enabled: false
    
  2. Enregistrez le fichier et redémarrez GitLab :

    shell
    # For systems running systemd
    sudo systemctl restart gitlab.target
    
    # For systems running SysV init
    sudo service gitlab restart
    

{{< /tab >}}

{{< /tabs >}}

Modifier le chemin de stockage {#change-the-storage-path}

Par défaut, les paquets sont stockés localement, mais vous pouvez modifier l'emplacement local par défaut ou même utiliser un stockage d'objets.

Modifier le chemin de stockage local {#change-the-local-storage-path}

Par défaut, les paquets sont stockés dans un chemin local, relatif à l'installation de GitLab :

  • Linux package (Omnibus) : /var/opt/gitlab/gitlab-rails/shared/packages/
  • Self-compiled (source) : /home/git/gitlab/shared/packages/

Pour modifier le chemin de stockage local :

{{< tabs >}}

{{< tab title="Linux package (Omnibus)" >}}

  1. Modifiez /etc/gitlab/gitlab.rb et ajoutez la ligne suivante :

    ruby
    gitlab_rails['packages_storage_path'] = "/mnt/packages"
    
  2. Enregistrez le fichier et reconfigurez GitLab :

    shell
    sudo gitlab-ctl reconfigure
    

{{< /tab >}}

{{< tab title="Self-compiled (source)" >}}

  1. Modifiez /home/git/gitlab/config/gitlab.yml :

    yaml
    production: &base
      packages:
        enabled: true
        storage_path: /mnt/packages
    
  2. Enregistrez le fichier et redémarrez GitLab :

    shell
    # For systems running systemd
    sudo systemctl restart gitlab.target
    
    # For systems running SysV init
    sudo service gitlab restart
    

{{< /tab >}}

{{< /tabs >}}

Si des paquets étaient déjà stockés dans l'ancien chemin de stockage, déplacez tout depuis l'ancien vers le nouvel emplacement pour vous assurer que les paquets existants restent accessibles :

shell
mv /var/opt/gitlab/gitlab-rails/shared/packages/* /mnt/packages/

Docker et Kubernetes n'utilisent pas le stockage local.

  • Pour le Helm chart (Kubernetes) : Utilisez plutôt le stockage d'objets.
  • Pour Docker : Le répertoire /var/opt/gitlab/ est déjà monté dans un répertoire sur l'hôte. Il n'est pas nécessaire de modifier le chemin de stockage local à l'intérieur du conteneur.

Utiliser le stockage d'objets {#use-object-storage}

Au lieu de vous fier au stockage local, vous pouvez utiliser un stockage d'objets pour stocker les paquets.

Pour plus d'informations, consultez comment utiliser les paramètres consolidés de stockage d'objets.

Migrer des paquets entre le stockage d'objets et le stockage local {#migrate-packages-between-object-storage-and-local-storage}

Après avoir configuré le stockage d'objets, vous pouvez utiliser les tâches suivantes pour migrer des paquets entre le stockage local et le stockage distant. Le traitement est effectué par un worker en arrière-plan et ne nécessite aucun temps d'arrêt.

Migrer vers le stockage d'objets {#migrate-to-object-storage}

La tâche de migration déplace les fichiers de paquets et les caches de métadonnées vers le stockage d'objets : les fichiers de paquets (packages_package_files), les caches de métadonnées Helm (packages_helm_metadata_caches), les caches de métadonnées NPM (packages_npm_metadata_caches) et les symboles NuGet (packages_nuget_symbols). Si vous avez déjà exécuté la migration et qu'il reste des fichiers pour l'un de ces types, réexécutez la tâche ; elle migrera tous les fichiers locaux restants.

  1. Migrez les paquets vers le stockage d'objets :

    {{< tabs >}}

    {{< tab title="Linux package (Omnibus)" >}}

    shell
    sudo gitlab-rake "gitlab:packages:migrate"
    

    {{< /tab >}}

    {{< tab title="Self-compiled (source)" >}}

    shell
    RAILS_ENV=production sudo -u git -H bundle exec rake gitlab:packages:migrate
    

    {{< /tab >}}

    {{< /tabs >}}

  2. Suivez la progression et vérifiez que tous les paquets ont été migrés avec succès à l'aide de la console PostgreSQL :

    {{< tabs >}} {{< tab title="Linux package (Omnibus) 14.1 et antérieur" >}}

    shell
    sudo gitlab-rails dbconsole
    

    {{< /tab >}} {{< tab title="Linux package (Omnibus) 14.2 et ultérieur" >}}

    shell
    sudo gitlab-rails dbconsole --database main
    

    {{< /tab >}} {{< tab title="Self-compiled (source)" >}}

    shell
    RAILS_ENV=production sudo -u git -H psql -d gitlabhq_production
    

    {{< /tab >}} {{< /tabs >}}

  3. Vérifiez que tous les paquets ont été migrés vers le stockage d'objets avec la requête SQL suivante. Le nombre de objectstg doit être identique à total :

    sql
    SELECT count(*) AS total,
           sum(case when file_store = '1' then 1 else 0 end) AS filesystem,
           sum(case when file_store = '2' then 1 else 0 end) AS objectstg
    FROM packages_package_files;
    

    Exemple de résultat :

    plaintext
    total | filesystem | objectstg
    ------+------------+-----------
     34   |          0 |        34
    
  4. Enfin, vérifiez qu'il n'y a aucun fichier sur le disque dans le répertoire packages :

    {{< tabs >}} {{< tab title="Linux package (Omnibus)" >}}

    shell
    sudo find /var/opt/gitlab/gitlab-rails/shared/packages -type f | grep -v tmp | wc -l
    

    {{< /tab >}} {{< tab title="Self-compiled (source)" >}}

    shell
    sudo -u git find /home/git/gitlab/shared/packages -type f | grep -v tmp | wc -l
    

    {{< /tab >}} {{< /tabs >}}

Migrer du stockage d'objets vers le stockage local {#migrate-from-object-storage-to-local-storage}

Les mêmes types sont migrés que lors du passage au stockage d'objets (fichiers de paquets, caches de métadonnées Helm, caches de métadonnées NPM et symboles NuGet).

  1. Migrez les paquets du stockage d'objets vers le stockage local :

    {{< tabs >}} {{< tab title="Linux package (Omnibus)" >}}

    shell
    sudo gitlab-rake "gitlab:packages:migrate[local]"
    

    {{< /tab >}} {{< tab title="Self-compiled (source)" >}}

    shell
    RAILS_ENV=production sudo -u git -H bundle exec rake "gitlab:packages:migrate[local]"
    

    {{< /tab >}} {{< /tabs >}}

  2. Suivez la progression et vérifiez que tous les paquets ont été migrés avec succès à l'aide de la console PostgreSQL :

    {{< tabs >}} {{< tab title="Linux package (Omnibus) 14.1 et antérieur" >}}

    shell
    sudo gitlab-rails dbconsole
    

    {{< /tab >}} {{< tab title="Linux package (Omnibus) 14.2 et ultérieur" >}}

    shell
    sudo gitlab-rails dbconsole --database main
    

    {{< /tab >}} {{< tab title="Self-compiled (source)" >}}

    shell
    RAILS_ENV=production sudo -u git -H psql -d gitlabhq_production
    

    {{< /tab >}} {{< /tabs >}}

  3. Vérifiez que tous les paquets ont été migrés vers le stockage local avec la requête SQL suivante. Le nombre de filesystem doit être identique à total :

    sql
    SELECT count(*) AS total,
           sum(case when file_store = '1' then 1 else 0 end) AS filesystem,
           sum(case when file_store = '2' then 1 else 0 end) AS objectstg
    FROM packages_package_files;
    

    Exemple de résultat :

    plaintext
    total | filesystem | objectstg
    ------+------------+-----------
     34   |         34 |         0
    
  4. Enfin, vérifiez que les fichiers existent dans le répertoire packages :

    {{< tabs >}} {{< tab title="Linux package (Omnibus)" >}}

    shell
    sudo find /var/opt/gitlab/gitlab-rails/shared/packages -type f | grep -v tmp | wc -l
    

    {{< /tab >}} {{< tab title="Self-compiled (source)" >}}

    shell
    sudo -u git find /home/git/gitlab/shared/packages -type f | grep -v tmp | wc -l
    

    {{< /tab >}} {{< /tabs >}}