CI/CD Pipelines (Optional Automation)¶
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.
When to Use CI/CD¶
| Use Case | Standalone | CI/CD |
|---|---|---|
| One-off test run from your workstation | :white_check_mark: | |
| Scheduled nightly performance regression | :white_check_mark: | |
| Triggered by infrastructure changes (PR) | :white_check_mark: | |
| Automated reporting after every test | :white_check_mark: | |
| Learning or debugging the framework | :white_check_mark: | |
| Production validation before go-live | :white_check_mark: | :white_check_mark: |
Running Tests Without CI/CD¶
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 Detailed
GitHub Actions (Primary)¶
If you choose to automate, the following workflows are available:
VMFleet Pipeline (run-vmfleet.yml)¶
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.
Unit Tests (run-tests.yml)¶
Runs Pester unit tests for all core PowerShell modules on every pull request.
Configuration Validation (validate-config.yml)¶
Triggers on changes to config/. Validates variables.yml against the JSON Schema and verifies solution config generation.
Documentation Build (deploy-docs.yml)¶
Triggers on push to main and pull requests. Builds MkDocs HTML documentation and publishes to GitHub Pages.
Linting (lint.yml)¶
Runs PSScriptAnalyzer for PowerShell, yamllint for YAML files.
Azure DevOps¶
Pipeline definitions in .azuredevops/ mirror the GitHub Actions workflows, adapted for Azure DevOps syntax. Use Azure DevOps Service Connections for credential management.
GitLab CI¶
Pipeline definition in .gitlab/.gitlab-ci.yml provides the same workflow stages, adapted for GitLab CI syntax.
Self-Hosted Runner Requirements¶
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.