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

Le conteneur d'interface de ligne de commande (CLI) HCL® AppScan® Source, disponible depuis HCL Harbor et HCL FlexNet Operations Portal (FNO), peut être utilisé pour automatiser les examens d'analyse statique avec GitLab, 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éparez l'application
  2. A propos de l'environnement d'exécution
  3. Lancez l'analyse à partir de l'image du conteneur

Conditions préalables

Avant de commencer, assurez-vous que votre environnement répond aux exigences suivantes :
  • Environnement Jenkins, y compris un ou plusieurs agents/hôtes Linux avec Docker 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 HCL FNO. Avec une licence valide, votre identifiant HCL vous donne 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 à analyser doit être accessible depuis l'hôte Jenkins qui exécute l'analyse.

    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 …
    oa /cvol/SampleApp/SampleAll.ppf
    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 (CLI) AppScan® Source sur l'hôte Jenkins à partir de HCL FNO ou accédez-y directement à partir de HCL Harbor.

    Chargez l'image du conteneur de l'interface de ligne de commande à l'aide de la commande docker load si elle a été téléchargée à partir de HCL FNO.

  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_TYPE=CLS
    AS_LICENSE_SERVER_ID=<specify the license server ID>
    Une liste complète des paramètres est disponible ici.

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

L'analyse peut être lancée de deux manières :
  • A l'aide d'une image de conteneur de HCL Harbor
  • Utilisation de l'image de conteneur de FlexNet Operations (FNO)

Lancez une analyse à l'aide de l'image du conteneur de HCL Harbor

Exécutez l'analyse à l'aide d'une commande shell Linux ou du plugin Docker 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 "docker run --rm --volume /usr/user1:/cvol --env-file /cvol/SampleApp/ env.list hclcr.io/appscan/appscan-src-cli:10.1.0 script /cvol/SampleApp/SampleApp.script
  • Plugin Docker Jenkins
    Incorporez le plugin API Docker Jenkins suivant 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.
    docker.image('hclcr.io/appscan/appscan-src-cli:10.1.0').run('--name container-SampleApp --rm –-volume /usr/user1:/cvol --env-file /cvol/SampleApp/env.list script /cvol/SampleApp/SampleApp.script')
    
    sh "docker logs --follow container-SampleApp"

Lancez une analyse à l'aide de l'image du conteneur de HCL FNO

L'image de conteneur CLI AppScan® Source est disponible en HCL FNO au format d'archive (tar.gz). L'image du conteneur doit être chargée avant d'être utilisée pour l'analyse.
  1. Télécharger l'image du conteneur sur l'hôte/agent Jenkins. Par exemple, /appscansrc/appscan-src-cli-10.1.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 Docker 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.
      docker load -i /appscansrc/appscan-src-cli-10.1.0.tar.gz
      
      sh "docker run --rm --env-file /cvol/SampleApp/env.list --volume /usr/user1:/cvol appscansrc/appscan-src-cli:10.1.0 script /cvol/SampleApp/cli.script"
    • Plugin Docker Jenkins
      Incorporez le plugin API Docker Jenkins suivant 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.
      docker.image(‘appscan-src-cli:10.1.0').run('--name container-SampleApp --rm –-volume /usr/user1:/cvol --env-file /cvol/SampleApp/env.list script /cvol/SampleApp/SampleApp.script')
      
      sh "docker logs --follow container-SampleApp"