Lancer les tests GDSL avec l'API Greenspector Studio dans Gitlab CI
Vous pouvez utiliser l’API Greenspector Studio pour exécuter des mesures à partir de n'importe quel Gitlab CI Runner. Ensuite avec l’API, vous pouvez valider les commits/tags en fonction de votre ecoscore.
Prérequis
Afin d'exécuter des mesures sur Greenspector Power Test Cloud depuis votre CI GitLab, voici les prérequis :
Un accès Internet à l’interface de Greenspector Studio
Par exemple,
curl https://saas.greenspector.com/doit fonctionnerCet accès peut nécessiter d'autoriser un flux de votre serveur vers notre serveur et/ou de mettre l'URL
https://saas.greenspector.com/sur liste blanche dans votre proxy
Un accès Internet au Greenspector Core Server.
Par exemple,
curl https://core-saas-prod.greenspector.com/apidoit retourner OKCet accès peut nécessiter d'autoriser un flux de votre serveur vers notre serveur et/ou de mettre l'URL
https://core-saas-prod.greenspector.com/sur liste blanche dans votre proxy
Si vous n'avez pas encore d'analyse (ou d'application) sur votre compte Greenspector Studio, créez-en une.
Créer votre Jeton d’API sur la page jetons d’API de l’interface Greenspector Studio
Ajouter les droits pour ce token sur votre analyse en l’ajoutant comme membre
Le fichier script.testgb qui contient les commandes GDSL.
Usage
Exemple de script
Nous avons créé un script appelé measurewithapi.sh qui télécharge tous les outils dont vous avez besoin (CLI et Dashboard Campaign), les configure, exécute les mesures et construit le tableau de bord.
Ce script Bash prend en compte plusieurs flags :
-a: L’identifiant de votre analyse (ou application) sur l’interface Greenspector Studio (obligatoire)-t: Votre jeton d’API. Vous pouvez récupérer votre jeton d’API à partir du menu à droite de l’interface Greenspector Studio (obligatoire)-m: Le package à surveiller pendant la mesure. (obligatoire)-i: Le nombre d'itérations (par défaut : 1)-v: Le nom de la version (par défaut : la date actuelle au format31/12/2023 15:13)-f: Le chemin vers le fichier script (par défaut :script.testgb)-u: L’url de l’application à installer sur le téléphone. La valeur peut être :Pour android, un nom de package à installer à partir du PlayStore (exemple :
com.greenspector.demo)Pour android, un chemin relatif ou absolu vers un fichier apk local sur le répertoire de travail de l’intégration continue (exemple :
demo.apkou../demo/demo.apk)Pour android, une url sur un apk (exemple
https://dl.greenspector.com/demo/demo.apk)Pour iOS, l’url vers une app de l’Apple Store (example :
https://apps.apple.com/fr/app/youtube/id544007664)Pour iOS, un chemin relatif ou absolu vers un fichier ipa local sur le répertoire de travail de l’intégration continue (exemple:
demo.ipaou../demo/demo.ipa)Pour iOS, une url vers un ipa (exemple:
https://dl.greenspector.com/demo/demo.ipa)
-d: Le nom du téléphone à utiliser sur le banc de mesure (par défaut:Samsung - Galaxy S10)-o: L’OS du téléphone à utiliser sur le banc de mesure (androidouios, par défaut :android)-k: Le version du SDK du téléphone à utiliser sur le banc de mesure (par défaut :12)-e: Les paramètres extras utilttables dans le test GDSL (example'{"key1": "value1", "key2": "value2"}', par défaut :'{"PAUSEDURATION": "30000", "PAUSEAFTERLOAD": "1000"}')-r: L’url du proxy si votre CI nécessite un proxy pour accéder à Internet-l: Login du proxy-p: Mot de passe du proxy-s: L’url de Greenspector Studio (par défaut :https://saas.greenspector.com)-c: L’url du Core Server (ou atelier de mesure) (par défaut :https://core-saas-prod.greenspector.com)
Par défaut, le script measurewithapi.sh renvoie un code d'erreur si votre ecoscore est inférieur à 50. Vous pouvez modifier cette valeur dans le script si vous en ressentez le besoin.
Exécuter une mesure
Maintenant que vous avez correctement installé tous les pré-requis pour notre outil.
Créez un projet GitLab si vous n'en avez pas déjà un.
Créez trois variables sur Gitlab (Settings > CI/CD) : APPLICATION avec l’id de votre analyse (ou application), TOKEN avec votre jeton d’API et PACKAGE avec le package de votre application mobile ou com.android.chrome si vous mesurez un site web.
Ajoutez simplement un fichier .gitlab-ci.yml (ou modifiez votre fichier .gitlab-ci.yml si vous en avez déjà un) avec ce contenu (modifiez le nom de l'application ($APPLICATION), le token ($TOKEN) et le package ($PACKAGE) à surveiller et ajoutez des drapeaux optionnels si nécessaire) :
image: cfmanteiga/alpine-bash-curl-jq
stages:
- measure
measure:
stage: measure
script:
- chmod +x measurewithapi.sh
- ./measurewithapi.sh -a "$APPLICATION" -t "$TOKEN" -m "$PACKAGE"
only:
- tagsNB: Si vous utilisez docker pour exécuter votre CI, vous pouvez utiliser une image docker publique qui est livrée avec curl et jq déjà installés comme cfmanteiga/alpine-bash-curl-jq.
Désormais, chaque fois que vous créerez un nouveau tag sur votre projet, une mesure sera exécutée sur Greenspector Power Test Cloud.
Par défaut, le script se termine par un code d'erreur en cas de problème. Code d'erreur 1 s'il y a un problème avec les paramètres d'entrée, 2 s'il y a un problème pour lancer la mesure, 3 si la mesure n’est pas fini avant un certain temps (par défaut 1h), 4 si certains tests GDSL ont échoué, 5 si l'ecoscore est inférieur à 50. Vous pouvez modifier cela dans le script measure.sh
Other examples
# Mesurer une app avec installation via le Playstore
./measurewithapi.sh -a "$APPLICATION" -t "$TOKEN" -m fr.francetv.pluzz -u fr.francetv.pluzz
# Mesurer une app avec installation à partir d'un fichier local sur la CI
./measurewithapi.sh -a "$APPLICATION" -t "$TOKEN" -m com.greenspector.demo -u https://dl.greenspector.com/demo/demo.apk
# Mesurer un siteweb
./measurewithapi.sh -a "$APPLICATION" -t "$TOKEN" -m com.android.chrome
# Mesurer un siteweb sur un samsung galaxy S9
DEVICE="Samsung - Galaxy S9"
SDK_VERSION="10"
./measurewithapi.sh -a "$APPLICATION" -t "$TOKEN" -m com.android.chrome -d "$DEVICE" -k "SDK_VERSION"
# Ajout de paramètres extras utilisables dans le test GDSL
EXTRAS='{"PAUSEDURATION": "30000", "PAUSEAFTERLOAD": "1000"}'
./measurewithapi.sh -a "$APPLICATION" -t "$TOKEN" -m com.android.chrome -e "$EXTRAS"
# Si les paramètres extras contiennent une apostrophe, vous devez utiliser des guillemets
# au lieu des apostrophes pour déclarer la valeur EXTRAS et vous devez échapper les guillemets
EXTRAS="{\"key1\": \"value'with quotes'\"}"
./measurewithapi.sh -a "$APPLICATION" -t "$TOKEN" -m com.android.chrome -e "$EXTRAS"
Publier l'Ecoscore sur votre propre tableau de bord (facultatif)
A la fin du script measurewithapi.sh, la méthode displayEcoscore est appelée. Vous pouvez compléter cette méthode pour envoyer les variables disponibles vers votre propre tableau de bord (ECOSCORE, SCORE_DISPLAY_TIME, SCORE_ENERGY, SCORE_DATA_NETWORK …).