CI/CD reference architecture: System integration and discovery test environments
The following reference architecture shows systems integration and discovery environments created by a Jenkins server. Every day, Jenkins uses the Skytap plugin to create new systems integration environments based on a saved Skytap template. These environments are then configured by a configuration management tool to mirror the production environment.
The environments can be used for automated system tests, or they can be shared with QA users for exploratory testing. 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 can be included in a larger CI/CD pipeline.
Skytap features used
A systems integration environment is saved as a golden template. The template contains the environment network settings, VM settings, and basic guest OS settings. 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.
Skytap Cloud plugin for Jenkins
The Jenkins server creates and manages test environments using Jenkins build steps included with the Skytap Cloud plugin. For example, the build process includes steps to Create environment from template, Change environment state, and Delete environment.
Puppet (configuration management)
After an environment is created from a template, each VM is fully configured using configuration management software (for example, Puppet). Configuration management ensures each test environment mirrors the production environment.
Complex networking within the environment
The systems integration environments contain complex networking that mirrors production, including multiple networks (DMZ network, backend network, etc.) and network VMs (load balancers, firewalls, etc.).
VPN 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.
Sharing portals provide customizable, URL-based access to Skytap environments for remote QA team members.