Skip to content

Integration of FAST with Jenkins

The integration of FAST in CI MODE into the Jenkins workflow is configured via the Jenkinsfile file. More details about the Jenkins workflow configuration are available in the Jenkins official documentation.

Passing FAST Node Token

To securely use the FAST node token, pass its value in the environment variable in your project settings.

Passing Jenkins environment variable

Configured workflow

Further instructions require already configured workflow that corresponds to one of the following points:

Adding the Step of Request Recording

To implement the request recording, apply the following settings to the step of automated application testing:

  1. Add the command running FAST Docker container in the CI_MODE=recording mode with other required variables before the command running automated tests. For example:

    docker run --name fast -d -e WALLARM_API_TOKEN=$WALLARM_API_TOKEN -e CI_MODE=recording -e WALLARM_API_HOST=us1.api.wallarm.com -e ALLOWED_HOSTS=app-test -p 8080:8080 --network my-network --rm wallarm/fast
    
  2. Configure proxying of automated tests via FAST node. For example:

    docker run --rm -d --name selenium -e http_proxy='http://fast:8080' --network my-network selenium/standalone-firefox:latest
    

Docker Network

Before recording requests, make sure the FAST node and tool for automated testing are running on the same network.

Example of the automated testing step with running FAST node in the recording mode
stage('Run autotests with recording FAST node') {
      steps {
         sh label: 'create network', script: 'docker network create my-network'
         sh label: 'run fast with recording', script: 'docker run --rm  --name fast -d -e WALLARM_API_TOKEN=$WALLARM_API_TOKEN -e CI_MODE=recording -e WALLARM_API_HOST=us1.api.wallarm.com -p 8088:8080 --network my-network wallarm/fast'
         sh label: 'run selenium', script: 'docker run --rm -d --name selenium -p 4444:4444 --network my-network -e http_proxy=\'http://fast:8080\' -e https_proxy=\'https://fast:8080\' selenium/standalone-firefox:latest'
         sh label: 'run application', script: 'docker run --rm --name app-test --network my-network -e CAPYBARA_SERVER_HOST=app-test -p 3000:3000 app-test bundle exec rspec spec/features/posts_spec.rb'
         sh label: 'stop selenium', script: 'docker stop selenium'
         sh label: 'stop fast', script: 'docker stop fast'
         sh label: 'remove network', script: 'docker network rm my-network'
      }
   }

An example includes the following steps:

  1. Create the Docker network my-network.
  2. Run the FAST node in the recording mode on the network my-network.
  3. Run the tool for automated testing Selenium with the FAST node as a proxy on the network my-network.
  4. Run the test application and automated tests.
  5. Stop Selenium and FAST node.
  6. Delete the my-network network.

Adding the Step of Security Testing

To implement the security testing, add the corresponding separate step to your workflow following these instructions:

  1. If the test application is not running, add the command to run the application.

  2. Add the command running FAST Docker container in the CI_MODE=testing mode with other required variables after the command running the application.

    Using the recorded set of baseline requests

    If the set of baseline requests was recorded in another pipeline, specify the record ID in the TEST_RECORD_ID variable. Otherwise, the last recorded set will be used.

    Example of the command:

    docker run --name fast -e WALLARM_API_TOKEN=$WALLARM_API_TOKEN -e CI_MODE=testing -e WALLARM_API_HOST=us1.api.wallarm.com -p 8080:8080 -e TEST_RUN_URI=http://app-test:3000 --network my-network --rm wallarm/fast
    

Docker Network

Before security testing, make sure the FAST node and test application are running on the same network.

Example of the security testing step
stage('Run security tests') {
      steps {
         sh label: 'create network', script: 'docker network create my-network'
         sh label: 'start application', script: ' docker run --rm -d --name app-test --network my-network -e CAPYBARA_SERVER_HOST=app-test -p 3000:3000 app-test'
         sh label: 'run fast in testing mode', script: 'docker run --name fast -e WALLARM_API_TOKEN=$WALLARM_API_TOKEN -e CI_MODE="testing" -e WALLARM_API_HOST="us1.api.wallarm.com"  --network my-network -e TEST_RUN_URI="http://app-test:3000" --rm wallarm/fast'
         sh label: 'stop application', script: ' docker stop app-test '
        sh label: 'remove network', script: ' docker network rm my-network '
      }
   }

An example includes the following steps:

  1. Create the Docker network my-network.
  2. Run the test application on the my-network network.
  3. Run the FAST node in the testing mode on the network my-network. The TEST_RECORD_ID variable is omitted since the set of baseline requests was created in the current pipeline and is the last recorded. The FAST node will be stopped automatically when testing is finished.
  4. Stop the test application.
  5. Delete the my-network network.

Getting the Result of Testing

The result of security testing will be displayed on the Jenkins interface.

The result of running FAST node in testing mode

More Examples

You can find examples of integrating FAST to the Jenkins workflow on our GitHub.

Further questions

If you have questions related to FAST integration, please contact us.