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.
- Préparer l'application
- Préparer l'environnement d'exécution
- Lancer l'examen à partir de l'image du conteneur
Prérequis
- 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
- Fichiers
paf
/ppf
- examen de dossier
paf
/ppf
- 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
etppf
se trouvent à la racine de l'application à examiner. - 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 fichierspaf
/ppf
se trouvent au niveau de/usr/user1/SampleApp/SampleApp.paf
et de/usr/user1/SampleApp/SampleApp.ppf
. - 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. - 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 chemincvol
. 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
- 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. - 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. - 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
- 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. - 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 :
Vous trouverez une liste complète des paramètres ici.AS_INSTALL_MODE=standalone AS_LICENSE_TYPE=CLS AS_LICENSE_SERVER_ID=<specify the license server ID>
Lancer un examen d'analyse statique à l'aide de l'image du conteneur
- 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
- LinuxIncorporez 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 DockerInté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
tar.gz
). L'image du conteneur doit être chargée avant d'être utilisée pour l'examen.- 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.
- Exécutez l'examen à l'aide d'une commande shell Linux ou du plug-in Docker Linux :
- LinuxIncorporez 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 DockerInté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"
- Linux