31 Commits

Author SHA1 Message Date
42245ff565
Replace artifact upload with MinIO/S3 upload for test reports
All checks were successful
Code Quality & Security Scan / TFLint (push) Successful in 13s
Code Quality & Security Scan / Terraform Destroy (push) Has been skipped
Code Quality & Security Scan / Tfsec Security Scan (push) Successful in 27s
Code Quality & Security Scan / Checkov Security Scan (push) Successful in 18s
Code Quality & Security Scan / Terraform Tests (push) Successful in 1m4s
Code Quality & Security Scan / SonarQube Trigger (push) Successful in 29s
Code Quality & Security Scan / Terraform Init (push) Successful in 48s
Code Quality & Security Scan / Terraform Apply (push) Successful in 40s
- Replaced actions/upload-artifact with direct MinIO upload
- Uses same pattern as terraform plan upload
- Test reports stored in: terraform-tests/{repository}/{run_number}/
- Enhanced test report with repository, run number, and branch info
- Fixes: Gitea Actions artifact upload not supported

AWS CLI is installed and used to upload reports to S3-compatible MinIO
storage, matching the existing terraform plan upload workflow.
2025-11-09 10:09:57 +01:00
58b600c1d2
Fix output validation tests to work with plan command
Some checks failed
Code Quality & Security Scan / TFLint (push) Successful in 18s
Code Quality & Security Scan / Terraform Destroy (push) Has been skipped
Code Quality & Security Scan / Tfsec Security Scan (push) Successful in 24s
Code Quality & Security Scan / Checkov Security Scan (push) Successful in 38s
Code Quality & Security Scan / Terraform Tests (push) Failing after 1m27s
Code Quality & Security Scan / SonarQube Trigger (push) Has been skipped
Code Quality & Security Scan / Terraform Init (push) Has been skipped
Code Quality & Security Scan / Terraform Apply (push) Has been skipped
- Removed assertions that check resource IDs (not available during plan)
- Kept resource_pool_names output test (based on variables)
- Added verification for expected resource group keys in output
- Fixes: "Unknown condition value" error in verify_outputs test

Resource IDs are only known after apply, so they can't be validated
during plan phase. The remaining tests verify output structure using
variable-based data that is available during plan.
2025-11-09 10:04:20 +01:00
74940bdc29
Use actual Vault credentials for terraform tests
Some checks failed
Code Quality & Security Scan / TFLint (push) Successful in 17s
Code Quality & Security Scan / Terraform Destroy (push) Has been skipped
Code Quality & Security Scan / Tfsec Security Scan (push) Successful in 33s
Code Quality & Security Scan / Checkov Security Scan (push) Successful in 31s
Code Quality & Security Scan / Terraform Tests (push) Failing after 1m29s
Code Quality & Security Scan / SonarQube Trigger (push) Has been skipped
Code Quality & Security Scan / Terraform Init (push) Has been skipped
Code Quality & Security Scan / Terraform Apply (push) Has been skipped
- Changed from mock credentials to actual Vault AppRole secrets
- Added VAULT_ADDR environment variable for Vault connection
- Uses same credentials as terraform-init job (read-only access)
- Fixes: Vault authentication failures in test execution
2025-11-09 09:59:47 +01:00
89dabee068
Fix terraform test job - add init step before testing
Some checks failed
Code Quality & Security Scan / TFLint (push) Successful in 19s
Code Quality & Security Scan / Terraform Destroy (push) Has been skipped
Code Quality & Security Scan / Tfsec Security Scan (push) Successful in 36s
Code Quality & Security Scan / Checkov Security Scan (push) Successful in 36s
Code Quality & Security Scan / Terraform Tests (push) Failing after 40s
Code Quality & Security Scan / SonarQube Trigger (push) Has been skipped
Code Quality & Security Scan / Terraform Init (push) Has been skipped
Code Quality & Security Scan / Terraform Apply (push) Has been skipped
- Added terraform init -backend=false before running tests
- Tests don't require backend configuration
- Ensures providers are downloaded before test execution
- Fixes: terraform test failing due to missing providers
2025-11-09 09:54:19 +01:00
f06308bdfd
fixed Terraform formating
Some checks failed
Code Quality & Security Scan / TFLint (push) Successful in 20s
Code Quality & Security Scan / Terraform Destroy (push) Has been skipped
Code Quality & Security Scan / Tfsec Security Scan (push) Successful in 25s
Code Quality & Security Scan / Checkov Security Scan (push) Successful in 37s
Code Quality & Security Scan / Terraform Tests (push) Failing after 24s
Code Quality & Security Scan / SonarQube Trigger (push) Has been skipped
Code Quality & Security Scan / Terraform Init (push) Has been skipped
Code Quality & Security Scan / Terraform Apply (push) Has been skipped
2025-11-09 09:49:48 +01:00
cfbe6cbdc4
Add comprehensive Terraform testing framework
Some checks failed
Code Quality & Security Scan / TFLint (push) Successful in 24s
Code Quality & Security Scan / Terraform Destroy (push) Has been skipped
Code Quality & Security Scan / Tfsec Security Scan (push) Successful in 29s
Code Quality & Security Scan / Checkov Security Scan (push) Successful in 44s
Code Quality & Security Scan / Terraform Tests (push) Failing after 35s
Code Quality & Security Scan / SonarQube Trigger (push) Has been skipped
Code Quality & Security Scan / Terraform Init (push) Has been skipped
Code Quality & Security Scan / Terraform Apply (push) Has been skipped
- Implemented 21 test cases across 3 test suites:
  * resource_groups.tftest.hcl (7 tests): Default behavior and validation
  * custom_configuration.tftest.hcl (6 tests): Custom configurations
  * variable_validation.tftest.hcl (8 tests): Input validation and edge cases

- Updated CI/CD pipeline (.gitea/workflows/sonarqube.yaml):
  * Added terraform-test job with format check and test execution
  * Generates and uploads test reports (30-day retention)
  * Runs after security scanning, before deployment

- Added comprehensive documentation:
  * TESTING.md: Complete testing guide with best practices
  * TEST_SUMMARY.md: Implementation summary and statistics
  * TESTING_QUICK_START.md: Quick reference for developers
  * TESTING_WORKFLOW.md: Visual workflow diagrams

- Updated existing documentation:
  * README.md: Added testing section with examples
  * CLAUDE.md: Added test commands to workflow

- Test coverage includes:
  * Resource creation and configuration validation
  * Tag category and tag management
  * Variable validation and defaults
  * Custom configurations and overrides
  * Edge cases and error handling
  * Output generation verification

Tests use mock credentials for infrastructure-independent execution.
Requires Terraform >= 1.6.0 for native testing framework.
2025-11-09 00:37:45 +01:00
d6b542e8a8
Added some resource groups
All checks were successful
Code Quality & Security Scan / Tfsec Security Scan (push) Successful in 24s
Code Quality & Security Scan / Checkov Security Scan (push) Successful in 37s
Code Quality & Security Scan / SonarQube Trigger (push) Successful in 42s
Code Quality & Security Scan / TFLint (push) Successful in 19s
Code Quality & Security Scan / Terraform Destroy (push) Has been skipped
Code Quality & Security Scan / Terraform Init (push) Successful in 1m4s
Code Quality & Security Scan / Terraform Apply (push) Successful in 57s
2025-11-05 11:48:22 +01:00
55515aaee8
Remove Taiga user story completion summary
All checks were successful
Code Quality & Security Scan / TFLint (push) Successful in 22s
Code Quality & Security Scan / Checkov Security Scan (push) Successful in 34s
Code Quality & Security Scan / SonarQube Trigger (push) Successful in 44s
Code Quality & Security Scan / Terraform Init (push) Successful in 1m3s
Code Quality & Security Scan / Terraform Destroy (push) Has been skipped
Code Quality & Security Scan / Tfsec Security Scan (push) Successful in 24s
Code Quality & Security Scan / Terraform Apply (push) Successful in 2m14s
The summary document was used to track completion but is no longer needed in the repository
2025-11-02 13:15:56 +01:00
1a52e592e5
Remove non-functional Terraform provider caching
Some checks failed
Code Quality & Security Scan / Terraform Init (push) Has started running
Code Quality & Security Scan / Terraform Apply (push) Has been cancelled
Code Quality & Security Scan / TFLint (push) Successful in 19s
Code Quality & Security Scan / Terraform Destroy (push) Has been skipped
Code Quality & Security Scan / Tfsec Security Scan (push) Successful in 22s
Code Quality & Security Scan / Checkov Security Scan (push) Successful in 34s
Code Quality & Security Scan / SonarQube Trigger (push) Successful in 47s
Issue:
- Cache steps were timing out after ~5 minutes with ETIMEDOUT errors
- Gitea Actions cache server not configured or not responding
- Connection attempts to 172.19.0.3:36175 failing
- Added 8-10 minutes of unnecessary delays to pipeline

Solution:
- Removed 'Cache Terraform Providers' step from terraform-init job
- Removed 'Restore Terraform Cache' step from terraform-apply job
- Terraform init will download providers fresh each time
- No performance degradation since cache was never working

Impact:
- Faster pipeline execution (removes timeout delays)
- No functional changes (cache was never successful)
- Apply job still independent and self-contained

Note: terraform-vsphere-network never had cache steps (copied before caching was added)
2025-11-02 13:13:31 +01:00
656c78ebc8
Add Taiga user story #18 completion summary
All checks were successful
Code Quality & Security Scan / TFLint (push) Successful in 25s
Code Quality & Security Scan / Terraform Destroy (push) Has been skipped
Code Quality & Security Scan / Tfsec Security Scan (push) Successful in 23s
Code Quality & Security Scan / Checkov Security Scan (push) Successful in 36s
Code Quality & Security Scan / SonarQube Trigger (push) Successful in 34s
Code Quality & Security Scan / Terraform Init (push) Successful in 10m13s
Code Quality & Security Scan / Terraform Apply (push) Successful in 10m7s
Comprehensive documentation of all work completed for the Terraform CI/CD pipeline implementation:
- Backend refactoring with CLI flags
- Vault integration and security improvements
- Complete CI/CD pipeline with quality scanning
- Infrastructure deployment (resource pools)
- Code cleanup and optimization
- Performance improvements with caching
- Safe destroy workflow implementation
- Template replication to other repos

This document can be used to update Taiga user story #18 manually.
2025-11-02 12:50:31 +01:00
2af3ccd989
Add Terraform caching and destroy workflow
Some checks failed
Code Quality & Security Scan / TFLint (push) Has been cancelled
Code Quality & Security Scan / Tfsec Security Scan (push) Has been cancelled
Code Quality & Security Scan / Checkov Security Scan (push) Has been cancelled
Code Quality & Security Scan / SonarQube Trigger (push) Has been cancelled
Code Quality & Security Scan / Terraform Init (push) Has been cancelled
Code Quality & Security Scan / Terraform Apply (push) Has been cancelled
Code Quality & Security Scan / Terraform Destroy (push) Has been cancelled
Optimizations:
- Added Terraform provider caching to terraform-init job
- Apply job now reuses cached .terraform directory
- Cache persists across workflow runs (keyed by .terraform.lock.hcl)
- Significantly faster init times on subsequent runs

New terraform-destroy job:
- Only triggered on pull requests with 'destroy' label
- Requires manual approval via 'destroy-approval' environment
- Self-contained with fresh init (no cache for safety)
- Clear warnings and authorization verification
- Three-step process: verify → plan → execute

Security features:
- Destroy only runs on labeled pull requests
- Requires environment protection approval
- Fresh terraform init without cache for verification
- Detailed logging of who/what/when/where
- Cannot be triggered on direct push to master

Usage:
1. Create pull request with proposed destroy changes
2. Add 'destroy' label to the PR
3. Approve via Gitea environment protection
4. Review destroy plan in logs
5. Approve destroy-approval environment to execute

Benefits:
- Faster apply workflow (cached providers)
- Safe destroy process with multiple safeguards
- Clear audit trail for destructive operations
- Self-contained destroy for maximum safety
2025-11-02 12:33:44 +01:00
7f9945461f
Add default values to variables and remove terraform.tfvars
All checks were successful
Code Quality & Security Scan / TFLint (push) Successful in 18s
Code Quality & Security Scan / Tfsec Security Scan (push) Successful in 28s
Code Quality & Security Scan / Checkov Security Scan (push) Successful in 38s
Code Quality & Security Scan / SonarQube Trigger (push) Successful in 33s
Code Quality & Security Scan / Terraform Init (push) Successful in 1m0s
Code Quality & Security Scan / Terraform Apply (push) Successful in 48s
Changes:
- Added default values to datacenter, cluster_name, and environment variables
- Default values match production environment (WBYC-DC01, wbyc-cluster01, prd)
- Updated variable descriptions to note CI/CD secret usage
- terraform.tfvars has been cleaned locally (already in .gitignore)

Benefits:
- No terraform.tfvars file needed for standard deployment
- CI/CD secrets can override defaults when needed
- Cleaner repository without sensitive data
- Variables have sensible defaults for this environment
2025-11-02 02:06:55 +01:00
514136f018
Add Terraform apply job with manual approval
All checks were successful
Code Quality & Security Scan / TFLint (push) Successful in 18s
Code Quality & Security Scan / Tfsec Security Scan (push) Successful in 25s
Code Quality & Security Scan / Checkov Security Scan (push) Successful in 35s
Code Quality & Security Scan / SonarQube Trigger (push) Successful in 33s
Code Quality & Security Scan / Terraform Init (push) Successful in 59s
Code Quality & Security Scan / Terraform Apply (push) Successful in 55s
- New terraform-apply job runs after terraform-init
- Requires manual approval via production environment gate
- Only runs on push to master branch
- Downloads plan file from MinIO
- Applies the exact plan that was reviewed
- Includes all necessary environment variables for Vault and vSphere
2025-11-02 01:45:38 +01:00
66e05bb105
Replace GitHub Actions artifact with MinIO upload
All checks were successful
Code Quality & Security Scan / TFLint (push) Successful in 20s
Code Quality & Security Scan / Tfsec Security Scan (push) Successful in 31s
Code Quality & Security Scan / Checkov Security Scan (push) Successful in 37s
Code Quality & Security Scan / SonarQube Trigger (push) Successful in 37s
Code Quality & Security Scan / Terraform Init (push) Successful in 1m4s
- Removed actions/upload-artifact@v4 (not supported in Gitea)
- Added terraform show output to create human-readable plan text
- Upload both binary plan and text version to MinIO
- Plan stored at: s3://bucket/terraform-plans/repo/run-number/
- Uses existing AWS CLI with S3-compatible endpoint
2025-11-02 01:36:11 +01:00
810e85562c
Add skip_tls_verify to Vault provider
Some checks failed
Code Quality & Security Scan / TFLint (push) Successful in 18s
Code Quality & Security Scan / SonarQube Trigger (push) Successful in 47s
Code Quality & Security Scan / Terraform Init (push) Failing after 32s
Code Quality & Security Scan / Tfsec Security Scan (push) Successful in 31s
Code Quality & Security Scan / Checkov Security Scan (push) Successful in 36s
- Added skip_tls_verify = true to Vault provider configuration
- Fixes x509 certificate verification error for self-signed certificates
- Matches pattern used in vSphere provider (allow_unverified_ssl)
2025-11-02 01:20:43 +01:00
14a22b2561
Add required Terraform variables to plan step
Some checks failed
Code Quality & Security Scan / TFLint (push) Successful in 20s
Code Quality & Security Scan / Tfsec Security Scan (push) Successful in 31s
Code Quality & Security Scan / Checkov Security Scan (push) Successful in 37s
Code Quality & Security Scan / SonarQube Trigger (push) Successful in 38s
Code Quality & Security Scan / Terraform Init (push) Failing after 30s
- Added TF_VAR_datacenter environment variable
- Added TF_VAR_cluster_name environment variable
- Added TF_VAR_environment environment variable
- Prevents interactive prompts during terraform plan
- Required secrets: VSPHERE_DATACENTER, VSPHERE_CLUSTER, ENVIRONMENT
2025-11-02 01:16:27 +01:00
269c9b48d7
Add Terraform plan step with artifact upload
Some checks failed
Code Quality & Security Scan / TFLint (push) Successful in 26s
Code Quality & Security Scan / Tfsec Security Scan (push) Successful in 28s
Code Quality & Security Scan / Checkov Security Scan (push) Successful in 35s
Code Quality & Security Scan / SonarQube Trigger (push) Successful in 38s
Code Quality & Security Scan / Terraform Init (push) Has been cancelled
- Added terraform plan step that outputs plan to tfplan file
- Plan includes all required environment variables for Vault and MinIO
- Plan artifact uploaded with 30-day retention for later apply step
- Plan file can be downloaded and used for terraform apply
2025-11-02 00:48:46 +01:00
72c8be1a56
Add Vault credentials to workflow secrets
Some checks failed
Code Quality & Security Scan / TFLint (push) Successful in 20s
Code Quality & Security Scan / Checkov Security Scan (push) Has been cancelled
Code Quality & Security Scan / Tfsec Security Scan (push) Has been cancelled
Code Quality & Security Scan / SonarQube Trigger (push) Has been cancelled
Code Quality & Security Scan / Terraform Init (push) Has been cancelled
- Added TF_VAR_role_id and TF_VAR_secret_id environment variables
- Added VAULT_ADDR environment variable
- Vault credentials now sourced from Gitea secrets instead of tfvars
- Required secrets: VAULT_ADDR, VAULT_ROLE_ID, VAULT_SECRET_ID
2025-11-02 00:48:17 +01:00
4a2ed7bf4f
Refactor Terraform init to use backend-config flags
All checks were successful
Code Quality & Security Scan / TFLint (push) Successful in 21s
Code Quality & Security Scan / Tfsec Security Scan (push) Successful in 31s
Code Quality & Security Scan / Checkov Security Scan (push) Successful in 35s
Code Quality & Security Scan / SonarQube Trigger (push) Successful in 45s
Code Quality & Security Scan / Terraform Init (push) Successful in 29s
- Updated backend.tf to use partial configuration
- Modified workflow to pass backend settings via -backend-config flags
- Follows Azure-style pattern with environment variables
- Improves flexibility and keeps configuration out of version control
- Required secrets: MINIO_ENDPOINT, MINIO_BUCKET, MINIO_STATE_KEY
2025-11-02 00:32:28 +01:00
4ce4ee9b70
Add Terraform init step with secure MinIO backend
Some checks failed
Code Quality & Security Scan / Tfsec Security Scan (push) Successful in 28s
Code Quality & Security Scan / TFLint (push) Successful in 17s
Code Quality & Security Scan / Checkov Security Scan (push) Successful in 36s
Code Quality & Security Scan / SonarQube Trigger (push) Successful in 38s
Code Quality & Security Scan / Terraform Init (push) Failing after 30s
- Removed hardcoded MinIO credentials from backend.tf
- Added terraform-init job after SonarQube step
- Uses organization secrets for MinIO credentials:
  - MINIO_ACCESS_KEY
  - MINIO_SECRET_KEY
- Credentials passed via AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY env vars
- Initializes Terraform with S3-compatible MinIO backend
2025-11-01 23:59:01 +01:00
0089d060cf
Add Tfsec security scanning before Checkov
All checks were successful
Code Quality & Security Scan / Checkov Security Scan (push) Successful in 36s
Code Quality & Security Scan / TFLint (push) Successful in 19s
Code Quality & Security Scan / Tfsec Security Scan (push) Successful in 1m4s
Code Quality & Security Scan / SonarQube Trigger (push) Successful in 40s
- Added Tfsec job for Terraform security analysis
- Tfsec specializes in detecting security issues in Terraform code
- Pipeline flow: TFLint -> Tfsec -> Checkov -> SonarQube
- Tfsec focuses on cloud security misconfigurations
- Complements Checkov with different security rule sets
2025-11-01 23:10:13 +01:00
3ee45d2603
Fix all TFLint warnings
All checks were successful
Code Quality & Security Scan / TFLint (push) Successful in 18s
Code Quality & Security Scan / Checkov Security Scan (push) Successful in 35s
Code Quality & Security Scan / SonarQube Trigger (push) Successful in 35s
- Added version constraints for vsphere (~> 2.0) and vault (~> 5.0) providers
- Added terraform required_version (>= 1.0)
- Removed unused variables: domain, esxi_hosts, port_groups
- Removed unused data source: vsphere_host
- All TFLint checks now pass successfully
2025-11-01 23:02:03 +01:00
b9a4e24583
Add TFLint configuration with Terraform best practices
Some checks failed
Code Quality & Security Scan / TFLint (push) Failing after 20s
Code Quality & Security Scan / Checkov Security Scan (push) Has been skipped
Code Quality & Security Scan / SonarQube Trigger (push) Has been skipped
- Enabled Terraform recommended preset
- Added rules for documentation, naming conventions, and unused declarations
- Note: No TFLint plugins available for vsphere or vault providers
- Core Terraform ruleset will still catch syntax errors and best practices
2025-11-01 22:59:30 +01:00
f4be04dce1
Add TFLint as first pipeline step
Some checks failed
Code Quality & Security Scan / TFLint (push) Failing after 28s
Code Quality & Security Scan / Checkov Security Scan (push) Has been skipped
Code Quality & Security Scan / SonarQube Trigger (push) Has been skipped
- Added TFLint job to catch Terraform errors and best practices
- TFLint runs before Checkov for early error detection
- Uses latest TFLint version with automatic initialization
- Pipeline flow: TFLint -> Checkov -> SonarQube
2025-11-01 22:56:34 +01:00
d7bc88ced2
Fix Checkov workflow for Gitea compatibility
All checks were successful
Code Quality & Security Scan / Checkov Security Scan (push) Successful in 30s
Code Quality & Security Scan / SonarQube Trigger (push) Successful in 44s
- Removed upload-artifact step (not supported in Gitea)
- Simplified output to CLI format only
- Checkov results will be displayed in pipeline logs
2025-11-01 22:51:19 +01:00
1262a96f93
Add Checkov compliance scanning to CI pipeline
Some checks failed
Code Quality & Security Scan / Checkov Security Scan (push) Failing after 1m58s
Code Quality & Security Scan / SonarQube Trigger (push) Has been skipped
- Added Checkov security scan job that runs before SonarQube
- Configured for Terraform-specific IaC compliance checks
- Outputs results in CLI and SARIF formats
- Uploads scan results as artifacts for review
- SonarQube job now depends on Checkov passing
- Renamed workflow to reflect both quality and security scanning
2025-11-01 22:36:25 +01:00
dcc7aaa091
Update SonarQube action to v6 for security patches
All checks were successful
SonarQube Scan / SonarQube Trigger (push) Successful in 47s
2025-11-01 20:39:05 +01:00
bcb3110e03
Fix SonarQube scan Java version mismatch
Some checks failed
SonarQube Scan / SonarQube Trigger (push) Has been cancelled
- Updated SonarQube action from kitabisa/sonarqube-action@v1.2.0 to sonarsource/sonarqube-scan-action@v4
- Official action uses Java 17, compatible with SonarQube 25.10
- Added sonar-project.properties with Terraform-specific exclusions
- Fixes: java.lang.UnsupportedClassVersionError (class file version 61.0 vs 55.0)
2025-11-01 20:36:15 +01:00
171d476941
Added gitea action pipeline
Some checks failed
SonarQube Scan / SonarQube Trigger (push) Failing after 20s
2025-11-01 19:47:36 +01:00
dd088b4d17
Added gitea action pipeline 2025-11-01 19:45:34 +01:00
560200bb3c
Initial commit: Terraform vSphere resource groups module
- Add vSphere resource pool management
- Configure CPU and memory allocation controls
- Implement tagging system for organization
- Add comprehensive documentation
2025-11-01 06:18:59 +01:00