Cet article contient des recommandations et des conseils pour vous aider à configurer Dependabot pour accéder à votre registre privé, ainsi que les éléments suivants :
- Extraits détaillés du
dependabot.ymlfichier de configuration pour chaque gestionnaire de package - Limitations ou mises en garde importantes
- Étapes expliquant comment tester le fonctionnement de la configuration
- Options de configuration supplémentaires, où qu’elles soient appropriées (par exemple, npm a un fichier de configuration qui doit être défini)
- Conseils sur la configuration des hôtes de Registre
Vous trouverez des conseils détaillés pour la configuration des gestionnaires de packages suivants :
-
[Bun](#bun) -
[Bundler](#bundler) -
[Cargo](#cargo) -
[Docker](#docker) -
[Docker Compose](#docker-compose) -
[Allez](#go) -
[Gradle](#gradle) -
[Maven](#maven) -
[npm](#npm) -
[NuGet](#nuget) -
[pub](#pub) -
[Python](#python) (inclut pip, pip-compile, pipenv et poésie) -
[uv](#uv) -
[Yarn](#yarn)
Vous trouverez également des recommandations pour la configuration des hôtes de registre suivants :
-
[Artifactory](#artifactory) -
[Artefacts Azure](#azure-artifacts) -
[Cloudsmith](#cloudsmith) -
Registre [GitHub Packages](#github-packages-registry) -
[Nexus](#nexus) -
[ProGet](#proget)
Configuration des gestionnaires de packages
Bun
Bun suit les mêmes directives de configuration que npm. Notez que le fichier .npmrc n’est pas obligatoire, mais il peut être fourni afin de personnaliser la configuration. Pour obtenir des instructions détaillées, consultez npm.
Bundler
Pris en charge par Artifactory, Artifacts, Cloudsmith, le registre GitHub Packages, Nexus et ProGet.
Vous pouvez vous authentifier à l’aide d’un nom d’utilisateur et d’un mot de passe, ou à l’aide d’un jeton. Pour plus d’informations, consultez rubygems-server dans Configuration de l’accès aux registres privés pour Dependabot.
Extrait d’un fichier dependabot.yml utilisant un nom d’utilisateur et un mot de passe.
registries:
ruby-example:
type: rubygems-server
url: https://rubygems.example.com
username: octocat@example.com
password: ${{secrets.MY_RUBYGEMS_PASSWORD}}
registries:
ruby-example:
type: rubygems-server
url: https://rubygems.example.com
username: octocat@example.com
password: ${{secrets.MY_RUBYGEMS_PASSWORD}}
L’extrait du fichier dependabot.yml ci-dessous utilise un jeton. Pour ce type de registre utilisant le registre GitHub Packages (xyz.pkg.github.com), le jeton est en fait un GitHub personal access token (PAT) .
registries:
ruby-github:
type: rubygems-server
url: https://rubygems.pkg.github.com/octocat/github_api
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
registries:
ruby-github:
type: rubygems-server
url: https://rubygems.pkg.github.com/octocat/github_api
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
Remarques
Les dépendances approvisionnés directement d'un référentiel GitHub donnent à Dependabot l'accès au référentiel via l’IU GitHub. Pour plus d'informations sur la manière d'autoriser Dependabot à accéder aux dépendances privées GitHub, voir Autoriser Dependabot à accéder aux dépendances privées.
Cargo
Cargo prend en charge l’authentification par nom d’utilisateur, mot de passe et jeton. Pour plus d’informations, consultez cargo-registry dans Configuration de l’accès aux registres privés pour Dependabot.
L’extrait ci-dessous montre une configuration de fichier dependabot.yml qui utilise un jeton.
registries:
cargo-example:
type: cargo-registry
registry: "name-of-your-registry"
url: https://cargo.cloudsmith.io/foobaruser/test/
token: "Token ${{secrets.CARGO_TOKEN}}"
Nous avons testé cette configuration sur le registre privé https://cargo.cloudsmith.io.
Docker
Docker prend en charge l’utilisation d’un nom d’utilisateur et d’un mot de passe pour les registres. Pour plus d’informations, consultez docker-registry dans Configuration de l’accès aux registres privés pour Dependabot.
Extrait du fichier dependabot.yml utilisant un nom d’utilisateur et un mot de passe.
registries:
dockerhub:
type: docker-registry
url: https://registry.hub.docker.com
username: octocat
password: ${{secrets.MY_DOCKERHUB_PASSWORD}}
registries:
dockerhub:
type: docker-registry
url: https://registry.hub.docker.com
username: octocat
password: ${{secrets.MY_DOCKERHUB_PASSWORD}}
`docker-registry` peut également être utilisé pour extraire du registre Amazon ECR privé en utilisant des informations d’identification AWS statiques.
registries:
ecr-docker:
type: docker-registry
url: https://1234567890.dkr.ecr.us-east-1.amazonaws.com
username: ${{secrets.ECR_AWS_ACCESS_KEY_ID}}
password: ${{secrets.ECR_AWS_SECRET_ACCESS_KEY}}
registries:
ecr-docker:
type: docker-registry
url: https://1234567890.dkr.ecr.us-east-1.amazonaws.com
username: ${{secrets.ECR_AWS_ACCESS_KEY_ID}}
password: ${{secrets.ECR_AWS_SECRET_ACCESS_KEY}}
Remarques
Dependabot fonctionne avec tous les registres de conteneur conformes à l’OCI qui implémentent la spécification de distribution de l’Open Container Initiative (OCI). Pour plus d’informations, consultez https://github.com/opencontainers/distribution-spec/blob/main/spec.md.
Dependabot prend en charge l’authentification auprès des registres privés via un service de jeton central ou l’authentification de base HTTP. Pour plus d’informations, consultez Spécification de l’authentification par jeton dans la documentation Docker et Authentification d’accès de base sur Wikipédia.
Limitations et solutions de contournement
- Les noms d’images ne sont pas toujours détectés dans les Containerfiles, les fichiers Helm ou les fichiers YALM.
- Les Dockerfiles peuvent uniquement recevoir une mise à jour de version pour la première directive
FROM. - Les Dockerfiles ne reçoivent pas de mises à jour pour les images spécifiées avec la directive
ARG. Il existe une solution de contournement disponible pour la directiveCOPY. Pour plus d’informations, consultez Dependabot ignore les références d’images dans l’instruction COPY Dockerfile dans le dépôtdependabot/dependabot-core. - Dependabot ne prend pas en charge les builds Docker en plusieurs étapes. Pour plus d’informations, consultez Prise en charge des builds Docker en plusieurs étapes dans le dépôt
dependabot/dependabot-core.
Docker Compose
Docker Compose suit les mêmes instructions de configuration que Docker. Pour plus d’informations, consultez Docker.
Gradle
Dependabot n’exécute pas Gradle, mais prend en charge les mises à jour de certains fichiers Gradle : Pour plus d’informations, consultez « Gradle » dans Écosystèmes et référentiels pris en charge par Dependabot.
Gradle prend en charge le type de registre maven-repository. Pour plus d’informations, consultez maven-repository dans Configuration de l’accès aux registres privés pour Dependabot.
Le type maven-repository prend en charge le nom d'utilisateur, le mot de passe et replaces-base. Si le compte est celui GitHub, vous pouvez utiliser un GitHub personal access token à la place du mot de passe.
registries:
gradle-artifactory:
type: maven-repository
url: https://acme.jfrog.io/artifactory/my-gradle-registry
username: octocat
password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}
replaces-base: true
updates:
- package-ecosystem: "gradle"
directory: "/"
registries:
- gradle-artifactory
schedule:
interval: "monthly"
registries:
gradle-artifactory:
type: maven-repository
url: https://acme.jfrog.io/artifactory/my-gradle-registry
username: octocat
password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}
replaces-base: true
updates:
- package-ecosystem: "gradle"
directory: "/"
registries:
- gradle-artifactory
schedule:
interval: "monthly"
Remarques
Il se peut que toutes vos dépendances ne soient pas représentées dans le graphe des dépendances, notamment si certaines dépendances sont des dépendances de version. Vous pouvez utiliser API de soumission de dépendances pour signaler à GitHub vos autres dépendances. Ainsi, vous recevrez des correctifs de sécurité pour ces dernières. Pour plus d’informations, consultez « Utilisation de l’API de soumission de dépendances ».
Go
Prise en charge par Jfrog Artifactory et Nexus.
Go prend en charge l’utilisation d’un nom d’utilisateur et d’un mot de passe pour les registres privés.
Configurez votre registre privé en utilisant le fichier dependabot.yml avec le type goproxy-server :
registries:
my-private-registry:
type: goproxy-server
url: https://acme.jfrog.io/artifactory/api/go/my-repo
username: octocat
password: ${{secrets.MY_GO_REGISTRY_TOKEN}}
registries:
my-private-registry:
type: goproxy-server
url: https://acme.jfrog.io/artifactory/api/go/my-repo
username: octocat
password: ${{secrets.MY_GO_REGISTRY_TOKEN}}
Vous pouvez également configurer la manière dont la chaîne d’outils Go accède à votre serveur proxy en créant un fichier go.env à la racine de votre référentiel. Ce fichier vous permet de définir des variables d’environnement comme GOPROXY, GOPRIVATE, GONOSUMDB et GOSUMDB pour contrôler la manière dont les modules Go sont résolus :
GOPROXY=https://acme.jfrog.io/artifactory/api/go/my-repo GOPRIVATE=my-company.com/* GONOSUMDB=my-company.com/*
GOPROXY=https://acme.jfrog.io/artifactory/api/go/my-repo
GOPRIVATE=my-company.com/*
GONOSUMDB=my-company.com/*
Remarques
Cette fonctionnalité permet une gestion unifiée des dépendances pour les modules Go publics et privés au sein d'un seul flux de travail Dependabot, ce qui la rend idéale pour les organisations utilisant des systèmes de gestion d’artefacts d’entreprise comme JFrog Artifactory ou Nexus.
**Proxy privé desservant tous les modules** : toutes les requêtes de module passent d’abord par votre proxy. En cas d’échec de récupération des modules publics, votre proxy renvoie une erreur 404/410 et Go revient à un accès direct au système de contrôle de version (VCS). Pour les modules privés, tels que ceux publiés uniquement dans un référentiel privé comme JFrog Artifactory, le repli vers le VCS ne fonctionnera pas, car ils ne sont accessibles qu’au travers du proxy.
**Proxy privé desservant les modules privés** : ajoutez un fichier go.env à la racine de votre dépôt et configurez un GONOSUMDB correspondant au modèle des modules privés (par exemple, `GONOSUMDB=my-company.com/*` pour tous les modules privés commençant par my-company.com/). Cette opération désactivera la validation publique de la somme de contrôle de vos modules privés, car la base de données publique de sommes de contrôle ne contient pas ces modules privés.
**Accès direct aux modules privés** : définissez `GOPRIVATE=my-company.com/*` pour contourner les proxys et récupérer directement depuis le VCS. Ce paramètre ne fonctionne que si les modules privés sont correctement publiés avec des balises de version sémantique dans votre contrôle de code source.
Les dépendances approvisionnés directement d'un référentiel GitHub donnent à Dependabot l'accès au référentiel via l’IU GitHub. Pour plus d'informations sur la manière d'autoriser Dependabot à accéder aux dépendances privées GitHub, voir Autoriser Dependabot à accéder aux dépendances privées.
Maven
Maven prend en charge le nom d'utilisateur, le mot de passe et replaces-base. Pour plus d’informations, consultez maven-repository dans Configuration de l’accès aux registres privés pour Dependabot.
registries:
maven-artifactory:
type: maven-repository
url: https://acme.jfrog.io/artifactory/my-maven-registry
username: octocat
password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}
replaces-base: true
registries:
maven-artifactory:
type: maven-repository
url: https://acme.jfrog.io/artifactory/my-maven-registry
username: octocat
password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}
replaces-base: true
Si le compte est celui GitHub, vous pouvez utiliser un GitHub personal access token à la place du mot de passe.
version: 2
registries:
maven-github:
type: maven-repository
url: https://maven.pkg.github.com/octocat
username: octocat
password: ${{secrets.OCTOCAT_GITHUB_PAT}}
replaces-base: true
updates:
- package-ecosystem: "maven"
directory: "/"
registries:
- maven-github
schedule:
interval: "monthly"
version: 2
registries:
maven-github:
type: maven-repository
url: https://maven.pkg.github.com/octocat
username: octocat
password: ${{secrets.OCTOCAT_GITHUB_PAT}}
replaces-base: true
updates:
- package-ecosystem: "maven"
directory: "/"
registries:
- maven-github
schedule:
interval: "monthly"
Remarques
Il se peut que toutes vos dépendances ne soient pas représentées dans le graphe des dépendances, notamment si certaines dépendances sont des dépendances de version. Vous pouvez utiliser API de soumission de dépendances pour signaler à GitHub vos autres dépendances. Ainsi, vous recevrez des correctifs de sécurité pour ces dernières. Pour plus d’informations, consultez « Utilisation de l’API de soumission de dépendances ».
npm
Vous pouvez définir la configuration dans le fichier dependabot.yml en utilisant le type npm-registry, ou configurer Dependabot pour envoyer toutes les requêtes au registre via une URL de base spécifiée.
Utilisation du type npm-registry dans le fichier de configuration
Vous pouvez définir la configuration du registre privé dans un fichier dependabot.yml en utilisant le type npm-registry. Pour plus d’informations, consultez « Configuration de l’accès aux registres privés pour Dependabot ».
L’extrait d’un fichier dependabot.yml ci-dessous utilise un jeton. Pour ce type de registre utilisant le registre GitHub Packages (xyz.pkg.github.com), le jeton est en fait un GitHub personal access token (PAT) .
registries:
npm-github:
type: npm-registry
url: https://npm.pkg.github.com
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
registries:
npm-github:
type: npm-registry
url: https://npm.pkg.github.com
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
Dans l’écosystème npm, il est nécessaire qu’un fichier .npmrc comportant l’URL du registre privé soit ajouté dans le dépôt.
Exemple de contenu d’un fichier .npmrc :
registry=https://<private-registry-url>
Vous pouvez également ajouter l’URL du registre privé à un fichier .npmrc existant à l’aide de la commande suivante.
npm config set registry <url>
Pour plus d’informations, consultez registre dans la documentation npm.
Vous pouvez également limiter la configuration à une seule dépendance ou organisation, auquel cas le jeton ne sera valide que pour cette organisation, et différents jetons pourront être utilisés pour différentes organisations au sein du même dépôt.
npm config set @<org-name>:registry <url>
Il en résulterait un fichier '.npmrc' avec le registre :
@<org-name>:registry=https://<private-registry-url>
npm peut être configuré pour utiliser l’URL du registre privé dans les fichiers de verrouillage avec replace-registry-host. Pour en savoir plus, consultez replace-registry-host dans la documentation npm.
npm config set replace-registry-host "never"
Si vous utilisez replace-registry-host, vous devez exécuter localement npm install afin de régénérer le fichier de verrouillage pour qu’il utilise l’URL du registre privé. Dependabot utilisera la même URL lors de la fourniture des mises à jour.
Une fois le registre configuré, vous pouvez également exécuter npm login afin de vérifier que votre configuration est correcte et valide. Le fichier de verrouillage peut également être régénéré pour utiliser le nouveau registre privé en réexécutant npm install.
Vous devez vous assurer que le fichier .npmrc est ajouté dans le même répertoire que le package.json du projet et que ce fichier n’inclut pas de variables d’environnement ou de secrets.
Si vous utilisez un monorepo, le fichier .npmrc doit se trouver dans le répertoire racine du projet.
Configuration de Dependabot pour envoyer des requêtes au registre via une URL de base spécifiée
Vous pouvez configurer Dependabot pour envoyer toutes les requêtes au registre via une URL de base spécifiée. Pour que Dependabot puisse accéder à une dépendance publique, le registre doit contenir une copie clonée de la dépendance avec la version demandée ou autoriser le trafic à extraire depuis un registre public si la dépendance n’est pas disponible.
Si aucun registre global n’est spécifié dans un fichier .npmrc, vous pouvez définir replaces-base sur true dans le fichier dependabot.yml. Pour plus d’informations, consultez « replaces-base » dans Clé registries de niveau supérieur.
Remarques
Les dépendances approvisionnés directement d'un référentiel GitHub donnent à Dependabot l'accès au référentiel via l’IU GitHub. Pour plus d'informations sur la manière d'autoriser Dependabot à accéder aux dépendances privées GitHub, voir Autoriser Dependabot à accéder aux dépendances privées.
Dans le cas des dépendances délimitées (@my-org/my-dep), Dependabot exige que le registre privé soit défini dans le fichier .npmrc du projet. Pour définir des registres privés avec des étendues individuelles, utilisez @myscope:registry=https://private_registry_url.
Les registres doivent être configurés à l’aide du protocole https.
NuGet
Pris en charge par Artifactory, Artifacts, Cloudsmith, le registre GitHub Packages, Nexus et ProGet.
Le type nuget-feed prend en charge le nom d’utilisateur et le mot de passe ou le jeton. Pour plus d’informations, consultez nuget-feed dans Configuration de l’accès aux registres privés pour Dependabot.
registries:
nuget-example:
type: nuget-feed
url: https://nuget.example.com/v3/index.json
username: octocat@example.com
password: ${{secrets.MY_NUGET_PASSWORD}}
registries:
nuget-example:
type: nuget-feed
url: https://nuget.example.com/v3/index.json
username: octocat@example.com
password: ${{secrets.MY_NUGET_PASSWORD}}
registries:
nuget-azure-devops:
type: nuget-feed
url: https://pkgs.dev.azure.com/.../_packaging/My_Feed/nuget/v3/index.json
username: octocat@example.com
password: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}
registries:
nuget-azure-devops:
type: nuget-feed
url: https://pkgs.dev.azure.com/.../_packaging/My_Feed/nuget/v3/index.json
username: octocat@example.com
password: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}
Remarques
Vous pouvez également utiliser un jeton dans votre fichier dependabot.yml. Pour ce type de registre utilisant le registre GitHub Packages (xyz.pkg.github.com), le jeton est en fait un GitHub personal access token (PAT) .
registries:
nuget-azure-devops:
type: nuget-feed
url: https://pkgs.dev.azure.com/.../_packaging/My_Feed/nuget/v3/index.json
token: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}
registries:
nuget-azure-devops:
type: nuget-feed
url: https://pkgs.dev.azure.com/.../_packaging/My_Feed/nuget/v3/index.json
token: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}
bistrot
Vous pouvez définir la configuration du registre privé dans un fichier dependabot.yml en utilisant le type pub-repository. Pour plus d’informations, consultez « Configuration de l’accès aux registres privés pour Dependabot ».
registries:
my-pub-registry:
type: pub-repository
url: https://example-private-pub-repo.dev/optional-path
token: ${{secrets.MY_PUB_TOKEN}}
updates:
- package-ecosystem: "pub"
directory: "/"
schedule:
interval: "weekly"
registries:
- my-pub-registry
registries:
my-pub-registry:
type: pub-repository
url: https://example-private-pub-repo.dev/optional-path
token: ${{secrets.MY_PUB_TOKEN}}
updates:
- package-ecosystem: "pub"
directory: "/"
schedule:
interval: "weekly"
registries:
- my-pub-registry
Remarques
Les dépendances approvisionnés directement d'un référentiel GitHub donnent à Dependabot l'accès au référentiel via l’IU GitHub. Pour plus d'informations sur la manière d'autoriser Dependabot à accéder aux dépendances privées GitHub, voir Autoriser Dependabot à accéder aux dépendances privées.
pub prend en charge l’authentification par URL et par jeton. L’URL utilisée pour le registre doit correspondre à l’URL hébergée par pub. Pour plus d’informations, consultez Spécification du dépôt pub hébergé version 2 dans le dépôt github/dart-lang/pub.
Dependabot ne prend pas en charge les remplacements du registre de packages par défaut. Pour plus d’informations sur les remplacements et la raison pour laquelle certains utilisateurs peuvent les implémenter, consultez Remplacement du dépôt de packages par défaut dans la documentation Dart.
Python
Pris en charge par Artifactory, Azure Artifacts, Cloudsmith, Nexus et ProGet. Le registre GitHub Packages n’est pas pris en charge.
Le type python-index prend en charge le nom d’utilisateur et le mot de passe ou le jeton. Pour plus d’informations, consultez python-index dans Configuration de l’accès aux registres privés pour Dependabot.
registries:
python-example:
type: python-index
url: https://example.com/_packaging/my-feed/pypi/example
username: octocat
password: ${{secrets.MY_BASIC_AUTH_PASSWORD}}
registries:
python-example:
type: python-index
url: https://example.com/_packaging/my-feed/pypi/example
username: octocat
password: ${{secrets.MY_BASIC_AUTH_PASSWORD}}
registries:
python-azure:
type: python-index
url: https://pkgs.dev.azure.com/octocat/_packaging/my-feed/pypi/example
username: octocat@example.com
password: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}
registries:
python-azure:
type: python-index
url: https://pkgs.dev.azure.com/octocat/_packaging/my-feed/pypi/example
username: octocat@example.com
password: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}
registries:
python-gemfury:
type: python-index
url: https://pypi.fury.io/my_org
token: ${{secrets.MY_GEMFURY_TOKEN}}
registries:
python-gemfury:
type: python-index
url: https://pypi.fury.io/my_org
token: ${{secrets.MY_GEMFURY_TOKEN}}
Remarques
Les dépendances approvisionnés directement d'un référentiel GitHub donnent à Dependabot l'accès au référentiel via l’IU GitHub. Pour plus d'informations sur la manière d'autoriser Dependabot à accéder aux dépendances privées GitHub, voir Autoriser Dependabot à accéder aux dépendances privées.
`url` doit contenir l’URL, l’organisation et le « flux » ou le dépôt.
uv
Le registre uv utilise une configuration similaire à celle de l’index Python. Pour plus d’informations, consultez « python-index » dans Configuration de l’accès aux registres privés pour Dependabot.
Yarn
Le registre Yarn utilise une configuration similaire à celle du registre npm. Pour plus d’informations, consultez « npm-registry » dans Configuration de l’accès aux registres privés pour Dependabot.
registries:
yarn-github:
type: npm-registry
url: https://npm.pkg.github.com
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
registries:
yarn-github:
type: npm-registry
url: https://npm.pkg.github.com
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
- Pour les registres privés, vous devez ajouter un fichier
.yarnrc.yml(pour Yarn 3) ou un fichier.yarnrc(pour Yarn Classic). - Les fichiers de configuration Yarn ne doivent pas contenir de variables d’environnement.
- Vous devez configurer les registres privés énumérés dans le fichier
dependabot.ymlà l’aide dehttps.
Yarn Classic
Vous pouvez spécifier la configuration du registre privé dans le fichier dependabot.yml ou configurer Yarn Classic en suivant les instructions standard du gestionnaire de packages.
Définition de la configuration du registre privé dans le fichier dependabot.yml
Vous pouvez définir la configuration du registre privé dans votre fichier dependabot.yml. Pour plus d’informations, consultez Clé registries de niveau supérieur.
Pour que le registre privé figure bien parmi les sources de dépendance dans le fichier yarn.lock du projet, vous devez exécuter yarn install sur une machine disposant d’un accès au registre privé. Yarn doit alors mettre à jour le champ resolved de façon à inclure l’URL du registre privé.
encoding@^0.1.11:
version "0.1.13"
resolved "https://private_registry_url/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
dependencies:
iconv-lite "^0.6.2"
Suivre les instructions standard de votre gestionnaire de packages
Si le fichier yarn.lock n’indique pas le registre privé comme source de dépendance, vous pouvez configurer Yarn Classic en suivant les instructions standard du gestionnaire de packages :
-
Définissez la configuration du registre privé dans le fichier
dependabot.yml. -
Vous pouvez ensuite :
- Définir manuellement le registre privé dans le fichier
.yarnrcen ajoutant le registre dans un fichier.yarnrc.ymlà la racine du projet avec la clé registry, ou - Effectuer la même action en exécutant
yarn config set registry <private registry URL>dans votre terminal.
Exemple d’un fichier
.yarnrcavec un registre privé défini :registry https://nexus.example.com/repository/yarn-all - Définir manuellement le registre privé dans le fichier
Yarn Berry (v3)
Pour plus d’informations sur la configuration, consultez Paramètres (.yarnrc.yml) dans la documentation Yarn.
Comme avec Yarn Classic, vous pouvez spécifier la configuration du registre privé dans le fichier dependabot.yml ou configurer Yarn Berry conformément aux instructions standard du gestionnaire de packages.
Définition de la configuration du registre privé dans le fichier dependabot.yml
Vous pouvez définir la configuration du registre privé dans votre fichier dependabot.yml. Pour plus d’informations, consultez Clé registries de niveau supérieur.
Pour que le registre privé figure bien parmi les sources de dépendance dans le fichier yarn.lock du projet, exécutez yarn install sur une machine disposant d’un accès au registre privé. Yarn doit alors mettre à jour le champ resolved de façon à inclure l’URL du registre privé.
encoding@^0.1.11:
version "0.1.13"
resolved "https://private_registry_url/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
dependencies:
iconv-lite "^0.6.2"
Vous pouvez également configurer des registres privés avec npmAuthIdent ou npmAuthToken. Pour en savoir plus, consultez « npmAuthIdent » et « npmAuthToken » dans la documentation Yarn.
yarn config set registry <url>
Vous pouvez limiter la configuration de manière à ne couvrir qu’une seule dépendance ou organisation.
yarn config set @<SCOPE>:registry <url>
Enfin, nous vous recommandons d’exécuter yarn login pour vérifier que votre configuration est correcte et valide. Le fichier de verrouillage peut également être régénéré pour utiliser le nouveau registre privé en réexécutant yarn install.
Suivre les instructions standard de votre gestionnaire de packages
Si le fichier yarn.lock n’indique pas le registre privé comme source de dépendance, vous pouvez configurer Yarn Berry en suivant les instructions standard du gestionnaire de packages.
-
Définissez la configuration du registre privé dans le fichier
dependabot.yml. -
Vous pouvez ensuite :
- Définir manuellement le registre privé dans le fichier
.yarnrcen ajoutant le registre dans un fichier.yarnrc.ymlà la racine du projet avec la clénpmRegistryServer, ou - Effectuer la même action en exécutant
yarn config set npmRegistryServer <private registry URL>dans votre terminal.
Exemple de fichier
.yarnrc.ymlavec un registre privé configuré :npmRegistryServer: "https://nexus.example.com/repository/yarn-all"Pour en savoir plus, consultez npmRegistryServer dans la documentation Yarn.
- Définir manuellement le registre privé dans le fichier
Remarques
Les dépendances approvisionnés directement d'un référentiel GitHub donnent à Dependabot l'accès au référentiel via l’IU GitHub. Pour plus d'informations sur la manière d'autoriser Dependabot à accéder aux dépendances privées GitHub, voir Autoriser Dependabot à accéder aux dépendances privées.
Dans le cas des dépendances délimitées (@my-org/my-dep), Dependabot exige que le registre privé soit défini dans le .yarnrc file du projet. Pour définir des registres privés avec des étendues individuelles, utilisez @myscope:registry" "https://private_registry_url".
Configuration des hôtes de registre privé
Artifactory
Pour plus d’informations sur la configuration d’Artifactory, consultez Configuration d’Artifactory dans la documentation JFrog Artifactory.
Dépôts distants
Les dépôts distants servent de cache pour les artefacts de build et les dépendances. Au lieu d’avoir à interroger un dépôt de dépendances global, votre outil de build peut utiliser le cache d’Artifactory, ce qui accélèrera les temps de build. Pour en savoir plus, consultez Dépôts distants dans la documentation JFrog Artifactory.
Si vous utilisez le paramètre replace-base, vous devez également configurer un dépôt distant pour Artifactory si vous souhaitez que Dependabot accède à un autre registre lorsque la dépendance n’est pas trouvée dans le registre privé.
Registre virtuel
Vous pouvez utiliser un registre virtuel pour regrouper toutes les dépendances privées et publiques sous un seul domaine. Pour en savoir plus, consultez Registre npm dans la documentation JFrog Artifactory.
Artifacts d'Azure
Pour plus d’informations sur Azure Artifacts et obtenir des instructions sur la configuration de Dependabot pour utiliser Azure Artifacts, consultez respectivement Azure DevOps dans la documentation Azure Artifacts et Utiliser Dependabot dans GitHub avec Azure Artifacts.
Exemple de registre Azure Artifacts :
registries:
nuget-azure-devops:
type: nuget-feed
url: https://pkgs.dev.azure.com/my_org/_packaging/public/nuget/v3/index.json
token: ${{secrets.AZURE_DEVOPS_TOKEN}}
registries:
nuget-azure-devops:
type: nuget-feed
url: https://pkgs.dev.azure.com/my_org/_packaging/public/nuget/v3/index.json
token: ${{secrets.AZURE_DEVOPS_TOKEN}}
Le mot de passe Azure Artifacts doit être un jeton non encodé et doit inclure un : après le jeton. En outre, le mot de passe ne peut pas être encodé en base64.
Vous pouvez vérifier si le registre privé est correctement accessible en examinant les journaux Dependabot.
Cloudsmith
Pour plus d’informations sur Cloudsmith et obtenir des instructions sur la configuration de Dependabot pour utiliser Cloudsmith, consultez Prise en main de Cloudsmith et Intégrer GitHub Dependabot à Cloudsmith dans la documentation Cloudsmith.
Registre GitHub Packages
Pour en savoir plus sur les registres GitHub Packages, consultez Utilisation d’un registre GitHub Packages. À partir de cet article, vous pouvez accéder aux pages décrivant comment configurer les registres suivants.
- Bundler (rubygems)
- Docker (conteneurs)
- GitHub Actions
- Gradle
- Maven
- Npm
- NuGet
- Yarn
registries:
github:
type: npm-registry
url: https://npm.pkg.github.com
token: ${{ secrets.<token> }}
registries:
github:
type: npm-registry
url: https://npm.pkg.github.com
token: ${{ secrets.<token> }}
Remarques
Il n’existe aucun registre de conteneurs Python.
Pour les registres privés qui sont limités à une organisation particulière, Dependabot s’attend à ce que l’URL inclue le nom de l’organisation dans le fichier dependabot.yml.
Nexus
Pour plus d’informations sur la configuration de Nexus, consultez Repository Manager 3 dans la documentation Sonatype.
Remarques
Avec Nexus Repository Pro, vous pouvez activer les jetons utilisateur. Pour en savoir plus, consultez Jetons utilisateur dans la documentation Sonatype.
Exemple de registre Nexus :
registries:
npm-nexus:
type: npm-registry
url: https://registry.example.com/repository/npm-internal/
token: ${{secrets.NEXUS_NPM_TOKEN}}
registries:
npm-nexus:
type: npm-registry
url: https://registry.example.com/repository/npm-internal/
token: ${{secrets.NEXUS_NPM_TOKEN}}
Si vous exécutez Nexus derrière un proxy inverse, vous devez vous assurer que le serveur est accessible à l’aide d’un jeton d’authentification en utilisant curl -v -H 'Authorization: Bearer <token>' 'https://<nexus-repo-url>/repository/<repo-name>/@<scope>%2<package>'. Pour en savoir plus, consultez Exécuter derrière un proxy inverse dans la documentation Sonatype.
Si vous limitez les adresses IP autorisées à accéder à votre hôte Nexus, vous devez ajouter les adresses IP Dependabot à la liste d’autorisation.
- Vous pouvez trouver les adresses IP Dependabot utilisées pour accéder au registre dans le point de terminaison de l’API méta, sous la clé dependabot. Pour plus d’informations, consultez « Points de terminaison d’API REST pour les métadonnées ».
- Voici les adresses IP actuelles :
- "18.213.123.130/32"
- "3.217.79.163/32"
- "3.217.93.44/32" Pour en savoir plus, consultez Sécurisation de Nexus Repository Manager dans la documentation Sonatype.
Les registres peuvent être configurés en mode proxy pour interroger un registre public si une dépendance n’est pas disponible dans le registre privé. Toutefois, vous pouvez souhaiter que Dependabot n’accède qu’au registre privé et pas du tout au registre public. Pour en savoir plus, consultez Guide de démarrage rapide – Proxy Maven et NPM dans la documentation Sonatype, ainsi que Suppression de l’accès Dependabot aux registres publics.
ProGet
Pour plus d’informations sur ProGet et les instructions sur la configuration de Dependabot afin qu’il fonctionne avec des flux dans ProGet, consultez la documentation ProGet.
Exemple de configuration de registre ProGet pour un flux NuGet :
registries:
proget-nuget-feed:
type: nuget-feed
url: https://proget.corp.local/nuget/MyNuGetFeed/v3/index.json
token: ${{secrets.PROGET_APK_KEY}}
registries:
proget-nuget-feed:
type: nuget-feed
url: https://proget.corp.local/nuget/MyNuGetFeed/v3/index.json
token: ${{secrets.PROGET_APK_KEY}}
Exemple de configuration de registre ProGet pour Bundler (rubygems) :
registries:
proget-gems-feed:
type: rubygems-server
url: https://proget.corp.local/rubygems/MyRubygemsFeed
token: ${{secrets.PROGET_APK_KEY}}
registries:
proget-gems-feed:
type: rubygems-server
url: https://proget.corp.local/rubygems/MyRubygemsFeed
token: ${{secrets.PROGET_APK_KEY}}
Exemple de configuration de registre ProGet pour Python (PyPI) :
registries:
proget-python-feed:
type: python-index
url: https://proget.corp.local/pypi/MyPythonFeed
token: ${{secrets.PROGET_APK_KEY}}
registries:
proget-python-feed:
type: python-index
url: https://proget.corp.local/pypi/MyPythonFeed
token: ${{secrets.PROGET_APK_KEY}}
Remarques
Le token doit être une clé d’API disposant de l’accès nécessaire pour afficher des packages. Pour plus d’informations, consultez Accès à l’API et clés d’API dans la documentation ProGet.
Vous pouvez vérifier si le registre privé est correctement accessible en examinant les journaux Dependabot.