Découvrez comment la solution Parasoft Continuous Quality permet de contrôler et de gérer les environnements de test pour fournir des logiciels de haute qualité en toute confiance. Inscrivez-vous pour la démo >>

BLOG

Déploiement de l'analyse statique et des tests unitaires dans des environnements conteneurisés, partie 2

Déploiement de l'analyse statique et des tests unitaires dans des environnements conteneurisés, partie 2 Temps de lecture : 5 minutes

Comment créer une image de conteneur avec le test Parasoft C / C ++

Partie 1 de cet article discutait des avantages de l'utilisation de conteneurs pour déployer des chaînes d'outils de développement intégrées. Il a montré comment configurer Parasoft C / C ++ test Professional pour qu'il fonctionne avec la chaîne d'outils de compilation et l'environnement d'exécution de test déployés dans un conteneur.

Maintenant, regardons la création d'une image de conteneur avec Parasoft C / C ++ test Standard. Je vais vous montrer un exemple simple avec une exécution d'analyse statique dans le conteneur.

Déployer la norme de test Parasoft C / C ++ dans un conteneur Docker

En tant qu'outil basé sur la ligne de commande, la norme de test Parasoft C / C ++ convient aux déploiements en conteneur. Il peut être empaqueté avec le compilateur et créer le système dans une seule image de conteneur et utilisé pour CI / CD et déployé sur les bureaux des développeurs pour les analyses de ligne de commande locale. L'image ci-dessous montre un aperçu de haut niveau de cette configuration:

Le diagramme montre Jenkins utilisant un test C / C ++ conteneurisé pour exécuter une analyse statique. Dans cette configuration spécifique, le test Parasoft C / C ++, la chaîne d'outils de compilation et les outils de construction sont déployés dans le conteneur affiché dans le coin supérieur droit du diagramme.

Le conteneur situé en dessous, en bas à droite, fournit l'environnement d'exécution, qui peut être nécessaire pour exécuter des tests d'exécution, tels que des tests unitaires ou des tests automatisés au niveau du système.

Si nous avons l'intention de n'implémenter que l'analyse statique, notre configuration n'inclura probablement qu'un seul type de conteneur avec la chaîne d'outils de compilation et le test Parasoft C / C ++.

Créer une image de conteneur avec le test Parasoft C / C ++

Si vous ne l'avez pas déjà fait, veuillez installer la dernière version du test Parasoft C / C ++ 2020.1 pour Linux.

Pour simplifier le processus de création d'une image de conteneur avec le test C / C ++, la dernière version est livrée avec un exemple de Dockerfile. Vous pouvez trouver ce Dockerfile à l'emplacement suivant:

/ intégration / docker / Dockerfile

Ce Dockerfile simple se concentre uniquement sur les étapes de test C / C ++ requises pour créer l'image. Dans la plupart des cas réels, vous devrez fusionner ce fichier avec votre Dockerfile.

Avant d'analyser le contenu de l'exemple Dockerfile, voyons comment cela fonctionne. Mon exemple suppose la structure de fichiers simple suivante:

style = "taille de la police: 13px;">$ HOME / sandbox / parasoft_cpptest_standard-2020.1.0-linux.x86_64.tar.gz

1. Décompressez la distribution de test C / C ++.

  • cd $ HOME / bac à sable
  • tar xzf parasoft_cpptest_standard-2020.1.0-linux.x86_64.tar.gz

2. Copiez l'exemple Dockerfile de la distribution

  • cp cpptest / intégration / docker

3. Préparez un fichier de propriétés pour le test C / C ++ avec les informations sur la licence. Nous utiliserons le fichier par défaut cpptestcli.properties comme base, nous allons donc le copier dans notre répertoire de travail:

  • cp cpptest / cpptestcli.properties

Modifiez-le pour insérer les informations sur l'emplacement de votre serveur de licences. Utilisez votre éditeur préféré pour configurer les informations de licence. Enregistrez le fichier lorsque vous avez terminé.

4. Modifiez le Dockerfile et supprimez le commentaire de la ligne numéro 13 (celle où le fichier cpptestcli.properties est copié du répertoire local vers l'emplacement dans les conteneurs). La ligne dans le Dockerfile devrait ressembler à ceci:

  • COPIER cpptestcli.properties / opt / parasoft / cpptest

5. Maintenant, nous sommes prêts à créer l'image Docker. Exécutez la commande pour créer la première image avec le test C / C ++. Le nom de l'image est «cpptest_ci_image».

  • docker build -t cpptest_ci_image

Docker prendra un certain temps pour analyser son cache et télécharger l'image de base requise. Une fois que cela est fait, la distribution de test C / C ++ est copiée et installée dans l'image. Après une minute ou deux, l'image devrait être prête. Confirmez-le en exécutant la commande pour lister toutes les images:

  • liste d'images Docker

Dans la sortie, vous devriez voir le «cpptest_ci_image» répertorié en haut. Génial, nous avons donc une image construite et prête. Il est maintenant temps de le tester!

Tester l'image du conteneur

Pour un test simple, utilisez l'une des lignes de commande d'assistance / d'exemple fournies dans le Dockerfile.

Utilisez votre éditeur préféré pour ouvrir le Dockerfile et faites défiler vers le bas des fichiers. Vous devriez voir quelques exemples de lignes de commande comme ceci:

Utilisons la ligne de commande de la ligne 26 pour exécuter une analyse statique dans le conteneur sur l'un des exemples de test C / C ++ fournis avec la distribution.

Puisque nous avons décidé de créer le fichier cpptestcli.properties avec les informations de licence dans le conteneur, nous pouvons simplifier la ligne de commande et supprimer l'option -settings. La ligne de commande du test doit ressembler à ceci:

  • docker run –rm -v $ PWD: $ PWD -w / opt / parasoft / cpptest / examples / ATM cpptestcli -compiler gcc_9-64 -module. -trace faire tout nettoyer

Voila! L'analyse statique a été exécutée dans le conteneur. Les résultats ont été rapportés sur la console.

Nous pourrions en outre configurer l'outil pour produire le rapport HTML sur le système de fichiers local, mais c'est une autre histoire. Notre objectif principal était de créer le conteneur avec un test C / C ++ à l'intérieur et de le configurer pour exécuter une analyse statique. Nous avons atteint l'objectif.

Configurer un serveur CI avec une analyse statique

Si vous devez configurer un serveur CI avec analyse statique dans le cadre du processus, votre tâche est beaucoup plus simple. Accédez simplement au conteneur. Il en va de même si les développeurs de votre équipe souhaitent exécuter une analyse statique.

Besoin de mettre à niveau le test Parasoft C / C ++ vers le dernière version? Téléchargez simplement la distribution, reconstruisez votre image de conteneur et vous avez terminé! L'équipe et l'infrastructure automatisée ne remarqueront même pas cette opération. Lisse, facile et réversible, si nécessaire.

À propos du contenu Dockerfile

Avant de terminer, examinons le contenu du Dockerfile livré avec le test Parasoft C / C ++ qui vient d'être utilisé pour créer notre image. L'image ci-dessous montre le contenu de / intégration / docker / Dockerfile.

Voici les détails:

  • Ligne 2 spécifie le hub Docker de l'image GCC, sur lequel l'image du conteneur est basée.
  • Ligne 3 configure le répertoire de travail pour les commandes suivantes qui seront exécutées dans ce script.
  • Ligne 7, nous copions la distribution de test C / C ++ (archive) dans l'image du conteneur.
  • Ligne 10 extrait la distribution dans l'emplacement du conteneur: / opt / parasoft (notez la commande WORKDIR de la ligne 4)
  • Ligne 13 copie le fichier personnalisé cpptestcli.properties du répertoire local dans l'installation dans le conteneur du test C / C ++. Cette étape est facultative et par défaut, elle est commentée. Dans la plupart des cas, vous souhaiterez que certaines propriétés soient intégrées dans l'installation du test C / C ++. Le scénario le plus typique est la configuration de la licence, qui comprendra l'emplacement du serveur de licences, les informations d'identification, etc.
  • Ligne 16 supprime l'archive de distribution. C'est juste un nettoyage.
  • Ligne 18 réinitialise le répertoire de travail dans / home (facultatif)
  • Ligne 19 spécifie l'exécutable à exécuter au démarrage du conteneur.

C'est tout ce dont vous avez besoin pour créer un conteneur simple avec le test Parasoft C / C ++ prêt à exécuter une analyse statique.

Comme je l'ai mentionné, il s'agit d'un simple Dockerfile. Il a été ajouté à la distribution pour vous donner un exemple de ce dont vous pourriez avoir besoin pour créer une image de conteneur pour votre environnement. Vous devrez l'adapter à vos besoins ou le fusionner avec les Dockerfiles existants.

Écrit par

Mirosław Zielinski

Chef de produit pour les solutions de test embarquées de Parasoft, les spécialités de Miroslaw comprennent le C / C ++, les RTOS, l'analyse de code statique, les tests unitaires, la gestion de la qualité des logiciels pour les applications critiques pour la sécurité et la conformité des logiciels aux normes de sécurité.

Recevez les dernières nouvelles et ressources sur les tests de logiciels dans votre boîte de réception.