<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Grégoire Willmann</title>
    <description>The latest articles on DEV Community by Grégoire Willmann (@gwllmnn).</description>
    <link>https://dev.to/gwllmnn</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F106982%2F5b07b2f4-9f67-412f-b4ed-5b4ed66e782d.jpg</url>
      <title>DEV Community: Grégoire Willmann</title>
      <link>https://dev.to/gwllmnn</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gwllmnn"/>
    <language>en</language>
    <item>
      <title>Dependencies Check with Jenkins</title>
      <dc:creator>Grégoire Willmann</dc:creator>
      <pubDate>Mon, 15 Jul 2019 08:11:18 +0000</pubDate>
      <link>https://dev.to/kinoba/dependencies-check-with-jenkins-5537</link>
      <guid>https://dev.to/kinoba/dependencies-check-with-jenkins-5537</guid>
      <description>&lt;p&gt;The wonderful &lt;a href="https://wiki.jenkins.io/display/JENKINS/OWASP+Dependency-Check+Plugin" rel="noopener noreferrer"&gt;OWASP Dependency-Check Jenkins&lt;/a&gt; plugin has recently published an update introducing breaking changes for my pipelines.&lt;br&gt;
So I have written a quick guide on how to upgrade your pipelines to fix those:&lt;/p&gt;

&lt;p&gt;Original article here: &lt;a href="https://medium.com/@Gr3g0ire/dependencies-check-with-jenkins-4e73c451cb34" rel="noopener noreferrer"&gt;https://medium.com/@Gr3g0ire/dependencies-check-with-jenkins-4e73c451cb34&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After upgrading the plugin, create a new Dependency-Check installation in the Global tools configuration of your Jenkins instance:&lt;br&gt;
new installation of Dependency-Check&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fxkve5tuzl7e7y0fi1lpo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fxkve5tuzl7e7y0fi1lpo.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We have a Jenkins job running every day which sole purpose is to update the NVD database.&lt;br&gt;
As it was not a pipeline job we had to reconfigure it from the UI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fzdr5gpy3wsmyvjrc8eac.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fzdr5gpy3wsmyvjrc8eac.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This job runs every day at 4 AM&lt;/p&gt;

&lt;p&gt;Next we had to change all our pipeline script for checking and publishing results of dependencies checks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Checking&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Changed from&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dependencyCheckAnalyzer datadir: ‘/home/jenkins/security/owasp-nvd/’, hintsFile: ‘’, includeCsvReports: false, includeHtmlReports: true, includeJsonReports: true, includeVulnReports: true, isAutoupdateDisabled: true, outdir: ‘build/owasp’, scanpath: ‘’, skipOnScmChange: false, skipOnUpstreamChange: false, suppressionFile: ‘’, zipExtensions: ‘’
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;to&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sh(‘mkdir -p build/owasp’)
dependencycheck additionalArguments: ‘ — project [project_name]— scan /home/jenkins/security/owasp-nvd/ — out build/owasp/dependency-check-report.xml — format XML — noupdate’, odcInstallation: ‘Dependency Checker’
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;publishing results&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Changed from&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dependencyCheckPublisher canComputeNew: false, defaultEncoding: '', healthy: '', pattern: 'build/owasp/dependency-check-report.xml', unHealthy: ''
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;to&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dependencyCheckPublisher pattern: 'build/owasp/dependency-check-report.xml'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>jenkins</category>
      <category>automation</category>
      <category>updates</category>
      <category>breakingchanges</category>
    </item>
    <item>
      <title>How to create a new Jenkins slave</title>
      <dc:creator>Grégoire Willmann</dc:creator>
      <pubDate>Tue, 06 Nov 2018 11:27:52 +0000</pubDate>
      <link>https://dev.to/gwllmnn/how-to-create-a-new-jenkins-slave-519b</link>
      <guid>https://dev.to/gwllmnn/how-to-create-a-new-jenkins-slave-519b</guid>
      <description>

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ec5NynT1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/799/1%2AZmMvZvGsTb1NKCgDaDJFgg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ec5NynT1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/799/1%2AZmMvZvGsTb1NKCgDaDJFgg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So you have your master instance of Jenkins all set up and now you want to let your slave instances of Jenkins work for you?&lt;/p&gt;

&lt;p&gt;Here are a few things to do before being able to use them:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a user jenkins with: adduser jenkins&lt;/li&gt;
&lt;li&gt;Add your master instance ssh public key to the file /home/jenkins/.ssh/authorized_keys
It can be as simple as this command: ssh-copy-id -i ~/.ssh/mykey user@host
&lt;strong&gt;Remember that the master should be able to connect to your slave without any password.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Install java with: apt install default-jre&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;If you plan on using Docker:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Install Docker (&lt;a href="https://docs.docker.com/install/"&gt;https://docs.docker.com/install/&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Make sure docker runs at startup with: systemctl enable docker and add jenkins user to the docker group: user mod -aG docker jenkins&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install docker-compose if you plan on using it also&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xdBHs9eU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/453/1%2AQVFjsW8gyIXeCUJucmK4XA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xdBHs9eU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/453/1%2AQVFjsW8gyIXeCUJucmK4XA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Add a new node to your master instance of Jenkins&lt;/h3&gt;

&lt;p&gt;Go to Jenkins →Manage Jenkins →Manage Nodes →New node and fill in the different fields as below. Adapt it to your needs:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--S3xyOZYW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AejfW074hGirq9ZWSmeEbQQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--S3xyOZYW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AejfW074hGirq9ZWSmeEbQQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Et voila !&lt;/p&gt;

&lt;p&gt;Now in your Jenkinsfile use the agent with the label php for example and admire your new slave working for you :)&lt;/p&gt;


</description>
      <category>devops</category>
      <category>docker</category>
      <category>jenkins</category>
      <category>dockercompose</category>
    </item>
    <item>
      <title>Automatic security tests in Jenkins with OWASP ZAP</title>
      <dc:creator>Grégoire Willmann</dc:creator>
      <pubDate>Wed, 26 Sep 2018 07:51:34 +0000</pubDate>
      <link>https://dev.to/gwllmnn/automatic-security-tests-in-jenkins-with-owasp-zap-2f6b</link>
      <guid>https://dev.to/gwllmnn/automatic-security-tests-in-jenkins-with-owasp-zap-2f6b</guid>
      <description>

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YJBGaquQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/790/1%2A6qCQfcu5ZX7Eq_C1mqOLqA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YJBGaquQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/790/1%2A6qCQfcu5ZX7Eq_C1mqOLqA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project"&gt;OWASP ZAP&lt;/a&gt; is a very popular tool used to find vulnerabilities in your codebase and in your instance/server setup.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PPEsZKJR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/64/1%2AAr8NCL0OVmq0GU6wzzxSQA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PPEsZKJR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/64/1%2AAr8NCL0OVmq0GU6wzzxSQA.png" alt=""&gt;&lt;/a&gt;OWASP ZAP logo&lt;/p&gt;

&lt;p&gt;What it basically does is crawl through your website and then scan for vulnerabilities on all the URLs it found during the crawl.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;session&lt;/strong&gt; is an instance of a test. Inside a session you can have multiple contexts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Contexts&lt;/strong&gt; help ZAP only scan the URLs you want.&lt;/p&gt;

&lt;p&gt;For example if you include directly bootstrap in your pages with:&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;ZAP will inevitably find this URL. And since you most certainly don’t want ZAP to scan &lt;a href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"&gt;https://maxcdn.bootstrapcdn.com&lt;/a&gt; for vulnerabilities, you exclude it of the context.&lt;br&gt;&lt;br&gt;
So you include or exclude URLs from the context based on what you want it to scan.&lt;/p&gt;

&lt;p&gt;Before following this guide, you should probably play the OWASP ZAP client on your computer to &lt;strong&gt;understand the basic concepts&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Brace yourself it’s going to be a long journey to setup the OWASP ZAP Jenkins plugin!&lt;/p&gt;

&lt;h3&gt;Download and install OWASP ZAP on your Jenkins instance&lt;/h3&gt;

&lt;p&gt;Go to &lt;a href="https://github.com/zaproxy/zaproxy/wiki/Downloads"&gt;https://github.com/zaproxy/zaproxy/wiki/Downloads&lt;/a&gt; and download the version of the client for your platform.&lt;/p&gt;

&lt;p&gt;Unzip it and move the folder to /usr/local/bin for example.&lt;/p&gt;

&lt;p&gt;Then set the environment variable ZAPROXY_HOME to the path of your ZAP proxy installation folder:&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vim /etc/environment
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;and paste the following content:&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ZAPROXY\_HOME=/usr/local/bin/ZAP\_2.x.x/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;Install the OWASP ZAP plugin&lt;/h3&gt;

&lt;p&gt;To install the official OWASP ZAP plugin on your Jenkins instance go toManage Jenkins -&amp;gt; Manage Plugins -&amp;gt; Available (it is a tab) -&amp;gt; look for OWASP ZAP.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IjrMvsDg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/574/1%2A1A4Zmuc0rk27mc2SJrp8gg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IjrMvsDg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/574/1%2A1A4Zmuc0rk27mc2SJrp8gg.png" alt=""&gt;&lt;/a&gt;plugin to install&lt;/p&gt;

&lt;p&gt;Install it.&lt;/p&gt;

&lt;p&gt;Configure the plugin by going to Manage Jenkins -&amp;gt; Configure System and filling out the following fields.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hJiRX64k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/885/1%2AW0-GYn-rWI_EHTcRChsYNA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hJiRX64k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/885/1%2AW0-GYn-rWI_EHTcRChsYNA.png" alt=""&gt;&lt;/a&gt;Port 8089 is an example, you can choose the port you want here&lt;/p&gt;

&lt;h3&gt;Create a new Jenkins job&lt;/h3&gt;

&lt;p&gt;Create a new freestyle project and fill in the following fields:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Discard old builds&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--V78Y5mIF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/934/1%2AxlaV6P8g3UTvccOrtmjwnw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--V78Y5mIF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/934/1%2AxlaV6P8g3UTvccOrtmjwnw.png" alt=""&gt;&lt;/a&gt;To make sure our project doesn’t use too much space&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build Trigger (optional)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--60WGMuFY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/934/1%2ASttXjjWEcSNadq9cGLQJ5Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--60WGMuFY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/934/1%2ASttXjjWEcSNadq9cGLQJ5Q.png" alt=""&gt;&lt;/a&gt;To run the job every sunday at 2AM&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add the Execute ZAP build step&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Inside the Execute ZAP build step:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8SrWt_3A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/899/1%2AhbOocOWkKTMZqfbg2Mw0WQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8SrWt_3A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/899/1%2AhbOocOWkKTMZqfbg2Mw0WQ.png" alt=""&gt;&lt;/a&gt;It should reflect the fields values filled in the step where you installed the plugin&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qqzA_sce--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/896/1%2ArM_ePR_RP5dI3ssh23HHmg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qqzA_sce--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/896/1%2ArM_ePR_RP5dI3ssh23HHmg.png" alt=""&gt;&lt;/a&gt;Specifies where the OWASP ZAP bin is installed on our Jenkins instance&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4oQXr4Rl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/887/1%2AkinmgLX05-2oLHsv4NZoDg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4oQXr4Rl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/887/1%2AkinmgLX05-2oLHsv4NZoDg.png" alt=""&gt;&lt;/a&gt;Should be the path to the directory of the Jenkins job you are creating&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MKHIgciz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/901/1%2Agpgt_r0xG2p9lC1jc68Tsg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MKHIgciz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/901/1%2Agpgt_r0xG2p9lC1jc68Tsg.png" alt=""&gt;&lt;/a&gt;Remember when we talked about context? Here you specify which URLs should be included and excluded. Here &lt;a href="http://10.0.40.3"&gt;&lt;/a&gt;&lt;a href="http://10.0.40.3"&gt;http://10.0.40.3&lt;/a&gt; is where I host the website I want to test. The * means that I want ZAP to include in the context all the URLs starting by &lt;a href="http://10.0.40.3"&gt;http://10.0.40.3&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aTo18zmd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/898/1%2AZfdzD883IYrAG19Ujo6pqQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aTo18zmd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/898/1%2AZfdzD883IYrAG19Ujo6pqQ.png" alt=""&gt;&lt;/a&gt;Tell ZAP to first crawl for URLs and then scan the URLs it found&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wf96Y8IX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/900/1%2AWLPR-d8-OEQ8OMsxi9DHFQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wf96Y8IX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/900/1%2AWLPR-d8-OEQ8OMsxi9DHFQ.png" alt=""&gt;&lt;/a&gt;Tell ZAP which reports to generate and where to place them&lt;/p&gt;

&lt;p&gt;Finally go back to the Session Management section which requires more explanation than the other ones:&lt;/p&gt;

&lt;p&gt;If you tick the checkbox Persist Session ZAP will create a new session for you. It is the easiest option to setup but also the least thorough.&lt;/p&gt;

&lt;p&gt;You see if your web application has a login page, ZAP won’t know the credentials to use in order to gain access to the private zone of your web app. So ZAP will only attack the public part of your website and miss a good portion of it.&lt;/p&gt;

&lt;p&gt;To help ZAP know the credentials, what you would have to do is use the GUI client on your computer to generate a ZAP session in which you assign a valid session cookie for example. You would then export and upload the session you created to your new Jenkins Job folder and then tick the Load Session checkbox and select your session in the select list.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GFHCUr5W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/897/1%2A08Jz7vF8gyH55fyrXMe57w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GFHCUr5W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/897/1%2A08Jz7vF8gyH55fyrXMe57w.png" alt=""&gt;&lt;/a&gt;For our basic example we will tick the Persist Session checkbox&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add a Publish HTML reports post-build step&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Jto_4LLB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/928/1%2AeRnZdkHf5dAD_NvJCan7-Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Jto_4LLB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/928/1%2AeRnZdkHf5dAD_NvJCan7-Q.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And that’s it! Either manually build the job or wait for your cron schedule to execute it and you should see the HTML report of ZAP tests in your Jenkins job dashboard.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dS7ux4x0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/179/1%2AUb5D2hgoSsIcR12MtH1KFg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dS7ux4x0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/179/1%2AUb5D2hgoSsIcR12MtH1KFg.png" alt=""&gt;&lt;/a&gt;Click on Vulnerability Report to see the results of the security tests&lt;/p&gt;

&lt;p&gt;Let me know if I missed anything!&lt;/p&gt;


</description>
      <category>devops</category>
      <category>websecuritytesting</category>
      <category>owasp</category>
      <category>zap</category>
    </item>
  </channel>
</rss>
