auth
免费Authentication and authorization patterns for Rossoctl services
中文简介正在准备中。当前显示原文说明。
TDD workflow with Kind cluster - fast local iteration for Rossoctl development
中文简介正在准备中。当前显示原文说明。
实测评分 未实测
查看安装方法安装前可以查看交给 AI 代理的指令内容。
Test-driven development workflow using a local Kind cluster for fast iteration.
Auto-approved: All operations on Kind clusters (read + write, deploy, test) are auto-approved. Cluster create/destroy is also auto-approved for Kind.
Only one Kind cluster at a time. Before any cluster operation, check:
kind get clusters 2>/dev/null
A Kind cluster is already running (likely from another session). Options: (a) wait for that session to finish, (b) switch to
tdd:cifor CI-only iteration, (c) explicitly destroy the existing cluster first withkind delete cluster --name rossoctl.
To determine ownership: if the current task list or conversation created this cluster, it's yours. Otherwise assume another session owns it.
flowchart TD
START(["/tdd:kind"]) --> GUARD{"kind get clusters"}
GUARD -->|No clusters| CREATE["Create Kind cluster"]:::k8s
GUARD -->|Cluster exists, mine| REUSE["Reuse existing cluster"]:::k8s
GUARD -->|Cluster exists, not mine| STOP([Stop - another session owns it])
CREATE --> CVEGATE["CVE Gate: cve:scan"]:::cve
REUSE --> CVEGATE
CVEGATE -->|Clean| ITER
CVEGATE -->|CVE found| CVE_HOLD["cve:brainstorm"]:::cve
CVE_HOLD -->|Resolved| ITER
ITER{"Iteration level?"}
ITER -->|Level 1| L1["Test only (fastest)"]:::test
ITER -->|Level 2| L2["Reinstall + test"]:::test
ITER -->|Level 3| L3["Full cluster recreate"]:::test
L1 --> CHECK{"Tests pass?"}
L2 --> CHECK
L3 --> CHECK
CHECK -->|Yes| BRANCHCHECK{"Branch verified?"}
CHECK -->|No, minor| FIX["Fix code"]:::tdd
CHECK -->|No, env issue| ITER
BRANCHCHECK -->|Yes| COMMIT["git:commit"]:::git
BRANCHCHECK -->|Wrong branch| WORKTREE["Create worktree"]:::git
WORKTREE --> COMMIT
FIX --> L1
COMMIT --> DONE([Push to CI / tdd:ci])
classDef tdd fill:#4CAF50,stroke:#333,color:white
classDef rca fill:#FF5722,stroke:#333,color:white
classDef git fill:#FF9800,stroke:#333,color:white
classDef k8s fill:#00BCD4,stroke:#333,color:white
classDef hypershift fill:#3F51B5,stroke:#333,color:white
classDef ci fill:#2196F3,stroke:#333,color:white
classDef test fill:#9C27B0,stroke:#333,color:white
classDef cve fill:#D32F2F,stroke:#333,color:white
Follow this diagram as the workflow.
MANDATORY before deploying to Kind cluster.
Invoke cve:scan on the working tree before the first deployment:
cve:scan returns clean → proceed to iteration selectioncve:scan finds HIGH/CRITICAL CVEs → cve:brainstorm activates a CVE hold
This gate runs once per session, not on every iteration.
Match CI exactly: Kind tests must use the same packages as CI to avoid version mismatches. CI uses pip install (gets latest versions), local uses uv (locked versions). Always verify package versions match.
Every command that produces more than ~5 lines of output MUST redirect to a file.
# Session-scoped log directory — use worktree name to avoid collisions
export LOG_DIR="${LOG_DIR:-${WORKSPACE_DIR:-/tmp}/rossoctl-tdd}"
mkdir -p "$LOG_DIR"
NEVER read large log files in the main context. Always use subagents:
Task(subagent_type='Explore') to read the log and extract relevant info# Create Kind cluster and deploy (first time)
./.github/scripts/local-setup/kind-full-test.sh --skip-cluster-destroy > $LOG_DIR/kind-setup.log 2>&1; echo "EXIT:$?"
# Run tests only (cluster already exists)
./.github/scripts/local-setup/kind-full-test.sh --include-test > $LOG_DIR/kind-test.log 2>&1; echo "EXIT:$?"
# Run specific tests
./.github/scripts/local-setup/kind-full-test.sh --include-test --pytest-filter "test_agent" > $LOG_DIR/kind-test.log 2>&1; echo "EXIT:$?"
# Run from worktree
.worktrees/my-feature/.github/scripts/local-setup/kind-full-test.sh --include-test > $LOG_DIR/kind-test.log 2>&1; echo "EXIT:$?"
./.github/scripts/local-setup/kind-full-test.sh --include-test > $LOG_DIR/iter1-test.log 2>&1; echo "EXIT:$?"
./.github/scripts/local-setup/kind-full-test.sh \
--include-uninstall --include-install --include-agents --include-test \
> $LOG_DIR/iter2-reinstall.log 2>&1; echo "EXIT:$?"
./.github/scripts/local-setup/kind-full-test.sh --skip-cluster-destroy > $LOG_DIR/iter3-full.log 2>&1; echo "EXIT:$?"
# Get the CI run logs and find installed versions (redirect to file)
gh run view <run-id> --log > $LOG_DIR/ci-log.txt 2>/dev/null; grep "Successfully installed" $LOG_DIR/ci-log.txt | tr ',' '\n' | sort
# Check local locked version
grep '<package-name>' uv.lock | head -3
# Check what uv uses
uv run pip show <package-name> | grep Version
If CI has a different version than local:
# Option A: Pin in pyproject.toml
# Change: "a2a-sdk>=0.2.5" to "a2a-sdk==0.3.19"
# Option B: Update uv.lock to match CI
uv lock --upgrade-package a2a-sdk
# Run with pip (like CI) instead of uv to reproduce exactly
python -m venv /tmp/ci-test-env
source /tmp/ci-test-env/bin/activate
pip install -e ".[test]"
pytest rossoctl/tests/e2e/common -v --timeout=300
deactivate
| Component | Value |
|---|---|
| LLM | Ollama qwen2.5:3b via dockerhost:11434 |
| Agent URL | http://localhost:8000 (port-forward) |
| Backend URL | http://localhost:8002 (port-forward) |
| Keycloak | http://keycloak.localtest.me:8080 |
| MLflow | Disabled in Kind (dev_values.yaml) |
| Phoenix | http://phoenix.localtest.me:8080 |
| Kiali | http://kiali.localtest.me:8080 |
./.github/scripts/local-setup/show-services.sh # compact
./.github/scripts/local-setup/show-services.sh --verbose # full details
# Check agent pod (redirect to file)
kubectl get pods -n team1 > $LOG_DIR/pods-team1.log 2>&1 && echo "OK" || echo "FAIL"
# Agent logs (redirect to file)
kubectl logs -n team1 -l app.kubernetes.io/name=weather-service --tail=50 > $LOG_DIR/agent.log 2>&1 && echo "OK" || echo "FAIL"
# Check Ollama (small output, OK inline)
curl -s http://localhost:11434/api/tags | jq -r '.models[].name'
# Check port-forward (small output, OK inline)
ps aux | grep port-forward | grep -v grep
Use Task(subagent_type='Explore') to analyze $LOG_DIR/agent.log if issues are found.
curl http://localhost:11434/api/tagspip install (latest versions)uv (locked versions)For Playwright UI tests (login, navigation, agent chat), invoke test:ui.
Tests run against the Vite dev server which proxies /api to localhost:8000 (backend port-forward).
After the TDD workflow completes (CI green and PR approved/merged), invoke session:post to capture session metadata:
This is optional but recommended for tracking development effort.
test:ui - Write and run Playwright UI teststdd:ci - CI-driven TDD (wait for CI results)tdd:hypershift - TDD with HyperShift clusterkind:cluster - Create/destroy Kind clustersk8s:live-debugging - Debug on running clustertest:run-kind - Run tests on Kindtest:review - Review test qualitygit:commit - Commit formatsession:post - Post session analytics to PRcve:scan - CVE scanning gate (pre-deploy)cve:brainstorm - CVE disclosure planning (if CVEs found)还没有评价。欢迎分享你的使用感受。
无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。
还没有评论。来写第一条吧。
Authentication and authorization patterns for Rossoctl services
中文简介正在准备中。当前显示原文说明。
Create confidential OAuth2 clients in Keycloak for server-to-service authentication
中文简介正在准备中。当前显示原文说明。
Configure MLflow with mlflow-oidc-auth plugin for Keycloak OIDC authentication
中文简介正在准备中。当前显示原文说明。
Configure OpenTelemetry Collector with OAuth2 authentication for trace export
中文简介正在准备中。当前显示原文说明。
CI pipeline monitoring, status checks, and PR validation workflows
中文简介正在准备中。当前显示原文说明。
Monitor running CI jobs, wait for completion, create tasks for results
中文简介正在准备中。当前显示原文说明。