CI/CD reference architecture: Functional test environments

The following reference architecture shows functional test environments created by a Jenkins server. Every hour, Jenkins uses the Skytap plugin to create new functional test environments based on a saved Skytap template. A series of functional tests are run, and then the environments are deleted. Functional tests can be run in parallel across multiple environments to speed up the test cycle.

This functional test process can be included in a larger CI/CD pipeline.

workflow 2

Functional test environments created by the Skytap plugin for Jenkins

Skytap features used

aTemplates

A fully-configured functional test environment is saved as a golden template. The template contains the functional test environment network settings, VM settings, and guest OS settings; it even preserves the state of any applications running on each VM guest OS. As new environments are needed, they are rapidly stamped out from the template. Because the environment settings are inherited from the template, each environment is in a controlled, known state; no manual configurations steps are needed.

bSkytap plugin for Jenkins

The Jenkins server creates and manages test environments using Jenkins build steps included with the Skytap plugin. For example, the build process includes steps to Create environment from template, Change environment state, and Delete environment.

cVPN or ICNR networking w/ NAT

The test environments connect to the on-premises network via a NAT-enabled VPN or Private Network Connection. The NAT-enabled VPN automatically assigns an additional, unique IP address to each connected VM. This allows identical copies of an environment to connect to a centralized resource without IP address conflicts.

Alternately, the build resources can be hosted in a Skytap environment that communicates with the functional test environments via NAT-enabled ICNR.