mirror of
https://github.com/GoodOlClint/PSProxmoxVE.git
synced 2026-08-09 22:09:24 +00:00
881adb6343
Build workflow validates both net48 and net10.0 targets with code coverage. Unit test workflow runs Pester across 6 OS/PS combinations. Integration test workflow is manual trigger only with secrets check. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
66 lines
2.6 KiB
YAML
66 lines
2.6 KiB
YAML
name: Integration Tests
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
pve_host:
|
|
description: 'Proxmox VE host (overrides secret)'
|
|
required: false
|
|
type: string
|
|
|
|
# Integration tests require a live Proxmox VE node.
|
|
# Configure these repository secrets when a test node is available:
|
|
# PVETEST_HOST - Hostname or IP of the PVE node
|
|
# PVETEST_PORT - API port (default 8006)
|
|
# PVETEST_APITOKEN - API token in USER@REALM!TOKENID=UUID format
|
|
# PVETEST_NODE - Node name to run tests against
|
|
# PVETEST_STORAGE - Storage name for upload tests
|
|
# PVETEST_ISO_PATH - Local path to a test ISO file
|
|
#
|
|
# WARNING: Integration tests create and destroy real VMs, upload files,
|
|
# and modify network configuration. Never run against production.
|
|
|
|
jobs:
|
|
integration:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Setup .NET
|
|
uses: actions/setup-dotnet@v4
|
|
with:
|
|
dotnet-version: '8.0.x'
|
|
- name: Check required secrets
|
|
id: check-secrets
|
|
run: |
|
|
if [ -z "${{ secrets.PVETEST_HOST }}" ] || [ -z "${{ secrets.PVETEST_APITOKEN }}" ]; then
|
|
echo "skip=true" >> $GITHUB_OUTPUT
|
|
echo "::warning::Integration tests skipped - required secrets not configured"
|
|
else
|
|
echo "skip=false" >> $GITHUB_OUTPUT
|
|
fi
|
|
- name: Build module
|
|
if: steps.check-secrets.outputs.skip != 'true'
|
|
run: dotnet publish src/PSProxmoxVE/PSProxmoxVE.csproj --configuration Release --framework net8.0
|
|
- name: Install Pester
|
|
if: steps.check-secrets.outputs.skip != 'true'
|
|
shell: pwsh
|
|
run: Install-Module -Name Pester -MinimumVersion 5.0 -Force -Scope CurrentUser
|
|
- name: Run integration tests
|
|
if: steps.check-secrets.outputs.skip != 'true'
|
|
shell: pwsh
|
|
env:
|
|
PVETEST_HOST: ${{ inputs.pve_host || secrets.PVETEST_HOST }}
|
|
PVETEST_PORT: ${{ secrets.PVETEST_PORT || '8006' }}
|
|
PVETEST_APITOKEN: ${{ secrets.PVETEST_APITOKEN }}
|
|
PVETEST_NODE: ${{ secrets.PVETEST_NODE }}
|
|
PVETEST_STORAGE: ${{ secrets.PVETEST_STORAGE }}
|
|
PVETEST_ISO_PATH: ${{ secrets.PVETEST_ISO_PATH }}
|
|
run: |
|
|
Invoke-Pester tests/PSProxmoxVE.Tests/Integration -Tag Integration -CI -OutputFormat NUnitXml -OutputFile TestResults/integration-results.xml
|
|
- name: Upload test results
|
|
if: always() && steps.check-secrets.outputs.skip != 'true'
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: integration-test-results
|
|
path: TestResults/
|