doc-locale/fr-fr/ci/services/postgres.md
{{< details >}}
{{< /details >}}
De nombreuses applications dépendent de PostgreSQL en tant que base de données ; vous devez donc l'utiliser pour exécuter vos tests.
Pour transmettre les variables CI/CD définies dans l'interface utilisateur GitLab aux conteneurs de services, vous devez définir les variables. Vous devez définir vos variables en tant que variables de groupe ou de projet, puis appeler les variables dans votre job comme illustré dans la solution de contournement suivante.
Postgres 15.4 et les versions ultérieures ne substituent pas les noms de schémas ou de propriétaires dans les scripts d'extension s'ils contiennent des guillemets ("), des barres obliques inverses (\) ou des symboles dollar ($). Si les variables CI/CD ne sont pas configurées, la valeur utilise le nom de la variable d'environnement comme chaîne de caractères à la place. Par exemple, POSTGRES_USER: $USER entraîne la définition de la variable POSTGRES_USER sur '$USER', ce qui amène Postgres à afficher l'erreur suivante :
Fatal: invalid character in extension
La solution de contournement consiste à définir vos variables dans les variables CI/CD GitLab ou à définir les variables sous forme de chaîne :
Définissez les variables Postgres dans GitLab. Les variables définies dans l'interface utilisateur GitLab ne sont pas transmises aux conteneurs de services.
Dans le fichier .gitlab-ci.yml, spécifiez une image Postgres :
default:
services:
- postgres
Dans le fichier .gitlab-ci.yml, ajoutez vos variables définies :
variables:
POSTGRES_DB: $POSTGRES_DB
POSTGRES_USER: $POSTGRES_USER
POSTGRES_PASSWORD: $POSTGRES_PASSWORD
POSTGRES_HOST_AUTH_METHOD: trust
Pour plus d'informations sur l'utilisation de postgres pour le Host, consultez Comment les services sont liés au job.
Configurez votre application pour utiliser la base de données, par exemple :
Host: postgres
User: $POSTGRES_USER
Password: $POSTGRES_PASSWORD
Database: $POSTGRES_DB
Vous pouvez également définir des variables sous forme de chaîne dans le fichier .gitlab-ci.yml :
variables:
POSTGRES_DB: DB_name
POSTGRES_USER: username
POSTGRES_PASSWORD: password
POSTGRES_HOST_AUTH_METHOD: trust
Vous pouvez utiliser n'importe quelle autre image Docker disponible sur Docker Hub. Par exemple, pour utiliser PostgreSQL 16.10, le service devient postgres:16.10.
L'image postgres peut accepter certaines variables d'environnement. Pour plus d'informations, consultez la documentation sur Docker Hub.
Vous pouvez également utiliser PostgreSQL sur des serveurs configurés manuellement qui utilisent GitLab Runner avec l'exécuteur Shell.
Commencez par installer le serveur PostgreSQL :
sudo apt-get install -y postgresql postgresql-client libpq-dev
L'étape suivante consiste à créer un utilisateur ; connectez-vous donc à PostgreSQL :
sudo -u postgres psql -d template1
Créez ensuite un utilisateur (dans notre cas runner) qui sera utilisé par votre application. Remplacez $password dans la commande suivante par un mot de passe fort.
[!note] Veillez à ne pas saisir
template1=#dans les commandes suivantes, car cela fait partie de l'invite PostgreSQL.
template1=# CREATE USER runner WITH PASSWORD '$password' CREATEDB;
L'utilisateur créé dispose du privilège pour créer des bases de données (CREATEDB). Les étapes suivantes décrivent comment créer une base de données explicitement pour cet utilisateur. Les privilèges permettent à votre framework de test de créer et de supprimer des bases de données selon les besoins.
Créez la base de données et accordez-lui tous les privilèges pour l'utilisateur runner :
template1=# CREATE DATABASE nice_marmot OWNER runner;
Si tout s'est bien passé, vous pouvez maintenant quitter la session de base de données :
template1=# \q
À présent, essayez de vous connecter à la base de données nouvellement créée avec l'utilisateur runner pour vérifier que tout est en place.
psql -U runner -h localhost -d nice_marmot -W
Cette commande indique explicitement à psql de se connecter à localhost pour utiliser l'authentification md5. Si vous omettez cette étape, l'accès vous sera refusé.
Enfin, configurez votre application pour utiliser la base de données, par exemple :
Host: localhost
User: runner
Password: $password
Database: nice_marmot
Nous avons mis en place un exemple de projet PostgreSQL pour votre commodité, qui s'exécute sur GitLab.com à l'aide de nos runners d'instance disponibles publiquement.
Vous souhaitez le modifier ? Dupliquez-le, effectuez un commit et poussez vos modifications. En quelques instants, les modifications sont prises en charge par un runner public et le job commence.