!!! info "Pipelines are optional" Every test in this framework can be run standalone from a PowerShell terminal. CI/CD pipelines are an optional addition for teams that want to automate, schedule, or integrate load testing into their deployment workflows.
The framework includes pipeline definitions for GitHub Actions (primary), Azure DevOps, and GitLab CI. These pipelines call the same scripts you would run manually — they are not a separate system.
| Use Case | Standalone | CI/CD |
|---|---|---|
| One-off test run from your workstation | ✅ | |
| Scheduled nightly performance regression | ✅ | |
| Triggered by infrastructure changes (PR) | ✅ | |
| Automated reporting after every test | ✅ | |
| Learning or debugging the framework | ✅ | |
| Production validation before go-live | ✅ | ✅ |
Every pipeline action can be run manually from a PowerShell terminal. See each tool's page for exact commands:
- VMFleet — Run This Test
- fio — Run This Test
- iPerf3 — Run This Test
- HammerDB — Run This Test
- stress-ng — Run This Test
Or use the common utility scripts directly:
# Validate your configuration
.\common\helpers\Initialize-Environment.ps1 -ValidateOnly
# Run Pester unit tests
Invoke-Pester tests/ -Output DetailedIf you choose to automate, the following workflows are available:
Manual trigger (workflow_dispatch) with configurable inputs:
- Cluster configuration file path
- Workload profiles to execute
- Credential source (Key Vault or GitHub Secrets)
- Whether to generate reports
- Whether to cleanup after completion
Requires a self-hosted runner with network access to the Azure Local cluster.
Runs Pester unit tests for all core PowerShell modules on every pull request.
Triggers on changes to config/. Validates variables.yml against the JSON Schema and verifies solution config generation.
Triggers on push to main and pull requests. Builds MkDocs HTML documentation and publishes to GitHub Pages.
Runs PSScriptAnalyzer for PowerShell, yamllint for YAML files.
Pipeline definitions in .azuredevops/ mirror the GitHub Actions workflows, adapted for Azure DevOps syntax. Use Azure DevOps Service Connections for credential management.
Pipeline definition in .gitlab/.gitlab-ci.yml provides the same workflow stages, adapted for GitLab CI syntax.
The VMFleet and tool-specific pipelines require a self-hosted runner on the cluster management network:
- Install GitHub Actions runner on a Windows management station
- Register with the repository as a self-hosted runner
- Tag with labels:
self-hosted,windows,hci-management - Ensure PowerShell 7.2+ and required modules are installed
- Configure WinRM access to cluster nodes
See Runner Setup for detailed instructions.