Configuration de l'automatisation des analyses avec Jenkins et les conteneurs

Le conteneur de l'interface de ligne de commande (CLI) HCL® AppScan® Source, disponible depuis HCL Harbor et Portail My HCLSoftware portal (MHS), peut être utilisé pour automatiser les examens d'analyse statique avec Jenkins, et sans installer une instance complète de AppScan® Source.

Les principales étapes de l'examen à l'aide d'un conteneur sont les suivantes :
  1. Préparer l'application
  2. Préparer l'environnement d'exécution
  3. Lancer l'examen à partir de l'image du conteneur

Conditions préalables

Avant de commencer, assurez-vous que votre environnement répond aux exigences suivantes :
  • Environnement Jenkins, comprenant un ou plusieurs agents/hôtes Linux avec Podman installé.

    Il s'agit du système destiné à exécuter un examen d'analyse statique à l'aide du conteneur de l'interface de ligne de commande.

  • Une licence valide pour AppScan® Source for Automation et des informations pertinentes sur le serveur de licences.

  • Image du conteneur de l'interface de ligne de commande AppScan® Source

    Téléchargez l'image du conteneur de l'interface de ligne de commande AppScan® Source à partir de HCL Harbor ou Portail My HCLSoftware portal. Avec une licence valide, votre ID HCL accorde l'accès à ces emplacements.

  • Script de l'interface de ligne de commande AppScan® Source

    Un script est nécessaire pour analyser le conteneur dans un pipeline Jenkins.

  • Accédez au contenu de l'hôte/agent Jenkins à partir du conteneur :

    L'application à examiner doit être accessible à partir de l'hôte Jenkins exécutant l'examen.

    Remarque : Le mappage de volume (mappage du chemin sur l'hôte du conteneur vers un chemin dans le conteneur) est utilisé à cette fin lors de l'instanciation d'un examen.

Préparez l'application à examiner

Préparez l'application pour l'examen à l'aide de l'une des méthodes suivantes :
  • Fichiers paf/ppf
  • Examen des dossiers
Préparez l'application à examiner à l'aide des fichiers paf/ppf
  1. Générez le fichier paf/ppf à l'aide du client HCL® AppScan® Source for Analysis sur un système Linux sur lequel AppScan® Source est installé.

    Assurez-vous que les fichiers paf et ppf se trouvent dans le dossier root de l'application à examiner.

  2. Assurez-vous que les fichiers d'application et les fichiers paf/ppf sont accessibles depuis l'hôte/agent Jenkins.

    Par exemple, si l'application est accessible au chemin root /usr/user1/SampleApp sur l'hôte/agent Jenkins, les fichiers paf/ppf sont situés dans /usr/user1/SampleApp/SampleApp.paf et /usr/user1/SampleApp/SampleApp.ppf.

  3. Déterminez le nom du volume tel qu'il est vu par le conteneur.
    Par exemple, mappez l'hôte /usr/user1 sur cvol dans le conteneur.
    Remarque : Le mappage de volume est spécifié lors de l'exécution de l'interface de ligne de commande dans le conteneur.
  4. Créez le script de l'interface de ligne de commande. Par exemple, SampleApp.script dans /usr/user1/SampleApp.
    Dans cet exemple, le script indique au conteneur d'accéder au contenu de l'application à l'aide du chemin cvol. Les commandes répertoriées sont celles utilisées avec l'interface de ligne de commande AppScan® Source (Examen sans intervention manuelle).
    login …
    oa /cvol/SampleApp/SampleAll.ppf
    scan
    …
    logout
Préparez l'application pour l'examen du dossier :
  1. Assurez-vous que les fichiers de l'application sont accessibles à partir de l'hôte/agent Jenkins.

    Par exemple, l'application est accessible via le chemin /usr/user1/SampleApp sur l'hôte/agent Jenkins.

  2. Déterminez le nom du volume tel qu'il est vu par le conteneur.
    Par exemple, mappez l'hôte /usr/user1 sur cvol dans le conteneur.
    Remarque : Le mappage de volume est spécifié lors de l'exécution de l'interface de ligne de commande dans le conteneur.
  3. Créez le script de l'interface de ligne de commande. Par exemple, SampleApp.script dans /usr/user1/SampleApp.
    login …
    of /cvol/SampleApp/SampleAll
    scan
    …
    logout

Préparez l'environnement d'exécution sur l'hôte/agent Jenkins

Pour préparer l'environnement d'exécution sur l'hôte/agent Jenkins :
  1. Téléchargez le conteneur de l'interface de ligne de commande AppScan® Source sur l'hôte Jenkins à partir de Portail My HCLSoftware portal ou accédez-y directement à partir de HCL Harbor.

    Chargez l'image du conteneur de l'interface de ligne de commande (CLI) à l'aide de la commande podman load si elle a été téléchargée à partir de MHS.

  2. Créez un fichier (par exemple, env.list) contenant une liste de variables d'environnement qui doivent être mises à la disposition du conteneur CLI lors d'une analyse. Voici quelques-unes des informations nécessaires :
    AS_INSTALL_MODE=standalone
    AS_LICENSE_URL=<license server url>
    Une liste complète des paramètres est disponible ici.

Lancez une analyse statique à partir de l'image du conteneur

Lancez l'examen de l'une des deux manières suivantes :

Lancer un examen à l'aide d'une image de conteneur à partir de HCL Harbor

Exécutez l'analyse à l'aide d'une commande shell Linux ou du plugin Podman Linux :
  • Linux
    Incorporez la commande shell suivante dans un pipeline Jenkins pour analyser l'application SampleApp. Notez que /usr/user1 sur l'hôte/agent Jenkins est mappé à cvol dans le conteneur. Ajustez la chaîne de version en fonction de la version souhaitée du conteneur CLI.
    sh "podman run --rm --volume /usr/user1:/cvol --env-file /cvol/SampleApp/ env.list hclcr.io/appscan/appscan-src-cli:10.10.0 script /cvol/SampleApp/SampleApp.script
  • Plugin Podman Jenkins
    Incorporez le plugin API Podman Jenkins suivant dans un pipeline Jenkins pour examiner l'application SampleApp. Notez que /usr/user1 sur l'hôte/agent Jenkins est mappé à cvol dans le conteneur. Ajustez la chaîne de version en fonction de la version souhaitée du conteneur CLI.
    podman.image('hclcr.io/appscan/appscan-src-cli:10.10.0').run('--name container-SampleApp --rm –-volume /usr/user1:/cvol --env-file /cvol/SampleApp/env.list script /cvol/SampleApp/SampleApp.script')
    
    sh "podman logs --follow container-SampleApp"

Lancez une analyse à l'aide de l'image du conteneur de Portail My HCLSoftware portal

L'image de conteneur CLI AppScan® Source est disponible dans Portail My HCLSoftware portal au format d'archive (tar.gz). L'image du conteneur doit être chargée avant d'être utilisée pour l'examen.
  1. Téléchargez l'image du conteneur sur l'hôte/agent Jenkins. Par exemple, /appscansrc/appscan-src-cli-10.10.0.tar.gz.

    L'image du conteneur doit être chargée avant utilisation.

  2. Exécutez l'analyse à l'aide d'une commande shell Linux ou du plugin Podman Linux :
    • Linux
      Incorporez la commande shell suivante dans un pipeline Jenkins pour analyser l'application SampleApp. Notez que /usr/user1 sur l'hôte/agent Jenkins est mappé à cvol dans le conteneur. Ajustez la chaîne de version en fonction de la version souhaitée du conteneur CLI.
      podman load -i /appscansrc/appscan-src-cli-10.10.0.tar.gz
      
      sh "podman run --rm --env-file /cvol/SampleApp/env.list --volume /usr/user1:/cvol appscansrc/appscan-src-cli:10.10.0 script /cvol/SampleApp/cli.script"
    • Plugin Podman Jenkins
      Incorporez le plugin API Podman Jenkins suivant dans un pipeline Jenkins pour examiner l'application SampleApp. Notez que /usr/user1 sur l'hôte/agent Jenkins est mappé à cvol dans le conteneur. Ajustez la chaîne de version en fonction de la version souhaitée du conteneur CLI.
      podman.image(‘appscan-src-cli:10.10.0').run('--name container-SampleApp --rm –-volume /usr/user1:/cvol --env-file /cvol/SampleApp/env.list script /cvol/SampleApp/SampleApp.script')
      
      sh "podman logs --follow container-SampleApp"
Remarque : A partir de la version 10.3.0, AppScan® Source prend en charge la conteneurisation à l'aide de Podman. Docker n'étant pas pris en charge dans Red Hat Enterprise Linux 8 et 9, utilisez Podman si votre hôte exécute RHEL 8 ou 9. Podman prend en charge toutes les principales commandes Docker. Remplacez Docker par Podman dans les exemples de cette rubrique pour créer des conteneurs et effectuer des examens dans l'environnement Podman.