doc-locale/fr-fr/administration/packages/_index.md
{{< details >}}
{{< /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.
Le registre de paquets prend en charge les formats suivants :
| Type de paquet | Version de GitLab |
|---|---|
| Composer | 13.2+ |
| Conan 1 | 12.6+ |
| Conan 2 | 18.1+ |
| Go | 13.1+ |
| Maven | 11.3+ |
| npm | 11.7+ |
| NuGet | 12.8+ |
| PyPI | 12.10+ |
| Paquets génériques | 13.5+ |
| Helm Charts | 14.1+ |
Le registre de paquets est également utilisé pour stocker les données du registre de modèles.
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 -->| Format | Statut |
|---|---|
| Chef | #36889 |
| CocoaPods | #36890 |
| Conda | #36891 |
| CRAN | #36892 |
| Debian | Brouillon : Merge request |
| Opkg | #36894 |
| P2 | #36895 |
| Puppet | #36897 |
| RPM | #5932 |
| RubyGems | #803 |
| SBT | #36898 |
| Terraform | Brouillon : Merge request |
| Vagrant | #36899 |
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.
Le registre de paquets est activé par défaut. Pour le désactiver :
{{< tabs >}}
{{< tab title="Linux package (Omnibus)" >}}
Modifiez /etc/gitlab/gitlab.rb :
# Change to true to enable packages - enabled by default if not defined
gitlab_rails['packages_enabled'] = false
Enregistrez le fichier et reconfigurez GitLab :
sudo gitlab-ctl reconfigure
{{< /tab >}}
{{< tab title="Helm chart (Kubernetes)" >}}
Exportez les valeurs Helm :
helm get values gitlab > gitlab_values.yaml
Modifiez gitlab_values.yaml :
global:
appConfig:
packages:
enabled: false
Enregistrez le fichier et appliquez les nouvelles valeurs :
helm upgrade -f gitlab_values.yaml gitlab gitlab/gitlab
{{< /tab >}}
{{< tab title="Docker" >}}
Modifiez docker-compose.yml :
version: "3.6"
services:
gitlab:
environment:
GITLAB_OMNIBUS_CONFIG: |
gitlab_rails['packages_enabled'] = false
Enregistrez le fichier et redémarrez GitLab :
docker compose up -d
{{< /tab >}}
{{< tab title="Self-compiled (source)" >}}
Modifiez /home/git/gitlab/config/gitlab.yml :
production: &base
packages:
enabled: false
Enregistrez le fichier et redémarrez GitLab :
# For systems running systemd
sudo systemctl restart gitlab.target
# For systems running SysV init
sudo service gitlab restart
{{< /tab >}}
{{< /tabs >}}
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.
Par défaut, les paquets sont stockés dans un chemin local, relatif à l'installation de GitLab :
/var/opt/gitlab/gitlab-rails/shared/packages//home/git/gitlab/shared/packages/Pour modifier le chemin de stockage local :
{{< tabs >}}
{{< tab title="Linux package (Omnibus)" >}}
Modifiez /etc/gitlab/gitlab.rb et ajoutez la ligne suivante :
gitlab_rails['packages_storage_path'] = "/mnt/packages"
Enregistrez le fichier et reconfigurez GitLab :
sudo gitlab-ctl reconfigure
{{< /tab >}}
{{< tab title="Self-compiled (source)" >}}
Modifiez /home/git/gitlab/config/gitlab.yml :
production: &base
packages:
enabled: true
storage_path: /mnt/packages
Enregistrez le fichier et redémarrez GitLab :
# 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 :
mv /var/opt/gitlab/gitlab-rails/shared/packages/* /mnt/packages/
Docker et Kubernetes n'utilisent pas le stockage local.
/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.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.
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.
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.
Migrez les paquets vers le stockage d'objets :
{{< tabs >}}
{{< tab title="Linux package (Omnibus)" >}}
sudo gitlab-rake "gitlab:packages:migrate"
{{< /tab >}}
{{< tab title="Self-compiled (source)" >}}
RAILS_ENV=production sudo -u git -H bundle exec rake gitlab:packages:migrate
{{< /tab >}}
{{< /tabs >}}
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" >}}
sudo gitlab-rails dbconsole
{{< /tab >}} {{< tab title="Linux package (Omnibus) 14.2 et ultérieur" >}}
sudo gitlab-rails dbconsole --database main
{{< /tab >}} {{< tab title="Self-compiled (source)" >}}
RAILS_ENV=production sudo -u git -H psql -d gitlabhq_production
{{< /tab >}} {{< /tabs >}}
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 :
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 :
total | filesystem | objectstg
------+------------+-----------
34 | 0 | 34
Enfin, vérifiez qu'il n'y a aucun fichier sur le disque dans le répertoire packages :
{{< tabs >}} {{< tab title="Linux package (Omnibus)" >}}
sudo find /var/opt/gitlab/gitlab-rails/shared/packages -type f | grep -v tmp | wc -l
{{< /tab >}} {{< tab title="Self-compiled (source)" >}}
sudo -u git find /home/git/gitlab/shared/packages -type f | grep -v tmp | wc -l
{{< /tab >}} {{< /tabs >}}
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).
Migrez les paquets du stockage d'objets vers le stockage local :
{{< tabs >}} {{< tab title="Linux package (Omnibus)" >}}
sudo gitlab-rake "gitlab:packages:migrate[local]"
{{< /tab >}} {{< tab title="Self-compiled (source)" >}}
RAILS_ENV=production sudo -u git -H bundle exec rake "gitlab:packages:migrate[local]"
{{< /tab >}} {{< /tabs >}}
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" >}}
sudo gitlab-rails dbconsole
{{< /tab >}} {{< tab title="Linux package (Omnibus) 14.2 et ultérieur" >}}
sudo gitlab-rails dbconsole --database main
{{< /tab >}} {{< tab title="Self-compiled (source)" >}}
RAILS_ENV=production sudo -u git -H psql -d gitlabhq_production
{{< /tab >}} {{< /tabs >}}
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 :
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 :
total | filesystem | objectstg
------+------------+-----------
34 | 34 | 0
Enfin, vérifiez que les fichiers existent dans le répertoire packages :
{{< tabs >}} {{< tab title="Linux package (Omnibus)" >}}
sudo find /var/opt/gitlab/gitlab-rails/shared/packages -type f | grep -v tmp | wc -l
{{< /tab >}} {{< tab title="Self-compiled (source)" >}}
sudo -u git find /home/git/gitlab/shared/packages -type f | grep -v tmp | wc -l
{{< /tab >}} {{< /tabs >}}