Configuration de l'automatisation des examens avec Jenkins et des conteneurs

Le conteneur de l'interface de ligne de commande (CLI) HCL®AppScan® Source, disponible depuis HCL Harbor et depuis le portail HCL FlexNet Operations (FNO), 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 d'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

Prérequis

Avant de commencer, assurez-vous que votre environnement répond aux exigences suivantes :
  • Environnement Jenkins, y compris un autre agent/hôte Linux sur lequel Docker est installé.

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

  • Licence valide pour AppScan® Source for Automation et informations relatives au serveur de licences pertinentes.

  • Image de 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 depuis HCL Harbor ou HCL FNO. Avec une licence valide, votre ID HCL accorde l'accès à ces emplacements.

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

    Un script est requis pour l'examen avec le conteneur dans un pipeline Jenkins.

  • Accès au contenu sur l'hôte /l'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 (chemin de mappage sur l'hôte du conteneur vers un chemin dans le conteneur) est utilisé à cette fin lors de l'instanciation d'un examen.

Préparer l'application à examiner

Préparez l'application pour l'examen à l'aide de l'une des options suivantes :
  • Fichiers paf/ppf
  • examen de dossier
Préparer 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 avec AppScan® Source installé.

    Assurez-vous que les fichiers paf et ppf se trouvent à la racine de l'application à examiner.

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

    Par exemple, si l'application est accessible au chemin racine /usr/user1/SampleApp sur l'hôte/agent Jenkins, les fichiers paf/ppf se trouvent au niveau de /usr/user1/SampleApp/SampleApp.paf et de /usr/user1/SampleApp/SampleApp.ppf.

  3. Déterminez le nom du volume tel que le conteneur le voit.
    Par exemple, mappez /usr/user1 sur l'hôte à 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 d'interface de ligne de commande. Par exemple, SampleApp.script dans /usr/user1/SampleApp.
    Pour 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 de dossier :
  1. Assurez-vous que les fichiers d'application sont accessibles à partir de l'hôte/agent Jenkins.

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

  2. Déterminez le nom du volume tel que le conteneur le voit.
    Par exemple, mappez /usr/user1 sur l'hôte à 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 d'interface de ligne de commande. Par exemple, SampleApp.script dans /usr/user1/SampleApp.
    login …
    oa /cvol/SampleApp/SampleAll.ppf
    scan
    …
    logout

Préparer 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 depuis HCL FNO ou accédez directement à depuis HCL Harbor.

    Chargez l'image du conteneur de l'interface de ligne de commande à l'aide de la commande docker load si elle est téléchargée à partir d'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 de l'interface de ligne de commande lors d'un examen. Certaines des informations requises incluent :
    AS_INSTALL_MODE=standalone
    AS_LICENSE_TYPE=CLS
    AS_LICENSE_SERVER_ID=<specify the license server ID>
    Vous trouverez une liste complète des paramètres ici.

Lancer un examen d'analyse statique à l'aide de l'image du conteneur

Lancez l'examen de l'une des deux manières suivantes :
  • utilisation d'une image de conteneur à partir d'HCL Harbor
  • utilisation de l'image de conteneur à partir de FlexNet Operations (FNO)

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

Exécutez l'examen à l'aide d'une commande shell Linux ou du plug-in Docker Linux :
  • Linux
    Incorporez la commande shell suivante dans un pipeline Jenkins pour examiner 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 de l'interface de ligne de commande.
    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
  • Plug-in Jenkins Docker
    Intégrez l'API de plug-in Jenkins Docker suivante dans un pipeline Jenkins pour examiner 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 de l'interface de ligne de commande.
    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"

Lancer un examen à l'aide de l'image du conteneur à partir d'HCL FNO

L'image du conteneur de l'interface de ligne de commande AppScan® Source est disponible dans HCL FNO au format 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.1.0.tar.gz.

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

  2. Exécutez l'examen à l'aide d'une commande shell Linux ou du plug-in Docker Linux :
    • Linux
      Incorporez la commande shell suivante dans un pipeline Jenkins pour examiner 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 de l'interface de ligne de commande.
      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"
    • Plug-in Jenkins Docker
      Intégrez l'API de plug-in Jenkins Docker suivante dans un pipeline Jenkins pour examiner 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 de l'interface de ligne de commande.
      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"