4.4. À propos de tester des images source-à-image
En tant qu’auteur d’image de constructeur de source à image (S2I), vous pouvez tester votre image S2I localement et utiliser le service Red Hat OpenShift sur le système de construction AWS pour des tests automatisés et une intégration continue.
Le S2I nécessite que les scripts d’assemblage et d’exécution soient présents pour exécuter avec succès la construction S2I. Fournir le script de sauvegarde-artefacts réutilise les artefacts de construction, et fournir le script d’utilisation garantit que les informations d’utilisation sont imprimées sur console lorsque quelqu’un exécute l’image du conteneur en dehors du S2I.
Le but de tester une image S2I est de s’assurer que toutes ces commandes décrites fonctionnent correctement, même si l’image du conteneur de base a changé ou si l’outil utilisé par les commandes a été mis à jour.
4.4.1. Comprendre les exigences en matière de tests Copier lienLien copié sur presse-papiers!
L’emplacement standard du script de test est test/run. Ce script est invoqué par le Red Hat OpenShift Service sur le constructeur d’images AWS S2I et il pourrait s’agir d’un simple script Bash ou d’un binaire Go statique.
Le script test/exécution effectue la construction S2I, vous devez donc avoir le binaire S2I disponible dans votre $PATH. Au besoin, suivez les instructions d’installation dans le README S2I.
Le S2I combine le code source de l’application et l’image du constructeur, de sorte que pour le tester, vous avez besoin d’un exemple de source d’application pour vérifier que la source se transforme avec succès en une image de conteneur exécutable. L’exemple d’application devrait être simple, mais il devrait exercer les étapes cruciales de l’assemblage et de l’exécution des scripts.
4.4.2. Générer des scripts et des outils Copier lienLien copié sur presse-papiers!
L’outillage S2I est livré avec des outils de génération puissants pour accélérer le processus de création d’une nouvelle image S2I. La commande s2i create produit tous les scripts S2I nécessaires et les outils de test avec le Makefile:
s2i create <image_name> <destination_directory>
$ s2i create <image_name> <destination_directory>
Le script de test/exécution généré doit être ajusté pour être utile, mais il fournit un bon point de départ pour commencer à développer.
Le script test/exécution produit par la commande de création s2i exige que les sources d’application de l’échantillon se trouvent dans le répertoire test/test-app.
4.4.3. Essais locaux Copier lienLien copié sur presse-papiers!
Le moyen le plus simple d’exécuter les tests d’image S2I localement est d’utiliser le Makefile généré.
Lorsque vous n’avez pas utilisé la commande création s2i, vous pouvez copier le modèle Makefile suivant et remplacer le paramètre IMAGE_NAME par le nom de votre image.
Échantillon Makefile
4.4.4. Flux de travail de test de base Copier lienLien copié sur presse-papiers!
Le script de test suppose que vous avez déjà construit l’image que vous souhaitez tester. Au besoin, construisez d’abord l’image S2I. Exécutez l’une des commandes suivantes:
Lorsque vous utilisez Podman, exécutez la commande suivante:
podman build -t <builder_image_name>
$ podman build -t <builder_image_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Lorsque vous utilisez Docker, exécutez la commande suivante:
docker build -t <builder_image_name>
$ docker build -t <builder_image_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Les étapes suivantes décrivent le flux de travail par défaut pour tester les constructeurs d’images S2I:
Assurez-vous que le script d’utilisation fonctionne:
Lorsque vous utilisez Podman, exécutez la commande suivante:
podman run <builder_image_name> .
$ podman run <builder_image_name> .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Lorsque vous utilisez Docker, exécutez la commande suivante:
docker run <builder_image_name> .
$ docker run <builder_image_name> .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Construire l’image:
s2i build file:///path-to-sample-app _<BUILDER_IMAGE_NAME>_ _<OUTPUT_APPLICATION_IMAGE_NAME>_
$ s2i build file:///path-to-sample-app _<BUILDER_IMAGE_NAME>_ _<OUTPUT_APPLICATION_IMAGE_NAME>_
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Facultatif: si vous prenez en charge les artefacts de sauvegarde, exécutez l’étape 2 une fois de plus pour vérifier que l’enregistrement et la restauration des artefacts fonctionne correctement.
Exécutez le conteneur:
Lorsque vous utilisez Podman, exécutez la commande suivante:
podman run <output_application_image_name>
$ podman run <output_application_image_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Lorsque vous utilisez Docker, exécutez la commande suivante:
docker run <output_application_image_name>
$ docker run <output_application_image_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- Assurez-vous que le conteneur est en cours d’exécution et l’application répond.
L’exécution de ces étapes est généralement suffisante pour dire si l’image du constructeur fonctionne comme prévu.
4.4.5. En utilisant Red Hat OpenShift Service sur AWS pour construire l’image Copier lienLien copié sur presse-papiers!
Lorsque vous avez un Dockerfile et les autres artefacts qui composent votre nouvelle image de constructeur S2I, vous pouvez les mettre dans un référentiel git et utiliser Red Hat OpenShift Service sur AWS pour construire et pousser l’image. Définissez une construction Docker qui pointe vers votre référentiel.
Lorsque votre instance Red Hat OpenShift sur AWS est hébergée sur une adresse IP publique, la construction peut être déclenchée chaque fois que vous appuyez dans votre référentiel GitHub image du constructeur S2I.
Il est également possible d’utiliser ImageChangeTrigger pour déclencher une reconstruction de vos applications basées sur l’image du constructeur S2I que vous avez mise à jour.