Gestion des variables d'environnement
Introduction aux variables d’environnement
Les variables d’environnement permettent de stocker des informations telles que les URL des API, les clés d’accès et les mots de passe en dehors des scripts de test.
Cette séparation est utile pour plusieurs raisons :
-
En stockant les données sensibles à l’extérieur du code source, les variables d’environnement aident à prévenir les fuites d’informations critiques, notamment lorsque le code est partagé ou stocké dans un système de contrôle de version.
-
Les tests peuvent être exécutés dans différents environnements (développement, test, production) sans nécessiter de modifications du code. Les variables d’environnement facilitent la configuration des tests pour chaque environnement spécifique, rendant les tests plus robustes et réutilisables.
-
La gestion des configurations à travers les variables d’environnement simplifie les mises à jour. Au lieu de chercher et de modifier les valeurs directement dans le code, les développeurs peuvent ajuster les configurations de manière centralisée.
Configuration des variables d’environnement
Cypress offre plusieurs méthodes pour définir et utiliser des variables d’environnement :
-
Fichier cypress.config.js : les variables d’environnement globales peuvent être définies dans le fichier de configuration cypress.config.js, rendant ces variables accessibles dans tous les tests.
-
Fichiers de configuration spécifiques à l’environnement : pour une gestion plus fine, Cypress permet de créer des fichiers de configuration dédiés pour chaque environnement (par exemple, cypress.env.json), qui peuvent être chargés en fonction de l’environnement de test actuel.
-
Ligne de commande : quand vous lancez Cypress via la ligne de commande, vous pouvez passer des variables d’environnement directement en utilisant l’option --env, suivi de la liste des variables et de leurs valeurs.
1. Configurez vos variables dans le fichier de configuration cypress.conf.js
Pour définir une variable d’environnement globale, ajoutez un objet env dans votre fichier cypress.config.js et spécifiez vos variables à l’intérieur de cet objet. Par exemple :
const { defineConfig } = require("cypress");
module.exports = defineConfig({
env: {
login_url: "/login",
api_url: "http://localhost:3000"...
Stockage des secrets dans AWS Secrets Manager
Tout d’abord, stockez vos secrets, tels que les clés API, les identifiants de connexion, ou toute autre information sensible, dans AWS Secrets Manager. AWS Secrets Manager fournit un moyen sécurisé pour centraliser la gestion des secrets, avec des contrôles d’accès basés sur des politiques et le suivi des accès aux secrets.
Par exemple, vous pourriez avoir un secret nommé myAppSecrets avec une structure JSON comme suit :
{
"api_key": "abc123",
"api_url": "http://localhost:3000"
}
1. Premier exemple avec l’accès direct aux secrets AWS
Afin d’exécuter les tests localement, les prérequis sont :
-
AWS CLI installé : assurez-vous que l’AWS CLI est installé sur votre machine locale pour interagir avec AWS Secrets Manager.
-
Permissions AWS IAM : votre utilisateur AWS doit avoir les permissions nécessaires pour accéder aux secrets dans AWS Secrets Manager. Cela peut être configuré via les politiques IAM dans la console AWS.
-
jq installé (optionnel) : jq est un outil de ligne de commande pour parser et manipuler du JSON. Il est utile pour extraire des valeurs spécifiques d’un secret JSON retourné par AWS Secrets Manager.
Pour installer AWS, vous pouvez télécharger...
Bonnes pratiques
Assurez-vous que les fichiers contenant vos variables d’environnements importantes sont stockés dans des emplacements sécurisés, avec un accès contrôlé basé sur le principe du moindre privilège.
Choisissez un emplacement de stockage qui est accessible par les personnes et les systèmes qui ont besoin de déchiffrer les fichiers pour le déploiement ou le développement, tout en maintenant les restrictions d’accès nécessaires.
Mettez en place des stratégies de backup et de récupération pour les fichiers chiffrés, pour éviter la perte de configurations importantes en cas de défaillance du système de stockage.
Évitez de stocker des informations sensibles directement dans les fichiers de configuration versionnés. Utilisez des mécanismes sécurisés, comme des variables d’environnement du système ou des services de gestion des secrets, pour gérer ces données.
Débogage et dépannage
1. Vérification des variables d’environnement
-
Assurez-vous que la syntaxe utilisée dans vos fichiers de configuration (cypress.config.js, cypress.env.json) est correcte. Les erreurs de syntaxe, comme les virgules manquantes ou les guillemets mal placés, peuvent empêcher Cypress de lire correctement les variables d’environnement.
-
Pour accéder à une variable d’environnement dans vos tests, utilisez la syntaxe Cypress.env(’NOM_VARIABLE’). Assurez-vous que le nom de la variable est correct et correspond exactement à celui défini dans vos fichiers de configuration, en tenant compte de la sensibilité à la casse.
-
Pour déboguer, vous pouvez loguer les variables d’environnement dans la console pour vérifier leur valeur actuelle. Par exemple :
console.log(Cypress.env('NOM_VARIABLE'));
-
Si vous exécutez Cypress dans un pipeline CI/CD, assurez-vous que les variables d’environnement sont correctement configurées dans votre système CI/CD. Chaque système CI (GitHub Actions, GitLab CI, Jenkins, etc.) a sa propre méthode pour définir les variables d’environnement
2. Gestion des variables d’environnement spécifiques à l’environnement
-
Si vous utilisez des configurations spécifiques à l’environnement (par exemple, cypress.env.json...