mirror of
https://github.com/replicatedhq/troubleshoot.git
synced 2026-04-15 07:16:34 +00:00
* created roadmap and yaml claude agent
* Update roadmap.md
* feat: Clean advanced analysis implementation - core agents, engine, artifacts
* Remove unrelated files - keep only advanced analysis implementation
* fix: Fix goroutine leak in hosted agent rate limiter
- Added stop channel and stopped flag to RateLimiter struct
- Modified replenishTokens to listen for stop signal and exit cleanly
- Added Stop() method to gracefully shutdown rate limiter
- Added Stop() method to HostedAgent to cleanup rate limiter on shutdown
Fixes cursor bot issue: Rate Limiter Goroutine Leak
* fix: Fix analyzer config and model validation bugs
Bug 1: Analyzer Config Missing File Path
- Added filePath to DeploymentStatus analyzer config in convertAnalyzerToSpec
- Sets namespace-specific path (cluster-resources/deployments/{namespace}.json)
- Falls back to generic path (cluster-resources/deployments.json) if no namespace
- Fixes LocalAgent.analyzeDeploymentStatus backward compatibility
Bug 2: HealthCheck Fails Model Validation
- Changed Ollama model validation from prefix match to exact match
- Prevents false positives where llama2:13b would match request for llama2:7b
- Ensures agent only reports healthy when exact model is available
Both fixes address cursor bot reported issues and maintain backward compatibility.
* fixing lint errors
* fixing lint errors
* adding CLI flags
* fix: resolve linting errors for CI
- Remove unnecessary nil check in host_kernel_configs.go (len() for nil slices is zero)
- Remove unnecessary fmt.Sprintf() calls in ceph.go for static strings
- Apply go fmt formatting fixes
Fixes failing lint CI check
* fix: resolve CI failures in build-test workflow and Ollama tests
1. Fix GitHub Actions workflow logic error:
- Replace problematic contains() expression with explicit job result checks
- Properly handle failure and cancelled states for each job
- Prevents false positive failures in success summary job
2. Fix Ollama agent parseLLMResponse panics:
- Add proper error handling for malformed JSON in LLM responses
- Return error when JSON is found but invalid (instead of silent fallback)
- Add error when no meaningful content can be parsed from response
- Prevents nil pointer dereference in test assertions
Fixes failing build-test/success and build-test/test CI checks
* fix: resolve all CI failures and cursor bot issues
1. Fix disable-ollama flag logic bug:
- Remove disable-ollama from advanced analysis trigger condition
- Prevents unintended advanced analysis mode when no agents registered
- Allows proper fallback to legacy analysis
2. Fix diff test consistency:
- Update test expectations to match function behavior (lines with newlines)
- Ensures consistency between streaming and non-streaming diff paths
3. Fix Ollama agent error handling:
- Add proper error return for malformed JSON in LLM responses
- Add meaningful content validation for markdown parsing
- Prevents nil pointer panics in test assertions
4. Fix analysis engine mock agent:
- Mock agent now processes and returns results for all provided analyzers
- Fixes test expectation mismatch (expected 8 results, got 1)
Resolves all failing CI checks: lint, test, and success workflow logic
---------
Co-authored-by: Noah Campbell <noah.edward.campbell@gmail.com>
164 lines
4.4 KiB
YAML
164 lines
4.4 KiB
YAML
name: build-test
|
|
|
|
on:
|
|
pull_request:
|
|
types: [opened, reopened, synchronize, ready_for_review]
|
|
branches: [v1beta3]
|
|
push:
|
|
branches: [v1beta3]
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
# Detect changes to optimize test execution
|
|
changes:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
go-files: ${{ steps.filter.outputs.go-files }}
|
|
preflight: ${{ steps.filter.outputs.preflight }}
|
|
support-bundle: ${{ steps.filter.outputs.support-bundle }}
|
|
examples: ${{ steps.filter.outputs.examples }}
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- uses: dorny/paths-filter@v3
|
|
id: filter
|
|
with:
|
|
filters: |
|
|
go-files:
|
|
- '**/*.go'
|
|
- 'go.{mod,sum}'
|
|
- 'Makefile'
|
|
preflight:
|
|
- 'cmd/preflight/**'
|
|
- 'pkg/preflight/**'
|
|
support-bundle:
|
|
- 'cmd/troubleshoot/**'
|
|
- 'pkg/supportbundle/**'
|
|
|
|
# Lint
|
|
lint:
|
|
if: needs.changes.outputs.go-files == 'true'
|
|
needs: changes
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- uses: ./.github/actions/setup-go
|
|
|
|
- name: Check go mod tidy
|
|
run: |
|
|
go mod tidy
|
|
git diff --exit-code go.mod go.sum || {
|
|
echo "::error::Please run 'go mod tidy' and commit changes"
|
|
exit 1
|
|
}
|
|
|
|
- name: Format and vet
|
|
run: |
|
|
make fmt
|
|
git diff --exit-code || {
|
|
echo "::error::Please run 'make fmt' and commit changes"
|
|
exit 1
|
|
}
|
|
make vet
|
|
|
|
# Unit and integration tests
|
|
test:
|
|
if: needs.changes.outputs.go-files == 'true'
|
|
needs: [changes, lint]
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 20
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- uses: ./.github/actions/setup-go
|
|
|
|
- name: Setup K3s
|
|
uses: replicatedhq/action-k3s@main
|
|
with:
|
|
version: v1.31.2-k3s1
|
|
|
|
- name: Run tests
|
|
run: make test-integration
|
|
|
|
# Build binaries
|
|
build:
|
|
if: needs.changes.outputs.go-files == 'true'
|
|
needs: [changes, lint]
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- uses: ./.github/actions/setup-go
|
|
- run: make build
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: binaries
|
|
path: bin/
|
|
retention-days: 1
|
|
|
|
# E2E tests
|
|
e2e:
|
|
if: needs.changes.outputs.go-files == 'true' || github.event_name == 'push'
|
|
needs: [changes, build]
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- name: preflight
|
|
target: preflight-e2e-test
|
|
needs-k3s: true
|
|
- name: support-bundle-shell
|
|
target: support-bundle-e2e-test
|
|
needs-k3s: true
|
|
- name: support-bundle-go
|
|
target: support-bundle-e2e-go-test
|
|
needs-k3s: false
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
|
|
- name: Setup K3s
|
|
if: matrix.needs-k3s
|
|
uses: replicatedhq/action-k3s@main
|
|
with:
|
|
version: v1.31.2-k3s1
|
|
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
name: binaries
|
|
path: bin/
|
|
|
|
- run: chmod +x bin/*
|
|
- run: make ${{ matrix.target }}
|
|
|
|
# Success summary
|
|
success:
|
|
if: always()
|
|
needs: [lint, test, build, e2e]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check results
|
|
run: |
|
|
# Check if any required jobs failed
|
|
if [[ "${{ needs.lint.result }}" == "failure" ]] || \
|
|
[[ "${{ needs.test.result }}" == "failure" ]] || \
|
|
[[ "${{ needs.build.result }}" == "failure" ]] || \
|
|
[[ "${{ needs.e2e.result }}" == "failure" ]]; then
|
|
echo "::error::Some jobs failed or were cancelled"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if any required jobs were cancelled
|
|
if [[ "${{ needs.lint.result }}" == "cancelled" ]] || \
|
|
[[ "${{ needs.test.result }}" == "cancelled" ]] || \
|
|
[[ "${{ needs.build.result }}" == "cancelled" ]] || \
|
|
[[ "${{ needs.e2e.result }}" == "cancelled" ]]; then
|
|
echo "::error::Some jobs failed or were cancelled"
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ All tests passed!"
|