Poetry : Configurer des repositories privées GCP

Franck Cussac
Senior Data Engineer
May 12, 2025
10 min
Difficulté:
🌶️
🌶️
Nous avions déjà écrit un article sur les fonctionnalités qu’offre Poetry sur le cycle de vie de votre code. Cette fois-ci nous allons nous concentrer sur la configuration d’un repository Python privé déployé sur GCP avec Artifact Registry.
Créer un repository Python privé sur GCP
Dans cet article nous allons créer notre repository Python sur GCP via le service managé Artifact Registry. Pour cela nous utiliserons Terraform :
CODE:https://gist.github.com/franck-cussac/00075253719ba99e965e9985434659c2.js
Configurer Poetry pour publier dans GCP Artifact Registry
Ajouter un repository privé GCP à Poetry
Pour publier un package Python avec Poetry, il existe la commande suivante :
poetry publish --build
L’option --build indique à Poetry de construire le package avant de publier. Par défaut, Poetry publie dans Pypi, le repository public officiel de Python.
Pour pousser dans un repository privé, la configuration doit se faire sur Poetry au global et non pas dans un projet spécifique. Pour cela Poetry fourni une commande :
poetry config repositories.<repo-name><repo-url>
À la place de <repo-name< vous pouvez mettre ce que vous voulez. Cela sera le nom pour faire référence à votre repository privé dans Poetry. Dans notre exemple nous le remplacerons par hymaia-repo
Dans GCP, l’url du repository se construit comme suit :https://<region>-python.pkg.dev/<project>/<repository_id>/
Cela nous donne :
poetry config repositories.hymaia-repo https://europe-west1-python.pkg.dev/hymaia/hymaia-pypi/
Nous pouvons maintenant reprendre notre commande de publish et ajouter un paramètre pour le repository :
poetry publish --build --repository hymaia-repo
Sauf qu’à présent, on se retrouve avec une erreur :
HTTP Error 401: Unauthorized | b'The request does not have valid authentication credentials.\n'
Cette erreur indique que nous n’avons pas d’identifications valides pour GCP.
S’authentifier à un repository Python GCP
Lorsqu’on travaille avec GCP ou un Cloud Provider de manière générale, on a l’habitude d’utiliser un service managé IAM (ou GIA en français, merci wikipédia) pour s’authentifier. C’est pourquoi tous les outils fournis par GCP sont prévus pour fonctionner ainsi. La CLI gcloud, par exemple, nous permet de récupérer notre token d’authentification IAM via la commande suivante :
gcloud auth application-default login
Cette commande récupère un token d’authentification qui devra être celui utilisé par défaut. Plus concrètement, si vous travaillez sur Linux, cela crée ou met à jour le fichier ~/.config/gcloud/application_default_credentials.json Les autres applications fonctionnant avec le IAM de GCP savent donc par convention où récupérer le token pour s’authentifier.
Dans notre cas, l’application qui doit travailler avec GCP est Poetry. Mais Poetry n’a rien à voir avec GCP, alors comment peut-il savoir comment s’y authentifier ? Même chose si nous travaillons avec AWS ou Azure. Chaque Cloud Provider a sa méthode d’authentification IAM et ce n’est pas à Poetry de les gérer. Poetry étant un outil de l’écosystème Python, le seul mode d’authentification qu’il connait est celui du standard de repository Python : password lookup
S’authentifier à GCP avec Python
Une fonctionnalité récente
Avant mai 2023 et la version 1.5.x, il n’était pas possible de configurer Poetry pour qu’il utilise l’authentification IAM de GCP pour publier dans Artifact Registry.
En Python il existe une bibliothèque officiellement supportée par Google pour récupérer automatiquement les tokens d’authentifications IAM : keyrings.google-artifactregistry-auth
Côté Poetry, dans les version 1.1.x, la stratégie d’authentification à un repository est fixée sur le password lookup. Ce qui signifie qu’à l’époque, impossible d’utiliser la bibliothèque de Google pour son authentification IAM. Une issue github a donc été ouverte pour fallback en cas d’échec de ce mode d’authentification. Cette issue en a entraîné une autre côté GCP pour supporter Poetry dans google-artifactregistry-auth.
On s’est retrouvé avec une première évolution côté Poetry pour accepter d’autres modes d’authentification et une seconde côté GCP pour se conformer à la façon dont Poetry gère l’authentification. Un bel exemple de 2 projets open source qui collaborent.
Ajouter le mode d’authentification GCP IAM à Poetry
Pour prendre en compte un nouveau mode d’authentification, Poetry a juste besoin d’avoir la bibliothèque correspondante d’ajoutée à son environnement Python. C’est exactement la même chose quand vous ajoutez une dépendance à votre projet. Pour cela, vous pouvez utiliser la commande :
poetry self add keyrings.google-artifactregistry-auth
Maintenant on peut relancer notre commande de publication :
poetry publish --build --repository hymaia-repo
Et cette fois-ci c’est tout bon !
Récupérer un package Python dans GCP Artifact Registry
Lorsqu’on publie un package, c’est souvent pour le récupérer dans d’autres projets. Pour cela la procédure est encore plus simple :
1. Configurer un nouveau repository privé
poetry source add hymaia-repo https://europe-west1-python.pkg.dev/hymaia/hymaia-pypi/simple --priority=explicit
2. Ajouter la dépendance en précisant le repository
poetry add my-package --source=hymaia-repo
Évidemment il faut toujours être bien authentifié à GCP en mode default-application et avoir installé dans l’environnement virtuel de Poetry keyrings.google-artifactregistry-auth comme pour la publication d’une dépendance.
Et c’est fini !
Ces formations pourraient aussi vous intéresser
Data-dictionnaire
Tech & Data
Poetry Python
Poetry est un outil de gestion de dependances et de packaging pour Python. Il unifie la declaration des dependances, la creation d'environnements virtuels et la publication de packages dans un seul workflow.
Data-dictionnaire
Tech & Data
Cloud
Le Cloud Computing permet d'accéder à des ressources informatiques (serveurs, stockage, bases de données, IA) via Internet, sans posséder ni gérer l'infrastructure physique sous-jacente.
Ces contenus pourraient
aussi vous intéresser
Article
Tech & Data
5 min
🌶️
Débutants

Comment leboncoin forme ses Product & Engineering Managers aux enjeux Data & IA.
28.01.2026
Article
Tech & Data
15 min
🌶️
🌶️
Confirmés

Surveiller les accès à vos données AWS avec CloudTrail, EventBridge, Lambda et Firehose.
24.06.2025
Article
Tech & Data
10 min
🌶️
🌶️
Experts

Combiner AWS SageMaker et Lambda pour des prédictions ML en temps réel, sans gérer de serveurs.
12.05.2025
Vidéo
Tech & Data

Quels sont les challenges d'un Lead AI dans une scale-up qui veut faire de l'IA son cheval de bataille stratégique ?
Quels sont les challenges d'un Lead AI dans une scale-up qui veut faire de l'IA son cheval de bataille stratégique ?
Au cours de cette interview, Remi Takase, Lead AI de Mirakl, nous expliquera son quotidien, ses questionnements et ses challenges passés et à venir.
08.07.2025
Vidéo
Tech & Data

Gaël Varoquaux est le co-fondateur de scikit-learn, le projet open-source le plus utilisé pour faire du Machine Learning en Python. Directeur de recherche à l’Inria, il est aussi membre du récent comité scientifique pour l’Intelligence Artificielle Générative. Il nous accorde une interview exclusive durant laquelle il nous partage ses convictions sur l'avenir de l'IA et sur la place de l'open-source.e
Au programme :
- Sa vision Produit autour de scikit-learn et son avenir - et plus généralement la place de l’open-source dans la tech et l’IA
- Ses travaux de recherche à l’Inria - en particulier les applications du Machine Learning sur des questions de santé et de société
- Ses messages et convictions sur les challenges à venir en IA - messages qu’il porte auprès du comité de l'intelligence artificielle générative
08.07.2025
01.07.2025
Prêt à accélérer votre Transformation ?
Nos experts vous accompagnent à chaque étape de votre parcours Data & IA. Discutons ensemble de vos enjeux et objectifs.
