Fix build and code structure improvements. New but essential UI functionality. CI improvements. Documentation improvements. AI module improvements.
This commit is contained in:
147
devops/ci-local/.env.local.sample
Normal file
147
devops/ci-local/.env.local.sample
Normal file
@@ -0,0 +1,147 @@
|
||||
# =============================================================================
|
||||
# LOCAL CI TESTING ENVIRONMENT VARIABLES
|
||||
# =============================================================================
|
||||
# Copy this file to .env.local and customize for your local environment.
|
||||
# The .env.local file is gitignored and should NOT be committed.
|
||||
#
|
||||
# Usage:
|
||||
# cp devops/ci-local/.env.local.sample devops/ci-local/.env.local
|
||||
# # Edit .env.local with your values
|
||||
#
|
||||
# =============================================================================
|
||||
|
||||
# =============================================================================
|
||||
# DATABASE CONFIGURATION
|
||||
# =============================================================================
|
||||
# These values match docker-compose.ci.yaml defaults
|
||||
# Port 5433 is used to avoid conflicts with development PostgreSQL
|
||||
|
||||
STELLAOPS_TEST_POSTGRES_CONNECTION="Host=localhost;Port=5433;Database=stellaops_test;Username=stellaops_ci;Password=ci_test_password"
|
||||
|
||||
# Alternative connection string format
|
||||
POSTGRES_HOST=localhost
|
||||
POSTGRES_PORT=5433
|
||||
POSTGRES_USER=stellaops_ci
|
||||
POSTGRES_PASSWORD=ci_test_password
|
||||
POSTGRES_DB=stellaops_test
|
||||
|
||||
# =============================================================================
|
||||
# CACHE & MESSAGING
|
||||
# =============================================================================
|
||||
# Valkey (Redis-compatible) - Port 6380 to avoid conflicts
|
||||
VALKEY_CONNECTION_STRING="localhost:6380"
|
||||
VALKEY_HOST=localhost
|
||||
VALKEY_PORT=6380
|
||||
|
||||
# NATS JetStream - Port 4223 to avoid conflicts
|
||||
#NATS_URL="nats://localhost:4223"
|
||||
#NATS_HOST=localhost
|
||||
#NATS_PORT=4223
|
||||
|
||||
# =============================================================================
|
||||
# MOCK CONTAINER REGISTRY
|
||||
# =============================================================================
|
||||
# Local registry for release dry-run testing
|
||||
REGISTRY_HOST=localhost:5001
|
||||
REGISTRY_USERNAME=local
|
||||
REGISTRY_PASSWORD=local
|
||||
|
||||
# =============================================================================
|
||||
# MOCK S3 STORAGE (RustFS)
|
||||
# =============================================================================
|
||||
S3_ENDPOINT=http://localhost:9100
|
||||
S3_ACCESS_KEY=rustfsadmin
|
||||
S3_SECRET_KEY=rustfsadmin
|
||||
S3_BUCKET=stellaops-ci
|
||||
|
||||
# =============================================================================
|
||||
# SIGNING CONFIGURATION
|
||||
# =============================================================================
|
||||
# Mock signing keys for local testing - DO NOT USE IN PRODUCTION!
|
||||
# Generate real keys with: cosign generate-key-pair
|
||||
|
||||
# Base64-encoded private key (leave empty to skip signing tests)
|
||||
COSIGN_PRIVATE_KEY_B64=
|
||||
|
||||
# Password for the signing key
|
||||
COSIGN_PASSWORD=local-test-password
|
||||
|
||||
# For keyless signing (requires internet)
|
||||
# COSIGN_EXPERIMENTAL=1
|
||||
|
||||
# =============================================================================
|
||||
# OPTIONAL: REAL SECRETS FOR FULL TESTING
|
||||
# =============================================================================
|
||||
# Uncomment and fill in for full integration testing
|
||||
# These are NOT required for basic local CI runs
|
||||
|
||||
# Gitea API token for registry operations
|
||||
# GITEA_TOKEN=
|
||||
|
||||
# GitHub Container Registry token
|
||||
# GHCR_TOKEN=
|
||||
|
||||
# AI API key for AdvisoryAI tests
|
||||
# AI_API_KEY=
|
||||
|
||||
# Slack webhook for notification tests
|
||||
# SLACK_WEBHOOK=
|
||||
|
||||
# =============================================================================
|
||||
# LOCAL CI CONFIGURATION
|
||||
# =============================================================================
|
||||
|
||||
# Execution mode: docker, native, or act
|
||||
LOCAL_CI_MODE=docker
|
||||
|
||||
# Number of parallel test runners (default: auto-detect CPU count)
|
||||
LOCAL_CI_PARALLEL=4
|
||||
|
||||
# Enable verbose output
|
||||
LOCAL_CI_VERBOSE=false
|
||||
|
||||
# Results output directory (relative to repo root)
|
||||
LOCAL_CI_RESULTS_DIR=out/local-ci
|
||||
|
||||
# =============================================================================
|
||||
# DEPLOYMENT FLAGS
|
||||
# =============================================================================
|
||||
# Always dry-run for local testing
|
||||
DEPLOYMENT_DRY_RUN=true
|
||||
|
||||
# Mock deployment targets
|
||||
DEPLOYMENT_HOST=localhost
|
||||
DEPLOYMENT_USERNAME=testuser
|
||||
DEPLOYMENT_PATH=/tmp/stellaops-deploy
|
||||
|
||||
# =============================================================================
|
||||
# FEATURE FLAGS
|
||||
# =============================================================================
|
||||
|
||||
# Skip tests requiring external network access
|
||||
STELLAOPS_SKIP_NETWORK_TESTS=false
|
||||
|
||||
# Enable offline mode (uses cached/mock data)
|
||||
STELLAOPS_OFFLINE_MODE=false
|
||||
|
||||
# Skip slow benchmark tests
|
||||
SKIP_BENCHMARK_TESTS=true
|
||||
|
||||
# Skip chaos/resilience tests
|
||||
SKIP_CHAOS_TESTS=true
|
||||
|
||||
# =============================================================================
|
||||
# .NET BUILD CONFIGURATION
|
||||
# =============================================================================
|
||||
# These match CI environment exactly
|
||||
|
||||
DOTNET_NOLOGO=1
|
||||
DOTNET_CLI_TELEMETRY_OPTOUT=1
|
||||
DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
|
||||
TZ=UTC
|
||||
|
||||
# Build configuration
|
||||
BUILD_CONFIGURATION=Release
|
||||
|
||||
# Warnings as errors (match CI)
|
||||
DOTNET_WARNASERROR=true
|
||||
48
devops/ci-local/events/pull-request.json
Normal file
48
devops/ci-local/events/pull-request.json
Normal file
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"action": "opened",
|
||||
"number": 999,
|
||||
"pull_request": {
|
||||
"number": 999,
|
||||
"title": "[Local CI] Test Pull Request",
|
||||
"body": "This is a simulated pull request for local CI testing.",
|
||||
"state": "open",
|
||||
"draft": false,
|
||||
"head": {
|
||||
"ref": "feature/local-ci-test",
|
||||
"sha": "0000000000000000000000000000000000000000",
|
||||
"repo": {
|
||||
"name": "git.stella-ops.org",
|
||||
"full_name": "stellaops/git.stella-ops.org"
|
||||
}
|
||||
},
|
||||
"base": {
|
||||
"ref": "main",
|
||||
"sha": "0000000000000000000000000000000000000001",
|
||||
"repo": {
|
||||
"name": "git.stella-ops.org",
|
||||
"full_name": "stellaops/git.stella-ops.org"
|
||||
}
|
||||
},
|
||||
"labels": [],
|
||||
"user": {
|
||||
"login": "local-ci-user",
|
||||
"type": "User"
|
||||
},
|
||||
"created_at": "2025-01-01T00:00:00Z",
|
||||
"updated_at": "2025-01-01T00:00:00Z"
|
||||
},
|
||||
"repository": {
|
||||
"name": "git.stella-ops.org",
|
||||
"full_name": "stellaops/git.stella-ops.org",
|
||||
"default_branch": "main",
|
||||
"private": true,
|
||||
"owner": {
|
||||
"login": "stellaops",
|
||||
"type": "Organization"
|
||||
}
|
||||
},
|
||||
"sender": {
|
||||
"login": "local-ci-user",
|
||||
"type": "User"
|
||||
}
|
||||
}
|
||||
54
devops/ci-local/events/push-main.json
Normal file
54
devops/ci-local/events/push-main.json
Normal file
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"ref": "refs/heads/main",
|
||||
"before": "0000000000000000000000000000000000000001",
|
||||
"after": "0000000000000000000000000000000000000002",
|
||||
"created": false,
|
||||
"deleted": false,
|
||||
"forced": false,
|
||||
"compare": "https://git.stella-ops.org/compare/000001...000002",
|
||||
"commits": [
|
||||
{
|
||||
"id": "0000000000000000000000000000000000000002",
|
||||
"message": "[Local CI] Test commit on main branch",
|
||||
"timestamp": "2025-01-01T00:00:00Z",
|
||||
"author": {
|
||||
"name": "Local CI User",
|
||||
"email": "local-ci@stella-ops.org"
|
||||
},
|
||||
"committer": {
|
||||
"name": "Local CI User",
|
||||
"email": "local-ci@stella-ops.org"
|
||||
},
|
||||
"added": [],
|
||||
"removed": [],
|
||||
"modified": ["src/Scanner/StellaOps.Scanner.Core/Scanner.cs"]
|
||||
}
|
||||
],
|
||||
"head_commit": {
|
||||
"id": "0000000000000000000000000000000000000002",
|
||||
"message": "[Local CI] Test commit on main branch",
|
||||
"timestamp": "2025-01-01T00:00:00Z",
|
||||
"author": {
|
||||
"name": "Local CI User",
|
||||
"email": "local-ci@stella-ops.org"
|
||||
}
|
||||
},
|
||||
"repository": {
|
||||
"name": "git.stella-ops.org",
|
||||
"full_name": "stellaops/git.stella-ops.org",
|
||||
"default_branch": "main",
|
||||
"private": true,
|
||||
"owner": {
|
||||
"login": "stellaops",
|
||||
"type": "Organization"
|
||||
}
|
||||
},
|
||||
"pusher": {
|
||||
"name": "local-ci-user",
|
||||
"email": "local-ci@stella-ops.org"
|
||||
},
|
||||
"sender": {
|
||||
"login": "local-ci-user",
|
||||
"type": "User"
|
||||
}
|
||||
}
|
||||
21
devops/ci-local/events/release-tag.json
Normal file
21
devops/ci-local/events/release-tag.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"ref": "refs/tags/suite-2026.04",
|
||||
"ref_type": "tag",
|
||||
"master_branch": "main",
|
||||
"description": "StellaOps Suite Release 2026.04",
|
||||
"pusher_type": "user",
|
||||
"repository": {
|
||||
"name": "git.stella-ops.org",
|
||||
"full_name": "stellaops/git.stella-ops.org",
|
||||
"default_branch": "main",
|
||||
"private": true,
|
||||
"owner": {
|
||||
"login": "stellaops",
|
||||
"type": "Organization"
|
||||
}
|
||||
},
|
||||
"sender": {
|
||||
"login": "release-manager",
|
||||
"type": "User"
|
||||
}
|
||||
}
|
||||
22
devops/ci-local/events/schedule.json
Normal file
22
devops/ci-local/events/schedule.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"schedule": [
|
||||
{
|
||||
"cron": "0 5 * * *"
|
||||
}
|
||||
],
|
||||
"repository": {
|
||||
"name": "git.stella-ops.org",
|
||||
"full_name": "stellaops/git.stella-ops.org",
|
||||
"default_branch": "main",
|
||||
"private": true,
|
||||
"owner": {
|
||||
"login": "stellaops",
|
||||
"type": "Organization"
|
||||
}
|
||||
},
|
||||
"sender": {
|
||||
"login": "github-actions[bot]",
|
||||
"type": "Bot"
|
||||
},
|
||||
"workflow": ".gitea/workflows/nightly-regression.yml"
|
||||
}
|
||||
31
devops/ci-local/events/workflow-dispatch.json
Normal file
31
devops/ci-local/events/workflow-dispatch.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"action": "workflow_dispatch",
|
||||
"inputs": {
|
||||
"dry_run": "true",
|
||||
"include_performance": "false",
|
||||
"include_benchmark": "false",
|
||||
"include_airgap": "false",
|
||||
"include_chaos": "false",
|
||||
"include_determinism": "false",
|
||||
"include_resilience": "false",
|
||||
"include_observability": "false",
|
||||
"force_deploy": "false",
|
||||
"environment": "local"
|
||||
},
|
||||
"ref": "refs/heads/main",
|
||||
"repository": {
|
||||
"name": "git.stella-ops.org",
|
||||
"full_name": "stellaops/git.stella-ops.org",
|
||||
"default_branch": "main",
|
||||
"private": true,
|
||||
"owner": {
|
||||
"login": "stellaops",
|
||||
"type": "Organization"
|
||||
}
|
||||
},
|
||||
"sender": {
|
||||
"login": "local-ci-user",
|
||||
"type": "User"
|
||||
},
|
||||
"workflow": ".gitea/workflows/test-matrix.yml"
|
||||
}
|
||||
Reference in New Issue
Block a user