doc-locale/fr-fr/ci/sustainability/eco_ci.md
{{< details >}}
{{< /details >}}
[!note] Eco CI est un outil tiers qui s'intègre aux pipelines CI/CD GitLab. GitLab ne maintient pas cet outil et n'en assure pas le support, et ne garantit pas que cet outil satisfait à des exigences réglementaires ou de conformité.
Eco CI est un outil open source qui mesure la consommation d'énergie et les émissions de carbone des pipelines CI/CD. Il s'exécute sous forme de scripts bash légers dans les jobs de votre pipeline et ne nécessite pas de serveurs ni de bases de données distincts.
Vous placez des scripts de mesure avant et après les commandes dans les jobs de votre pipeline. L'outil surveille l'utilisation du CPU pendant l'exécution des commandes et calcule la consommation d'énergie à l'aide de courbes de puissance précalculées issues de la base de données SPECpower. Il stocke tous les résultats de mesure sous forme de fichiers texte que vous pouvez enregistrer en tant qu'artefacts de job pour les télécharger et les consulter. Vous pouvez également envoyer les résultats vers un tableau de bord externe à des fins d'analyse historique.
Ajoutez Eco CI à votre pipeline pour mesurer la consommation d'énergie et les émissions de carbone pendant l'exécution des jobs.
Eco CI utilise la variable ECO_CI_LABEL pour identifier et regrouper vos mesures. Choisissez un nom descriptif représentant votre projet ou l'étape de votre pipeline. Par défaut, les données de mesure sont envoyées au tableau de bord Green Coding Solutions à des fins d'analyse, mais vous pouvez définir ECO_CI_SEND_DATA sur false pour stocker les résultats uniquement en local.
Prérequis :
curl, jq, awk, bash, git et coreutils.Pour ajouter Eco CI à votre pipeline :
Dans votre fichier .gitlab-ci.yml, incluez le modèle Eco CI et configurez l'identifiant de votre projet :
variables:
ECO_CI_LABEL: "my-project-pipeline"
ECO_CI_SEND_DATA: "false"
include:
- remote: 'https://raw.githubusercontent.com/green-coding-solutions/eco-ci-energy-estimation/main/eco-ci-gitlab.yml'
Ajoutez des scripts de mesure à vos jobs :
build-job:
image: node:alpine
before_script:
- apk add --no-cache curl jq gawk bash git coreutils
script:
- !reference [.start_measurement, script]
- npm install
- npm run build
- npm test
- !reference [.get_measurement, script]
- !reference [.display_results, script]
artifacts:
paths:
- eco-ci-output.txt
- metrics.txt
expire_in: 1 week
Facultatif. Pour mesurer les commandes séparément, utilisez des scripts de mesure pour chaque commande :
build-job:
image: node:alpine
before_script:
- apk add --no-cache curl jq gawk bash git coreutils
script:
- !reference [.start_measurement, script]
- npm install
- !reference [.get_measurement, script]
- !reference [.display_results, script]
- !reference [.start_measurement, script]
- npm run build
- !reference [.get_measurement, script]
- !reference [.display_results, script]
- !reference [.start_measurement, script]
- npm test
- !reference [.get_measurement, script]
- !reference [.display_results, script]
artifacts:
paths:
- eco-ci-output.txt
- metrics.txt
expire_in: 1 week
Eco CI stocke les résultats de mesure dans des artefacts de job accessibles via l'interface GitLab. Les résultats de mesure comprennent :
Pour afficher les résultats de mesure :
eco-ci-output.txt.Exemple de sortie :
"build-job: Label: my-project-pipeline: Energy Used [Joules]:" 5.82
"build-job: Label: my-project-pipeline: Avg. CPU Utilization:" 22.69
"build-job: Label: my-project-pipeline: Avg. Power [Watts]:" 1.91
"build-job: Label: my-project-pipeline: Duration [seconds]:" 3.04
----------------
"build-job: Energy [Joules]:" 5.82
"build-job: Avg. CPU Utilization:" 22.69
"build-job: Avg. Power [Watts]:" 1.91
"build-job: Duration [seconds]:" 3.04
----------------
🌳 CO2 Data:
CO₂ from energy is: 0.001944 g
CO₂ from manufacturing (embodied carbon) is: 0.000442 g
Carbon Intensity for this location: 334 gCO₂eq/kWh
SCI: 0.002386 gCO₂eq / pipeline run emitted
Si vous définissez ECO_CI_SEND_DATA sur true, les données de mesure sont automatiquement envoyées au tableau de bord des métriques Eco CI. Le tableau de bord fournit des historiques, une analyse des tendances et une comparaison entre les exécutions de pipeline. Par défaut, les tableaux de bord sont publics et peuvent être consultés par tout le monde.
Vous pouvez consulter les tendances de consommation d'énergie au fil du temps, les patterns d'émissions de carbone, et comparer les mesures entre différentes branches, commits ou périodes. Accédez au tableau de bord avec l'identifiant ECO_CI_LABEL de votre projet.
Vous pouvez afficher un badge Eco CI dans le fichier README.md de votre projet pour présenter les métriques de consommation d'énergie.
Prérequis :
ECO_CI_SEND_DATA doit être défini sur true.Pour ajouter le badge au fichier README.md :
Copiez et collez le contenu suivant dans votre fichier README.md :
[](https://metrics.green-coding.io/ci.html?repo=<namespace>/<project>&branch=<branch>&workflow=<project-id>)
Remplacez les espaces réservés :
<namespace>/<project> par le chemin de votre projet GitLab (par exemple, mygroup/myproject)<branch> par le nom de votre branche (par exemple, main)<project-id> par l'identifiant de votre projet GitLab (par exemple, 52215136)Exemple :
[](https://metrics.green-coding.io/ci.html?repo=lyspin/eco-ci-demo&branch=main&workflow=52215136)
Lorsque vous utilisez Eco CI, vous pouvez rencontrer ces problèmes.
Vous pouvez obtenir un message d'erreur :
ERROR: Date has returned a timestamp that is not accurate to microseconds! You may need to install `coreutils`.
Ce problème survient lors de l'utilisation d'Alpine Linux ou d'autres distributions minimales qui n'incluent pas GNU coreutils par défaut.
Pour résoudre ce problème, installez coreutils. Par exemple, avec Alpine :
before_script:
- apk add --no-cache coreutils
Le fichier eco-ci-output.txt n'apparaît pas dans vos artefacts de job.
Ce problème peut être causé par une configuration des artefacts manquante. Vérifiez que votre job contient la configuration artifacts correcte :
artifacts:
paths:
- eco-ci-output.txt
- metrics.txt
Votre fichier eco-ci-output.txt affiche des valeurs telles que Energy [Joules]: 0.00.
Ce problème survient lorsque les scripts de mesure sont mal positionnés.
Pour résoudre ce problème, vérifiez que les scripts de mesure encadrent les commandes gourmandes en CPU :
script:
- !reference [.start_measurement, script]
- npm install # CPU-intensive command
- npm run build # CPU-intensive command
- !reference [.get_measurement, script]
- !reference [.display_results, script]